DPDK patches and discussions
 help / color / mirror / Atom feed
From: "Li, Xiaoyun" <xiaoyun.li@intel.com>
To: Lijun Ou <oulijun@huawei.com>, "Yigit, Ferruh" <ferruh.yigit@intel.com>
Cc: "dev@dpdk.org" <dev@dpdk.org>,
	"linuxarm@openeuler.org" <linuxarm@openeuler.org>
Subject: Re: [dpdk-dev] [PATCH 1/3] app/testpmd: fix forwarding configuration when DCB test
Date: Tue, 23 Mar 2021 08:55:45 +0000	[thread overview]
Message-ID: <DM4PR11MB5534A8C78C7ADE41F41ECB4C99649@DM4PR11MB5534.namprd11.prod.outlook.com> (raw)
In-Reply-To: <1614939741-63927-2-git-send-email-oulijun@huawei.com>

Hi

> -----Original Message-----
> From: Lijun Ou <oulijun@huawei.com>
> Sent: Friday, March 5, 2021 18:22
> To: Yigit, Ferruh <ferruh.yigit@intel.com>
> Cc: Li, Xiaoyun <xiaoyun.li@intel.com>; dev@dpdk.org;
> linuxarm@openeuler.org
> Subject: [PATCH 1/3] app/testpmd: fix forwarding configuration when DCB test
> 
> From: Huisong Li <lihuisong@huawei.com>
> 
The commit message is too long and redundant. Please simplify it.

> 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 lack for
> dcb_fwd_config_setup, which may lead to a bad events where multiple polling
> threads operate on the same queue. As a result, various possible exceptions will
> occur. The procedure is as follows:
> 
> startup testpmd app as follows:
> testpmd> port stop all
> testpmd> set nbcore 8
> testpmd> port config 0 dcb vt off 4 pfc on port config all rxq 16 port
> testpmd> config all txq 16 port start all set fwd mac
> Logical Core 1 (socket 0) forwards packets on 4 streams:
> RX P=0/Q=0 (socket 0) -> TX P=0/Q=0 (socket 0) peer=02:00:00:00:00:00 RX
> P=0/Q=1 (socket 0) -> TX P=0/Q=1 (socket 0) peer=02:00:00:00:00:00 RX
> P=0/Q=2 (socket 0) -> TX P=0/Q=2 (socket 0) peer=02:00:00:00:00:00 RX
> P=0/Q=3 (socket 0) -> TX P=0/Q=3 (socket 0) peer=02:00:00:00:00:00 Logical
> Core 2 (socket 0) forwards packets on 4 streams:
> RX P=0/Q=4 (socket 0) -> TX P=0/Q=4 (socket 0) peer=02:00:00:00:00:00 RX
> P=0/Q=5 (socket 0) -> TX P=0/Q=5 (socket 0) peer=02:00:00:00:00:00 RX
> P=0/Q=6 (socket 0) -> TX P=0/Q=6 (socket 0) peer=02:00:00:00:00:00 RX
> P=0/Q=7 (socket 0) -> TX P=0/Q=7 (socket 0) peer=02:00:00:00:00:00 Logical
> Core 3 (socket 0) forwards packets on 4 streams:
> RX P=0/Q=8 (socket 0) -> TX P=0/Q=8 (socket 0) peer=02:00:00:00:00:00 RX
> P=0/Q=9 (socket 0) -> TX P=0/Q=9 (socket 0) peer=02:00:00:00:00:00 RX
> P=0/Q=10 (socket 0) -> TX P=0/Q=10 (socket 0) peer=02:00:00:00:00:00 RX
> P=0/Q=11 (socket 0) -> TX P=0/Q=11 (socket 0) peer=02:00:00:00:00:00 Logical
> Core 4 (socket 0) forwards packets on 4 streams:
> RX P=0/Q=12 (socket 0) -> TX P=0/Q=12 (socket 0) peer=02:00:00:00:00:00 RX
> P=0/Q=13 (socket 0) -> TX P=0/Q=13 (socket 0) peer=02:00:00:00:00:00 RX
> P=0/Q=14 (socket 0) -> TX P=0/Q=14 (socket 0) peer=02:00:00:00:00:00 RX
> P=0/Q=15 (socket 0) -> TX P=0/Q=15 (socket 0) peer=02:00:00:00:00:00 Logical
> Core 5 (socket 0) forwards packets on 1 streams:
> RX P=0/Q=4 (socket 0) -> TX P=0/Q=4 (socket 0) peer=02:00:00:00:00:00 Logical
> Core 6 (socket 0) forwards packets on 1 streams:
> RX P=0/Q=5 (socket 0) -> TX P=0/Q=5 (socket 0) peer=02:00:00:00:00:00 Logical
> Core 7 (socket 0) forwards packets on 1 streams:
> RX P=0/Q=6 (socket 0) -> TX P=0/Q=6 (socket 0) peer=02:00:00:00:00:00 Logical
> Core 8 (socket 0) forwards packets on 1 streams:
> RX P=0/Q=7 (socket 0) -> TX P=0/Q=7 (socket 0) peer=02:00:00:00:00:00
> 
> Notice: number of rxq and txq in running cmdline are greater than used nb_tc.
> 
> For the DCB forwarding test, each core is assigned on each traffic class and each
> core is assigned a multi-stream. Therefore, 'nb_fwd_lcores'
> value can be adjusted based on 'total_tc_num' in all forwarding ports.
> 
> In addition, after operation of port stop/port start, forwarding configuration is
> changed by rss_fwd_config_setup. In "start_port"
> function, dcb_test is set to 1 based on dcb_config. So it also should be cleared
> when dcb_config is 0.
> 
> 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 +++++++++++++++++++  app/test-pmd/testpmd.c |
> 12 +++++++-----
>  2 files changed, 26 insertions(+), 5 deletions(-)
> 
> diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c index
> 576d5ac..c89f8cd 100644
> --- a/app/test-pmd/config.c
> +++ b/app/test-pmd/config.c
> @@ -2864,6 +2864,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;
> +}

