[dpdk-stable] patch 'app/testpmd: fix DCB re-configuration' has been queued to stable release 20.11.2

Xueming Li xuemingl at nvidia.com
Sat Jun 12 01:02:26 CEST 2021


Hi,

FYI, your patch has been queued to stable release 20.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 06/14/21. 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. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.

Queued patches are on a temporary branch at:
https://github.com/steevenlee/dpdk

This queued commit can be viewed at:
https://github.com/steevenlee/dpdk/commit/313bd50dab1ae2870a30e8c683950159a3a4178c

Thanks.

Xueming Li <xuemingl at nvidia.com>

---
>From 313bd50dab1ae2870a30e8c683950159a3a4178c Mon Sep 17 00:00:00 2001
From: Huisong Li <lihuisong at huawei.com>
Date: Wed, 28 Apr 2021 14:40:42 +0800
Subject: [PATCH] app/testpmd: fix DCB re-configuration
Cc: Luca Boccassi <bluca at debian.org>

[ upstream commit 5cbbcbad652848b8ecdf26d1d8bf1ea5c794edda ]

After DCB mode is configured, if we decrease the number of RX and TX
queues, fwd_config_setup() will be called to setup the DCB forwarding
configuration. And forwarding streams are updated based on new queue
numbers in fwd_config_setup(), but the mapping between the TC and
queues obtained by rte_eth_dev_get_dcb_info() is still old queue
numbers (old queue numbers are greater than new queue numbers).
In this case, the segment fault happens. So rte_eth_dev_configure()
should be called again to update the mapping between the TC and
queues before rte_eth_dev_get_dcb_info().

Like:
set nbcore 4
port stop all
port config 0 dcb vt off 4 pfc on
port start all
port stop all
port config all rxq 8
port config all txq 8

Fixes: 900550de04a7 ("app/testpmd: add dcb support")

Signed-off-by: Huisong Li <lihuisong at huawei.com>
Signed-off-by: Lijun Ou <oulijun at huawei.com>
Acked-by: Xiaoyun Li <xiaoyun.li at intel.com>
---
 app/test-pmd/config.c | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c
index fc64fcdb86..1397b31326 100644
--- a/app/test-pmd/config.c
+++ b/app/test-pmd/config.c
@@ -3188,7 +3188,33 @@ dcb_fwd_config_setup(void)
 	uint16_t nb_rx_queue, nb_tx_queue;
 	uint16_t i, j, k, sm_id = 0;
 	uint16_t total_tc_num;
+	struct rte_port *port;
 	uint8_t tc = 0;
+	portid_t pid;
+	int ret;
+
+	/*
+	 * The fwd_config_setup() is called when the port is RTE_PORT_STARTED
+	 * or RTE_PORT_STOPPED.
+	 *
+	 * Re-configure ports to get updated mapping between tc and queue in
+	 * case the queue number of the port is changed. Skip for started ports
+	 * since modifying queue number and calling dev_configure need to stop
+	 * ports first.
+	 */
+	for (pid = 0; pid < nb_fwd_ports; pid++) {
+		if (port_is_started(pid) == 1)
+			continue;
+
+		port = &ports[pid];
+		ret = rte_eth_dev_configure(pid, nb_rxq, nb_txq,
+					    &port->dev_conf);
+		if (ret < 0) {
+			printf("Failed to re-configure port %d, ret = %d.\n",
+				pid, ret);
+			return;
+		}
+	}
 
 	cur_fwd_config.nb_fwd_lcores = (lcoreid_t) nb_fwd_lcores;
 	cur_fwd_config.nb_fwd_ports = nb_fwd_ports;
-- 
2.25.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2021-06-12 06:53:58.000958500 +0800
+++ 0052-app-testpmd-fix-DCB-re-configuration.patch	2021-06-12 06:53:56.250000000 +0800
@@ -1 +1 @@
-From 5cbbcbad652848b8ecdf26d1d8bf1ea5c794edda Mon Sep 17 00:00:00 2001
+From 313bd50dab1ae2870a30e8c683950159a3a4178c Mon Sep 17 00:00:00 2001
@@ -4,0 +5,3 @@
+Cc: Luca Boccassi <bluca at debian.org>
+
+[ upstream commit 5cbbcbad652848b8ecdf26d1d8bf1ea5c794edda ]
@@ -26 +28,0 @@
-Cc: stable at dpdk.org
@@ -36 +38 @@
-index 39c0b80a5b..bbf039de76 100644
+index fc64fcdb86..1397b31326 100644
@@ -39 +41 @@
-@@ -3043,7 +3043,33 @@ dcb_fwd_config_setup(void)
+@@ -3188,7 +3188,33 @@ dcb_fwd_config_setup(void)


More information about the stable mailing list