Update DPDK version from 19.11 to 20.11 and also support hns3 PMD for Kunpeng 920 and Kunpeng 930. Signed-off-by: speech_white <humin29@huawei.com>
76 lines
2.3 KiB
Diff
76 lines
2.3 KiB
Diff
From 4a7456ce2099cd58f1408449520a9d66e6baa81c Mon Sep 17 00:00:00 2001
|
|
From: Huisong Li <lihuisong@huawei.com>
|
|
Date: Wed, 28 Apr 2021 14:40:42 +0800
|
|
Subject: [PATCH 184/189] app/testpmd: fix DCB re-configuration
|
|
|
|
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")
|
|
Cc: stable@dpdk.org
|
|
|
|
Signed-off-by: Huisong Li <lihuisong@huawei.com>
|
|
Signed-off-by: Lijun Ou <oulijun@huawei.com>
|
|
Acked-by: Xiaoyun Li <xiaoyun.li@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 075929c..c3f9431 100644
|
|
--- a/app/test-pmd/config.c
|
|
+++ b/app/test-pmd/config.c
|
|
@@ -3189,7 +3189,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.7.4
|
|
|