-----Original Message----- From: Huisong Li lihuisong@huawei.com Sent: Tuesday, April 20, 2021 15:32 To: dev@dpdk.org Cc: Yigit, Ferruh ferruh.yigit@intel.com; Li, Xiaoyun xiaoyun.li@intel.com; linuxarm@openeuler.org; lihuisong@huawei.com Subject: [PATCH V2 1/7] app/testpmd: fix forward lcores number when DCB test
Currently, 'nb_fwd_lcores' value are both adjusted based on 'nb_fwd_streams' in rss/simple/icmp_echo_fwd_config_setup. But the operation is missing in dcb_fwd_config_setup, which may lead to a bad behavior in which multiple polling threads operate on the same queue.
This patch is OK. But commit log is redundant and confusing. The above is enough to explain what your patch is doing and can even be more simple.
In this case, the device sends and receives packets, causing unexpected results. The procedure is as follows:
I don't understand what you're saying here. The commands you're showing is 8 nbcores dealing with 16 queues. So it's one thread dealing with multiple queues which doesn't have issues at all. Please remove the useless and confusing commands.
1/ run testpmd with "--rxq=8 --txq=8" 2/ port stop all 3/ set nbcore 8 4/ port config 0 dcb vt off 4 pfc on 5/ port config all rxq 16 6/ port config all txq 16 7/ port start all 8/ set fwd mac 9/ start
For the DCB forwarding test, each core is assigned to each traffic class and each core is assigned a multi-stream. Therefore, 'nb_fwd_lcores' value needs to be adjusted based on 'total_tc_num' in all forwarding ports.
Please refer to the RSS fwd config fix patch to write your own commit log. Use simple and easy-understanding words to explain yourself. Below is the reference of RSS.
commit 017d680a91fcf30da14a6d3a2f96d41f6dda3a0f Author: Pablo de Lara pablo.de.lara.guarch@intel.com Date: Mon Jun 27 23:35:19 2016 +0100
app/testpmd: limit number of forwarding cores
Number of forwarding cores must be equal or less than number of forwarding streams, otherwise two cores would try to use a same queue on a port, which is not allowed.
Fixes: 900550de04a7 ("app/testpmd: add dcb support") Fixes: ce8d561418d4 ("app/testpmd: add port configuration settings") Cc: stable@dpdk.org
Signed-off-by: Huisong Li lihuisong@huawei.com Signed-off-by: Lijun Ou oulijun@huawei.com
app/test-pmd/config.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+)
diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c index ccb9bd3..03ee40c 100644 --- a/app/test-pmd/config.c +++ b/app/test-pmd/config.c @@ -2961,6 +2961,21 @@ rss_fwd_config_setup(void) } }
+static uint16_t +get_fwd_port_total_tc_num(void) +{
- struct rte_eth_dcb_info dcb_info;
- uint16_t total_tc_num = 0;
- unsigned int i;
- for (i = 0; i < nb_fwd_ports; i++) {
(void)rte_eth_dev_get_dcb_info(fwd_ports_ids[i], &dcb_info);
total_tc_num += dcb_info.nb_tcs;
- }
- return total_tc_num;
+}
/**
- For the DCB forwarding test, each core is assigned on each traffic class.
@@ -2980,12 +2995,16 @@ dcb_fwd_config_setup(void) lcoreid_t lc_id; uint16_t nb_rx_queue, nb_tx_queue; uint16_t i, j, k, sm_id = 0;
uint16_t total_tc_num; uint8_t tc = 0;
cur_fwd_config.nb_fwd_lcores = (lcoreid_t) nb_fwd_lcores; cur_fwd_config.nb_fwd_ports = nb_fwd_ports; cur_fwd_config.nb_fwd_streams = (streamid_t) (nb_rxq * cur_fwd_config.nb_fwd_ports);
total_tc_num = get_fwd_port_total_tc_num();
if (cur_fwd_config.nb_fwd_lcores > total_tc_num)
cur_fwd_config.nb_fwd_lcores = total_tc_num;
/* reinitialize forwarding streams */ init_fwd_streams();
-- 2.7.4