> -----Original Message-----
> From: Huisong Li <lihuis...@huawei.com>
> Sent: Tuesday, April 27, 2021 21:50
> To: Li, Xiaoyun <xiaoyun...@intel.com>; dev@dpdk.org
> Cc: Yigit, Ferruh <ferruh.yi...@intel.com>
> Subject: Re: [PATCH V2 1/7] app/testpmd: fix forward lcores number when DCB
> test
> 
> 
> 在 2021/4/27 17:20, Li, Xiaoyun 写道:
> >
> >> -----Original Message-----
> >> From: Huisong Li <lihuis...@huawei.com>
> >> Sent: Tuesday, April 20, 2021 15:32
> >> To: dev@dpdk.org
> >> Cc: Yigit, Ferruh <ferruh.yi...@intel.com>; Li, Xiaoyun
> >> <xiaoyun...@intel.com>; linux...@openeuler.org; lihuis...@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.
> Sorry, I will fix it.
> >> 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.
> 
> In the DCB test scenario, each TC is assigned a core, and one core can process
> multiple streams, that is, multiple queues.
> 
> In this scenario, if four TCs are enabled and the total number of Rx/Tx queues
> are set to 16, each TC is responsible for four queues. If we set
> 8 core to start forwarding, and then 8 polling threads will be pulled up. 
> Actually,
> the last four threads are redundant.
> 
> Before changing the number of polling cores, if the number of columns is
> greater than the number of TCs used later.  In the running process of the
> dcb_fwd_config_setup(), the data structure 'fwd_lcores[]'
> corresponding to the last four cores is not reinitialized. As a result, the 
> last four
> threads would use the queue polled by the first four cores.
> 
> It's probably a bit of a twist.  In general, it is conditional that multiple 
> cores
> operate on the same queue. That's why I posted the following steps.
> 
> In different forwarding mode, 'fwd_lcores[]' of all cores may need to be 
> cleared
> before 'fwd_lcores[]' of each forwarding core is initialized.
> What do you think?

Understood. But then you actually don't need to set rxq/txq to 16. Even if it's 
8 queues, each tc is responsible for 2 queues. 8 cores will still cause that 
issue.
Changing queue number will be confusing. Like I didn't read it very carefully 
then I misunderstood what you were trying to explain here.
The example doesn't make your commit log clear but more confusing.

And the code is actually quite straightforward. I think the easy explanation is 
better.

But anyway, if you still want to keep the example, remove setting queue number 
again.

> 
> >> 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.gua...@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: sta...@dpdk.org
> >>
> >> Signed-off-by: Huisong Li <lihuis...@huawei.com>
> >> Signed-off-by: Lijun Ou <ouli...@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
> > .

Reply via email to