It's only 3 lines. Is it really necessary to make it into a function which is not called by anyone else? A comment and the loop are enough.

> +
>  /**
>   * For the DCB forwarding test, each core is assigned on each traffic class.
>   *
> @@ -2883,12 +2898,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 = 0;
>  	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();
> diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c index
> 1a57324..7eb810b 100644
> --- a/app/test-pmd/testpmd.c
> +++ b/app/test-pmd/testpmd.c
> @@ -2707,14 +2707,16 @@ stop_port(portid_t pid)
>  	portid_t peer_pl[RTE_MAX_ETHPORTS];
>  	int peer_pi;
> 
> -	if (dcb_test) {
> -		dcb_test = 0;
> -		dcb_config = 0;
> -	}
> -
>  	if (port_id_is_invalid(pid, ENABLED_WARN))
>  		return;
> 
> +	/*
> +	 * In "start_port" function, dcb_test is set to 1 based on dcb_config.
> +	 * So it should be cleared when dcb_config is 0.
> +	 */
> +	if (dcb_config == 0)
> +		dcb_test = 0;
> +

I don't understand why are you changing this.
dcb_test will only be set when dcb_config is 1 when starting ports. And both dcb_test and dcb_config will be cleared when stopping ports.
So dcb will only affect when you set port dcb and then start port and when stop port dcb will be cleared.

So what's the problem of original codes?

Your change will cause issues that there's no place to set dcb_config as 0. If you config dcb, then it'll be always dcb mode unless restart the whole testpmd.

