[dpdk-dev] [PATCH 3/3] net/i40e: fix inadvertent override of vector RX allowance

Zhang, Qi Z qi.z.zhang at intel.com
Fri May 24 04:39:22 CEST 2019


Hi Meset:

> -----Original Message-----
> From: Ergin, Mesut A
> Sent: Friday, May 24, 2019 2:26 AM
> To: Zhang, Qi Z <qi.z.zhang at intel.com>; Xing, Beilei <beilei.xing at intel.com>
> Cc: dev at dpdk.org
> Subject: RE: [PATCH 3/3] net/i40e: fix inadvertent override of vector RX
> allowance
> 
> Hi Qi,
> 
> > -----Original Message-----
> > From: Zhang, Qi Z
> > Sent: Wednesday, May 22, 2019 5:42 AM
> > To: Ergin, Mesut A <mesut.a.ergin at intel.com>; Xing, Beilei
> > <beilei.xing at intel.com>
> > Cc: dev at dpdk.org
> > Subject: RE: [PATCH 3/3] net/i40e: fix inadvertent override of vector
> > RX allowance
> >
> > Hi Mesut:
> >
> > > -----Original Message-----
> > > From: Ergin, Mesut A
> > > Sent: Thursday, May 16, 2019 12:28 PM
> > > To: Xing, Beilei <beilei.xing at intel.com>; Zhang, Qi Z
> > > <qi.z.zhang at intel.com>
> > > Cc: dev at dpdk.org; Ergin, Mesut A <mesut.a.ergin at intel.com>
> > > Subject: [PATCH 3/3] net/i40e: fix inadvertent override of vector RX
> > > allowance
> > >
> > > When i40e_rx_vec_dev_conf_condition_check_default() determines
> > > whether vector receive functions would be allowed during
> > > initialization phase, it should honor previously recorded	
> > > disallowance during configuration phase, and not override simply because
> it is for the first queue.
> > >
> > > Signed-off-by: Mesut Ali Ergin <mesut.a.ergin at intel.com>
> > > ---
> > >  drivers/net/i40e/i40e_rxtx_vec_common.h | 4 ++++
> > >  1 file changed, 4 insertions(+)
> > >
> > > diff --git a/drivers/net/i40e/i40e_rxtx_vec_common.h
> > > b/drivers/net/i40e/i40e_rxtx_vec_common.h
> > > index 0e6ffa0..f30cab4 100644
> > > --- a/drivers/net/i40e/i40e_rxtx_vec_common.h
> > > +++ b/drivers/net/i40e/i40e_rxtx_vec_common.h
> > > @@ -212,6 +212,10 @@
> > > i40e_rx_vec_dev_conf_condition_check_default(struct rte_eth_dev *dev)
> > >  	if (rxmode->offloads & DEV_RX_OFFLOAD_VLAN_EXTEND)
> > >  		return -1;
> > >
> > > +	/* Should not override if vector was already disallowed */
> >
> > It is possible a device be reconfigured between dev_stop/dev_start,
> > vector mode may fit for the new configure, so the old rx_vec_allowd
> > should be ignored,
> >
> 
> i40e_dev_configure would reset rx_vec_allowed already. Am I missing another
> reconfiguration path?

Look at below scenario,

1. dev_configure (rx_vec_allowed is reset to true)
2. queue_setup (the ring size is not power of 2) 
3. dev_start (vector will not be selected due to ring size, rx_vec_allowed set to false) 
4. dev_stop 
5. queue_setup  (this time, with power of 2 ring size) 
6. dev_start (assume vector path should be selected, and rx_vec_allowed should be overwrite to true, but your patch will prevent it)

Also, I may not get the point of the gap you observed, would you share more detail scenario?

Regards
Qi

> 
> Mesut
> 
> > Regards
> > Qi
> >
> > > +	if (!ad->rx_vec_allowed)
> > > +	return -1;
> > > +
> > >  	/**
> > >  	 * Vector mode is allowed only when number of Rx queue
> > >  	 * descriptor is power of 2.
> > > --
> > > 2.7.4



More information about the dev mailing list