[dpdk-stable] patch 'net/octeontx: fix failures when available ports > queues' has been queued to LTS release 17.11.5

Yongseok Koh yskoh at mellanox.com
Fri Jan 11 11:31:39 CET 2019


Hi,

FYI, your patch has been queued to LTS release 17.11.5

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 01/13/19. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Yongseok

---
>From 99539d24081a4b7f40c00adcdf1aec320ab0acca Mon Sep 17 00:00:00 2001
From: Anoob Joseph <anoob.joseph at caviumnetworks.com>
Date: Wed, 14 Nov 2018 09:22:03 +0000
Subject: [PATCH] net/octeontx: fix failures when available ports > queues

[ upstream commit 7efd5202f7fecc3f995cbf214cdae834e7a7494f ]

When eth_octeontx is initialized before event_octeontx, eth_octeontx
would initiate setting up of the event device with the max ports and
queues available. If number of ports is more than the number of queues,
some ports would be left unused when the ports and queues are mapped
1:1. But even in that case the ports need to be setup, or otherwise it
would lead to a segmentation fault when event device is started.

Fixes: f7be70e5130e ("net/octeontx: add net device probe and remove")

Signed-off-by: Anoob Joseph <anoob.joseph at caviumnetworks.com>
Signed-off-by: Pavan Nikhilesh <pbhagavatula at caviumnetworks.com>
Acked-by: Jerin Jacob <jerin.jacob at caviumnetworks.com>
---
 drivers/net/octeontx/octeontx_ethdev.c | 20 +++++++++++---------
 1 file changed, 11 insertions(+), 9 deletions(-)

diff --git a/drivers/net/octeontx/octeontx_ethdev.c b/drivers/net/octeontx/octeontx_ethdev.c
index 830fc8471..049bc32b4 100644
--- a/drivers/net/octeontx/octeontx_ethdev.c
+++ b/drivers/net/octeontx/octeontx_ethdev.c
@@ -1264,15 +1264,8 @@ octeontx_probe(struct rte_vdev_device *dev)
 		res = -EINVAL;
 		goto parse_error;
 	}
-	if (pnum > qnum) {
-		/*
-		 * We don't poll on event ports
-		 * that do not have any queues assigned.
-		 */
-		pnum = qnum;
-		PMD_INIT_LOG(INFO,
-			"reducing number of active event ports to %d", pnum);
-	}
+
+	/* Enable all queues available */
 	for (i = 0; i < qnum; i++) {
 		res = rte_event_queue_setup(evdev, i, NULL);
 		if (res < 0) {
@@ -1282,6 +1275,7 @@ octeontx_probe(struct rte_vdev_device *dev)
 		}
 	}
 
+	/* Enable all ports available */
 	for (i = 0; i < pnum; i++) {
 		res = rte_event_port_setup(evdev, i, NULL);
 		if (res < 0) {
@@ -1290,6 +1284,14 @@ octeontx_probe(struct rte_vdev_device *dev)
 						i, res);
 			goto parse_error;
 		}
+	}
+
+	/*
+	 * Do 1:1 links for ports & queues. All queues would be mapped to
+	 * one port. If there are more ports than queues, then some ports
+	 * won't be linked to any queue.
+	 */
+	for (i = 0; i < qnum; i++) {
 		/* Link one queue to one event port */
 		qlist = i;
 		res = rte_event_port_link(evdev, i, &qlist, NULL, 1);
-- 
2.11.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-11 02:29:11.769971873 -0800
+++ 0016-net-octeontx-fix-failures-when-available-ports-queue.patch	2019-01-11 02:29:10.817974000 -0800
@@ -1,8 +1,10 @@
-From 7efd5202f7fecc3f995cbf214cdae834e7a7494f Mon Sep 17 00:00:00 2001
+From 99539d24081a4b7f40c00adcdf1aec320ab0acca Mon Sep 17 00:00:00 2001
 From: Anoob Joseph <anoob.joseph at caviumnetworks.com>
 Date: Wed, 14 Nov 2018 09:22:03 +0000
 Subject: [PATCH] net/octeontx: fix failures when available ports > queues
 
+[ upstream commit 7efd5202f7fecc3f995cbf214cdae834e7a7494f ]
+
 When eth_octeontx is initialized before event_octeontx, eth_octeontx
 would initiate setting up of the event device with the max ports and
 queues available. If number of ports is more than the number of queues,
@@ -11,7 +13,6 @@
 would lead to a segmentation fault when event device is started.
 
 Fixes: f7be70e5130e ("net/octeontx: add net device probe and remove")
-Cc: stable at dpdk.org
 
 Signed-off-by: Anoob Joseph <anoob.joseph at caviumnetworks.com>
 Signed-off-by: Pavan Nikhilesh <pbhagavatula at caviumnetworks.com>
@@ -21,10 +22,10 @@
  1 file changed, 11 insertions(+), 9 deletions(-)
 
 diff --git a/drivers/net/octeontx/octeontx_ethdev.c b/drivers/net/octeontx/octeontx_ethdev.c
-index a3063be42..046e12986 100644
+index 830fc8471..049bc32b4 100644
 --- a/drivers/net/octeontx/octeontx_ethdev.c
 +++ b/drivers/net/octeontx/octeontx_ethdev.c
-@@ -1238,15 +1238,8 @@ octeontx_probe(struct rte_vdev_device *dev)
+@@ -1264,15 +1264,8 @@ octeontx_probe(struct rte_vdev_device *dev)
  		res = -EINVAL;
  		goto parse_error;
  	}
@@ -42,7 +43,7 @@
  	for (i = 0; i < qnum; i++) {
  		res = rte_event_queue_setup(evdev, i, NULL);
  		if (res < 0) {
-@@ -1256,6 +1249,7 @@ octeontx_probe(struct rte_vdev_device *dev)
+@@ -1282,6 +1275,7 @@ octeontx_probe(struct rte_vdev_device *dev)
  		}
  	}
  
@@ -50,7 +51,7 @@
  	for (i = 0; i < pnum; i++) {
  		res = rte_event_port_setup(evdev, i, NULL);
  		if (res < 0) {
-@@ -1264,6 +1258,14 @@ octeontx_probe(struct rte_vdev_device *dev)
+@@ -1290,6 +1284,14 @@ octeontx_probe(struct rte_vdev_device *dev)
  						i, res);
  			goto parse_error;
  		}


More information about the stable mailing list