>  	printf("Stopping ports...\n");
> 
>  	RTE_ETH_FOREACH_DEV(pi) {
> --
> 2.7.4


  reply	other threads:[~2021-03-23  8:55 UTC|newest]

Thread overview: 82+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-05 10:22 [dpdk-dev] [PATCH 0/3] Fixes for testpmd Lijun Ou
2021-03-05 10:22 ` [dpdk-dev] [PATCH 1/3] app/testpmd: fix forwarding configuration when DCB test Lijun Ou
2021-03-23  8:55   ` Li, Xiaoyun [this message]
2021-03-23 14:17     ` oulijun
2021-03-23 14:17     ` oulijun
2021-03-24  1:51       ` Li, Xiaoyun
2021-04-10  1:12       ` Ferruh Yigit
2021-04-10  2:53         ` oulijun
2021-03-23 14:18     ` oulijun
2021-03-24  2:03       ` Li, Xiaoyun
2021-03-24 13:40         ` [dpdk-dev] [Linuxarm] " oulijun
2021-03-25  2:21           ` Li, Xiaoyun
2021-03-27  3:53             ` oulijun
2021-04-10  0:56             ` Ferruh Yigit
2021-04-10  2:58               ` oulijun
2021-04-12  7:52                 ` Ferruh Yigit
2021-04-12 12:20                   ` oulijun
2021-03-05 10:22 ` [dpdk-dev] [PATCH 2/3] app/testpmd: remove forwarding config from parsing Rx and Tx Lijun Ou
2021-03-23  7:50   ` Li, Xiaoyun
2021-03-24  1:00     ` oulijun
2021-03-24  1:44       ` Li, Xiaoyun
2021-03-25  3:03         ` oulijun
2021-03-29  1:53           ` Li, Xiaoyun
2021-04-02  1:44             ` oulijun
2021-04-02  2:33               ` Li, Xiaoyun
2021-04-09  6:09                 ` [dpdk-dev] [Linuxarm] " oulijun
2021-04-09  7:08                   ` Li, Xiaoyun
2021-04-10  3:02                     ` oulijun
2021-04-12 10:35   ` [dpdk-dev] " Ferruh Yigit
2021-04-12 12:20     ` oulijun
2021-03-05 10:22 ` [dpdk-dev] [PATCH 3/3] app/testpmd: use of Rx/Tx in testpmd Lijun Ou
2021-03-23  3:12   ` Li, Xiaoyun
2021-03-23  3:17     ` Li, Xiaoyun
2021-03-23  7:25       ` Andrew Rybchenko
2021-03-23  7:46         ` Tu, Lijuan
2021-03-23  7:51           ` oulijun
2021-03-23  7:58             ` Li, Xiaoyun
2021-03-23 10:42               ` Ferruh Yigit
2021-03-23  7:59             ` Tu, Lijuan
2021-03-20  1:19 ` [dpdk-dev] [PATCH 0/3] Fixes for testpmd Min Hu (Connor)
2021-04-20  7:31 ` [dpdk-dev] [PATCH V2 0/7] modifications about DCB forwarding configuration Huisong Li
2021-04-20  7:32   ` [dpdk-dev] [PATCH V2 1/7] app/testpmd: fix forward lcores number when DCB test Huisong Li
2021-04-27  9:20     ` Li, Xiaoyun
2021-04-27 13:49       ` Huisong Li
2021-04-28  2:13         ` Li, Xiaoyun
2021-04-20  7:32   ` [dpdk-dev] [PATCH V2 2/7] app/testpmd: fix DCB forwarding configuration Huisong Li
2021-04-20  7:32   ` [dpdk-dev] [PATCH V2 3/7] app/testpmd: fix a segment fault when DCB test Huisong Li
2021-04-20  7:32   ` [dpdk-dev] [PATCH V2 4/7] app/testpmd: add check for support of reporting DCB info Huisong Li
2021-04-20  7:32   ` [dpdk-dev] [PATCH V2 5/7] app/testpmd: move position of verifying DCB test Huisong Li
2021-04-20  7:32   ` [dpdk-dev] [PATCH V2 6/7] app/testpmd: add forwarding config in start port Huisong Li
2021-04-20  7:32   ` [dpdk-dev] [PATCH V2 7/7] app/testpmd: remove redundant fwd streams initialization Huisong Li
2021-04-20  7:35 ` [dpdk-dev] [PATCH 0/3] Fixes for testpmd Huisong Li
2021-04-20  9:00 ` [dpdk-dev] [PATCH V3 0/7] modifications about DCB forwarding configuration Huisong Li
2021-04-20  9:01   ` [dpdk-dev] [PATCH V3 1/7] app/testpmd: fix forward lcores number when DCB test Huisong Li
2021-04-27 10:18     ` Li, Xiaoyun
2021-04-20  9:01   ` [dpdk-dev] [PATCH V3 2/7] app/testpmd: fix DCB forwarding configuration Huisong Li
2021-04-27 10:59     ` Li, Xiaoyun
2021-04-27 14:13       ` Huisong Li
2021-04-20  9:01   ` [dpdk-dev] [PATCH V3 3/7] app/testpmd: fix a segment fault when DCB test Huisong Li
2021-04-27 11:19     ` Li, Xiaoyun
2021-04-27 14:10       ` Huisong Li
2021-04-28  2:02         ` Li, Xiaoyun
2021-04-28  2:26           ` Huisong Li
2021-04-20  9:01   ` [dpdk-dev] [PATCH V3 4/7] app/testpmd: add check for support of reporting DCB info Huisong Li
2021-04-27 11:26     ` Li, Xiaoyun
2021-04-20  9:01   ` [dpdk-dev] [PATCH V3 5/7] app/testpmd: move position of verifying DCB test Huisong Li
2021-04-27 11:33     ` Li, Xiaoyun
2021-04-20  9:01   ` [dpdk-dev] [PATCH V3 6/7] app/testpmd: add forwarding config in start port Huisong Li
2021-04-27 11:43     ` Li, Xiaoyun
2021-04-28  2:14       ` Huisong Li
2021-04-20  9:01   ` [dpdk-dev] [PATCH V3 7/7] app/testpmd: remove redundant fwd streams initialization Huisong Li
2021-04-27 11:50     ` Li, Xiaoyun
2021-04-28  6:40 ` [dpdk-dev] [PATCH V4 0/7] modifications about DCB forwarding configuration Huisong Li
2021-04-28  6:40   ` [dpdk-dev] [PATCH V4 1/7] app/testpmd: fix forward lcores number when DCB test Huisong Li
2021-04-28  6:40   ` [dpdk-dev] [PATCH V4 2/7] app/testpmd: fix DCB forwarding configuration Huisong Li
2021-04-28  6:40   ` [dpdk-dev] [PATCH V4 3/7] app/testpmd: fix a segment fault when DCB test Huisong Li
2021-04-28  6:40   ` [dpdk-dev] [PATCH V4 4/7] app/testpmd: add check for support of reporting DCB info Huisong Li
2021-04-28  6:40   ` [dpdk-dev] [PATCH V4 5/7] app/testpmd: move position of verifying DCB test Huisong Li
2021-04-28  6:40   ` [dpdk-dev] [PATCH V4 6/7] app/testpmd: add forwarding configuration when config DCB Huisong Li
2021-04-28  6:40   ` [dpdk-dev] [PATCH V4 7/7] app/testpmd: remove redundant fwd streams initialization Huisong Li
2021-04-28  7:01   ` [dpdk-dev] [PATCH V4 0/7] modifications about DCB forwarding configuration Li, Xiaoyun
2021-04-29 16:13     ` Ferruh Yigit

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=DM4PR11MB5534A8C78C7ADE41F41ECB4C99649@DM4PR11MB5534.namprd11.prod.outlook.com \
    --to=xiaoyun.li@intel.com \
    --cc=dev@dpdk.org \
    --cc=ferruh.yigit@intel.com \
    --cc=linuxarm@openeuler.org \
    --cc=oulijun@huawei.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).