From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id D27DEA0579 for ; Tue, 20 Apr 2021 10:58:16 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 9215041417; Tue, 20 Apr 2021 10:58:16 +0200 (CEST) Received: from szxga05-in.huawei.com (szxga05-in.huawei.com [45.249.212.191]) by mails.dpdk.org (Postfix) with ESMTP id F3CD041319 for ; Tue, 20 Apr 2021 10:58:14 +0200 (CEST) Received: from DGGEMS408-HUB.china.huawei.com (unknown [172.30.72.58]) by szxga05-in.huawei.com (SkyGuard) with ESMTP id 4FPcvj3kQpzNwfs for ; Tue, 20 Apr 2021 16:55:13 +0800 (CST) Received: from localhost.localdomain (10.69.192.56) by DGGEMS408-HUB.china.huawei.com (10.3.19.208) with Microsoft SMTP Server id 14.3.498.0; Tue, 20 Apr 2021 16:58:03 +0800 From: Huisong Li To: CC: , Lijun Ou Date: Tue, 20 Apr 2021 16:58:08 +0800 Message-ID: <1618909094-16274-2-git-send-email-lihuisong@huawei.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1618909094-16274-1-git-send-email-lihuisong@huawei.com> References: <1618909094-16274-1-git-send-email-lihuisong@huawei.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.69.192.56] X-CFilter-Loop: Reflected Subject: [dpdk-stable] [PATCH V3 1/7] app/testpmd: fix forward lcores number when DCB test X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org Sender: "stable" 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. In this case, the device sends and receives packets, causing unexpected results. The procedure is as follows: 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. Fixes: 900550de04a7 ("app/testpmd: add dcb support") Fixes: ce8d561418d4 ("app/testpmd: add port configuration settings") Cc: stable@dpdk.org Signed-off-by: Huisong Li Signed-off-by: Lijun Ou --- 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