[dpdk-dev] net/i40e: fix to ensure vector mode is not used

Message ID 1491922880-18702-1-git-send-email-bernard.iremonger@intel.com (mailing list archive)
State Superseded, archived
Delegated to: Ferruh Yigit
Headers

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

Iremonger, Bernard April 11, 2017, 3:01 p.m. UTC
  In rx vector mode, the QinQ VLAN tag is not stripped.
When hw_vlan_extend is set for QinQ ensure that
rx vector mode is not selected.

Fixes: ca74903b75cf ("net/i40e: extract non-x86 specific code from vector driver")

Signed-off-by: Bernard Iremonger <bernard.iremonger@intel.com>
---
 drivers/net/i40e/i40e_rxtx_vec_common.h | 4 ++++
 1 file changed, 4 insertions(+)
  

Comments

Qi Zhang April 12, 2017, 11:43 a.m. UTC | #1
Hi Bernard:

> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Bernard Iremonger
> Sent: Tuesday, April 11, 2017 11:01 PM
> To: dev@dpdk.org
> Cc: Xing, Beilei <beilei.xing@intel.com>; Lu, Wenzhuo
> <wenzhuo.lu@intel.com>; Zhang, Qi <qi.zhang@intel.com>; Iremonger,
> Bernard <bernard.iremonger@intel.com>
> Subject: [dpdk-dev] [PATCH] net/i40e: fix to ensure vector mode is not used
> 
> In rx vector mode, the QinQ VLAN tag is not stripped.
> When hw_vlan_extend is set for QinQ ensure that rx vector mode is not
> selected.
> 
> Fixes: ca74903b75cf ("net/i40e: extract non-x86 specific code from vector
> driver")

Why fixes? I didn't see above commit change rx callback function if hw_vlan_extend == 1
> 
> Signed-off-by: Bernard Iremonger <bernard.iremonger@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 952fd4b63..692096684 100644
> --- a/drivers/net/i40e/i40e_rxtx_vec_common.h
> +++ b/drivers/net/i40e/i40e_rxtx_vec_common.h
> @@ -234,6 +234,10 @@
> i40e_rx_vec_dev_conf_condition_check_default(struct rte_eth_dev *dev)
>  	if (rxmode->header_split == 1)
>  		return -1;
> 
> +	/* no QinQ support */
> +	if (rxmode->hw_vlan_extend == 1)
> +		return -1;
> +
>  	return 0;
>  #else
>  	RTE_SET_USED(dev);
> --
> 2.11.0
  
Iremonger, Bernard April 12, 2017, 12:30 p.m. UTC | #2
Hi Qi,

> -----Original Message-----
> From: Zhang, Qi Z
> Sent: Wednesday, April 12, 2017 12:43 PM
> To: Iremonger, Bernard <bernard.iremonger@intel.com>; dev@dpdk.org
> Cc: Xing, Beilei <beilei.xing@intel.com>; Lu, Wenzhuo
> <wenzhuo.lu@intel.com>; Zhang, Qi <qi.zhang@intel.com>; Iremonger,
> Bernard <bernard.iremonger@intel.com>
> Subject: RE: [dpdk-dev] [PATCH] net/i40e: fix to ensure vector mode is not
> used
> 
> Hi Bernard:
> 
> > -----Original Message-----
> > From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Bernard
> Iremonger
> > Sent: Tuesday, April 11, 2017 11:01 PM
> > To: dev@dpdk.org
> > Cc: Xing, Beilei <beilei.xing@intel.com>; Lu, Wenzhuo
> > <wenzhuo.lu@intel.com>; Zhang, Qi <qi.zhang@intel.com>; Iremonger,
> > Bernard <bernard.iremonger@intel.com>
> > Subject: [dpdk-dev] [PATCH] net/i40e: fix to ensure vector mode is not
> > used
> >
> > In rx vector mode, the QinQ VLAN tag is not stripped.
> > When hw_vlan_extend is set for QinQ ensure that rx vector mode is not
> > selected.
> >
> > Fixes: ca74903b75cf ("net/i40e: extract non-x86 specific code from
> > vector
> > driver")
> 
> Why fixes? I didn't see above commit change rx callback function if
> hw_vlan_extend == 1

Some of the QinQ functionality was introduced in 17.02, this functionality also has the same issue.
So I added a fixes line.

> >
> > Signed-off-by: Bernard Iremonger <bernard.iremonger@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 952fd4b63..692096684 100644
> > --- a/drivers/net/i40e/i40e_rxtx_vec_common.h
> > +++ b/drivers/net/i40e/i40e_rxtx_vec_common.h
> > @@ -234,6 +234,10 @@
> > i40e_rx_vec_dev_conf_condition_check_default(struct rte_eth_dev
> *dev)
> >  	if (rxmode->header_split == 1)
> >  		return -1;
> >
> > +	/* no QinQ support */
> > +	if (rxmode->hw_vlan_extend == 1)
> > +		return -1;
> > +
> >  	return 0;
> >  #else
> >  	RTE_SET_USED(dev);
> > --
> > 2.11.0

Regards,

Bernard.
  
Qi Zhang April 12, 2017, 12:42 p.m. UTC | #3
> -----Original Message-----
> From: Iremonger, Bernard
> Sent: Wednesday, April 12, 2017 8:30 PM
> To: Zhang, Qi Z <qi.z.zhang@intel.com>; dev@dpdk.org
> Cc: Xing, Beilei <beilei.xing@intel.com>; Lu, Wenzhuo
> <wenzhuo.lu@intel.com>; Zhang, Qi <qi.zhang@intel.com>
> Subject: RE: [dpdk-dev] [PATCH] net/i40e: fix to ensure vector mode is not used
> 
> Hi Qi,
> 
> > -----Original Message-----
> > From: Zhang, Qi Z
> > Sent: Wednesday, April 12, 2017 12:43 PM
> > To: Iremonger, Bernard <bernard.iremonger@intel.com>; dev@dpdk.org
> > Cc: Xing, Beilei <beilei.xing@intel.com>; Lu, Wenzhuo
> > <wenzhuo.lu@intel.com>; Zhang, Qi <qi.zhang@intel.com>; Iremonger,
> > Bernard <bernard.iremonger@intel.com>
> > Subject: RE: [dpdk-dev] [PATCH] net/i40e: fix to ensure vector mode is
> > not used
> >
> > Hi Bernard:
> >
> > > -----Original Message-----
> > > From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Bernard
> > Iremonger
> > > Sent: Tuesday, April 11, 2017 11:01 PM
> > > To: dev@dpdk.org
> > > Cc: Xing, Beilei <beilei.xing@intel.com>; Lu, Wenzhuo
> > > <wenzhuo.lu@intel.com>; Zhang, Qi <qi.zhang@intel.com>; Iremonger,
> > > Bernard <bernard.iremonger@intel.com>
> > > Subject: [dpdk-dev] [PATCH] net/i40e: fix to ensure vector mode is
> > > not used
> > >
> > > In rx vector mode, the QinQ VLAN tag is not stripped.
> > > When hw_vlan_extend is set for QinQ ensure that rx vector mode is
> > > not selected.
> > >
> > > Fixes: ca74903b75cf ("net/i40e: extract non-x86 specific code from
> > > vector
> > > driver")
> >
> > Why fixes? I didn't see above commit change rx callback function if
> > hw_vlan_extend == 1
> 
> Some of the QinQ functionality was introduced in 17.02, this functionality also
> has the same issue.
> So I added a fixes line.

If you think this patch is a fix, you need to find the commit that introduce this issue
The commit ca74903b75cf is not the root cause of the issue, it just move the code from 
I40e_rxtx_vec.c to i40e_rxtx_vec_common.h

Regards
Qi
  
Iremonger, Bernard April 12, 2017, 1:54 p.m. UTC | #4
Hi Qi,

<snip>



> > > -----Original Message-----
> > > From: Zhang, Qi Z
> > > Sent: Wednesday, April 12, 2017 12:43 PM
> > > To: Iremonger, Bernard <bernard.iremonger@intel.com>; dev@dpdk.org
> > > Cc: Xing, Beilei <beilei.xing@intel.com>; Lu, Wenzhuo
> > > <wenzhuo.lu@intel.com>; Zhang, Qi <qi.zhang@intel.com>; Iremonger,
> > > Bernard <bernard.iremonger@intel.com>
> > > Subject: RE: [dpdk-dev] [PATCH] net/i40e: fix to ensure vector mode
> > > is not used
> > >
> > > Hi Bernard:
> > >
> > > > -----Original Message-----
> > > > From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Bernard
> > > Iremonger
> > > > Sent: Tuesday, April 11, 2017 11:01 PM
> > > > To: dev@dpdk.org
> > > > Cc: Xing, Beilei <beilei.xing@intel.com>; Lu, Wenzhuo
> > > > <wenzhuo.lu@intel.com>; Zhang, Qi <qi.zhang@intel.com>;
> Iremonger,
> > > > Bernard <bernard.iremonger@intel.com>
> > > > Subject: [dpdk-dev] [PATCH] net/i40e: fix to ensure vector mode is
> > > > not used
> > > >
> > > > In rx vector mode, the QinQ VLAN tag is not stripped.
> > > > When hw_vlan_extend is set for QinQ ensure that rx vector mode is
> > > > not selected.
> > > >
> > > > Fixes: ca74903b75cf ("net/i40e: extract non-x86 specific code from
> > > > vector
> > > > driver")
> > >
> > > Why fixes? I didn't see above commit change rx callback function if
> > > hw_vlan_extend == 1
> >
> > Some of the QinQ functionality was introduced in 17.02, this
> > functionality also has the same issue.
> > So I added a fixes line.
> 
> If you think this patch is a fix, you need to find the commit that introduce this
> issue The commit ca74903b75cf is not the root cause of the issue, it just move
> the code from I40e_rxtx_vec.c to i40e_rxtx_vec_common.h
> 
> Regards
> Qi
> 
This is a fix to the  i40e_rx_vec_dev_conf_condition_check_default() function.
The issue is caused because there is no check on the   hw_vlan_extend flag at present.
This is the correct fixline for that function.
ca74903b75 (Jianbo Liu   2016-10-14 09:30:00 +0530 221) i40e_rx_vec_dev_conf_condition_check_default(struct rte_eth_dev *dev)

I will send a v2 as I should have added the "Cc: stable@dpdk.org"  line.

Regards,

Bernard.
  
Ferruh Yigit April 12, 2017, 2:07 p.m. UTC | #5
On 4/12/2017 2:54 PM, Iremonger, Bernard wrote:
> Hi Qi,
> 
> <snip>
> 
> 
> 
>>>> -----Original Message-----
>>>> From: Zhang, Qi Z
>>>> Sent: Wednesday, April 12, 2017 12:43 PM
>>>> To: Iremonger, Bernard <bernard.iremonger@intel.com>; dev@dpdk.org
>>>> Cc: Xing, Beilei <beilei.xing@intel.com>; Lu, Wenzhuo
>>>> <wenzhuo.lu@intel.com>; Zhang, Qi <qi.zhang@intel.com>; Iremonger,
>>>> Bernard <bernard.iremonger@intel.com>
>>>> Subject: RE: [dpdk-dev] [PATCH] net/i40e: fix to ensure vector mode
>>>> is not used
>>>>
>>>> Hi Bernard:
>>>>
>>>>> -----Original Message-----
>>>>> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Bernard
>>>> Iremonger
>>>>> Sent: Tuesday, April 11, 2017 11:01 PM
>>>>> To: dev@dpdk.org
>>>>> Cc: Xing, Beilei <beilei.xing@intel.com>; Lu, Wenzhuo
>>>>> <wenzhuo.lu@intel.com>; Zhang, Qi <qi.zhang@intel.com>;
>> Iremonger,
>>>>> Bernard <bernard.iremonger@intel.com>
>>>>> Subject: [dpdk-dev] [PATCH] net/i40e: fix to ensure vector mode is
>>>>> not used
>>>>>
>>>>> In rx vector mode, the QinQ VLAN tag is not stripped.
>>>>> When hw_vlan_extend is set for QinQ ensure that rx vector mode is
>>>>> not selected.
>>>>>
>>>>> Fixes: ca74903b75cf ("net/i40e: extract non-x86 specific code from
>>>>> vector
>>>>> driver")
>>>>
>>>> Why fixes? I didn't see above commit change rx callback function if
>>>> hw_vlan_extend == 1
>>>
>>> Some of the QinQ functionality was introduced in 17.02, this
>>> functionality also has the same issue.
>>> So I added a fixes line.
>>
>> If you think this patch is a fix, you need to find the commit that introduce this
>> issue The commit ca74903b75cf is not the root cause of the issue, it just move
>> the code from I40e_rxtx_vec.c to i40e_rxtx_vec_common.h
>>
>> Regards
>> Qi
>>
> This is a fix to the  i40e_rx_vec_dev_conf_condition_check_default() function.
> The issue is caused because there is no check on the   hw_vlan_extend flag at present.
> This is the correct fixline for that function.
> ca74903b75 (Jianbo Liu   2016-10-14 09:30:00 +0530 221) i40e_rx_vec_dev_conf_condition_check_default(struct rte_eth_dev *dev)
> 
> I will send a v2 as I should have added the "Cc: stable@dpdk.org"  line.

Hi Bernard,

I agree with Qi, the commit you are using is just moves function to a
common header, you are not fixing that.

Perhaps fixline can be the commit that adds QinQ support, because it
forgets adding hw_vlan_extend check?

byw, since this common function used by other vector drivers, neon and
altivec, will this something effect them, is there any case
"hw_vlan_extend == 1" but other vector drivers can be used?

Thanks,
ferruh

> 
> Regards,
> 
> Bernard.
> 
>
  
Qi Zhang April 12, 2017, 2:16 p.m. UTC | #6
Hi Bernard:

> -----Original Message-----

> From: Yigit, Ferruh

> Sent: Wednesday, April 12, 2017 10:08 PM

> To: Iremonger, Bernard <bernard.iremonger@intel.com>; Zhang, Qi Z

> <qi.z.zhang@intel.com>; dev@dpdk.org

> Cc: Xing, Beilei <beilei.xing@intel.com>; Lu, Wenzhuo

> <wenzhuo.lu@intel.com>; Zhang, Qi <qi.zhang@intel.com>

> Subject: Re: [dpdk-dev] [PATCH] net/i40e: fix to ensure vector mode is not used

> 

> On 4/12/2017 2:54 PM, Iremonger, Bernard wrote:

> > Hi Qi,

> >

> > <snip>

> >

> >

> >

> >>>> -----Original Message-----

> >>>> From: Zhang, Qi Z

> >>>> Sent: Wednesday, April 12, 2017 12:43 PM

> >>>> To: Iremonger, Bernard <bernard.iremonger@intel.com>; dev@dpdk.org

> >>>> Cc: Xing, Beilei <beilei.xing@intel.com>; Lu, Wenzhuo

> >>>> <wenzhuo.lu@intel.com>; Zhang, Qi <qi.zhang@intel.com>; Iremonger,

> >>>> Bernard <bernard.iremonger@intel.com>

> >>>> Subject: RE: [dpdk-dev] [PATCH] net/i40e: fix to ensure vector mode

> >>>> is not used

> >>>>

> >>>> Hi Bernard:

> >>>>

> >>>>> -----Original Message-----

> >>>>> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Bernard

> >>>> Iremonger

> >>>>> Sent: Tuesday, April 11, 2017 11:01 PM

> >>>>> To: dev@dpdk.org

> >>>>> Cc: Xing, Beilei <beilei.xing@intel.com>; Lu, Wenzhuo

> >>>>> <wenzhuo.lu@intel.com>; Zhang, Qi <qi.zhang@intel.com>;

> >> Iremonger,

> >>>>> Bernard <bernard.iremonger@intel.com>

> >>>>> Subject: [dpdk-dev] [PATCH] net/i40e: fix to ensure vector mode is

> >>>>> not used

> >>>>>

> >>>>> In rx vector mode, the QinQ VLAN tag is not stripped.

> >>>>> When hw_vlan_extend is set for QinQ ensure that rx vector mode is

> >>>>> not selected.

> >>>>>

> >>>>> Fixes: ca74903b75cf ("net/i40e: extract non-x86 specific code from

> >>>>> vector

> >>>>> driver")

> >>>>

> >>>> Why fixes? I didn't see above commit change rx callback function if

> >>>> hw_vlan_extend == 1

> >>>

> >>> Some of the QinQ functionality was introduced in 17.02, this

> >>> functionality also has the same issue.

> >>> So I added a fixes line.

> >>

> >> If you think this patch is a fix, you need to find the commit that

> >> introduce this issue The commit ca74903b75cf is not the root cause of

> >> the issue, it just move the code from I40e_rxtx_vec.c to

> >> i40e_rxtx_vec_common.h

> >>

> >> Regards

> >> Qi

> >>

> > This is a fix to the  i40e_rx_vec_dev_conf_condition_check_default()

> function.

> > The issue is caused because there is no check on the   hw_vlan_extend flag

> at present.

> > This is the correct fixline for that function.

> > ca74903b75 (Jianbo Liu   2016-10-14 09:30:00 +0530 221)

> i40e_rx_vec_dev_conf_condition_check_default(struct rte_eth_dev *dev)

> >

> > I will send a v2 as I should have added the "Cc: stable@dpdk.org"  line.


I think it should be 
Fixes: 8e109464c02292 ("i40e: allow vector Rx and Tx usage")
This is the first commit after which that QinQ is allowed with vPMD.
> 

> Hi Bernard,

> 

> I agree with Qi, the commit you are using is just moves function to a common

> header, you are not fixing that.

> 

> Perhaps fixline can be the commit that adds QinQ support, because it forgets

> adding hw_vlan_extend check?

> 

> byw, since this common function used by other vector drivers, neon and altivec,

> will this something effect them, is there any case "hw_vlan_extend == 1" but

> other vector drivers can be used?


As I see, neon and altivec follow x86's implementation, they do not support QinQ neither.

> 

> Thanks,

> ferruh

> 

> >

> > Regards,

> >

> > Bernard.

> >

> >
  
Iremonger, Bernard April 12, 2017, 2:37 p.m. UTC | #7
Hi Ferruh,

> -----Original Message-----

> From: Yigit, Ferruh

> Sent: Wednesday, April 12, 2017 3:08 PM

> To: Iremonger, Bernard <bernard.iremonger@intel.com>; Zhang, Qi Z

> <qi.z.zhang@intel.com>; dev@dpdk.org

> Cc: Xing, Beilei <beilei.xing@intel.com>; Lu, Wenzhuo

> <wenzhuo.lu@intel.com>; Zhang, Qi <qi.zhang@intel.com>

> Subject: Re: [dpdk-dev] [PATCH] net/i40e: fix to ensure vector mode is not

> used

> 

> On 4/12/2017 2:54 PM, Iremonger, Bernard wrote:

> > Hi Qi,

> >

> > <snip>

> >

> >

> >

> >>>> -----Original Message-----

> >>>> From: Zhang, Qi Z

> >>>> Sent: Wednesday, April 12, 2017 12:43 PM

> >>>> To: Iremonger, Bernard <bernard.iremonger@intel.com>;

> dev@dpdk.org

> >>>> Cc: Xing, Beilei <beilei.xing@intel.com>; Lu, Wenzhuo

> >>>> <wenzhuo.lu@intel.com>; Zhang, Qi <qi.zhang@intel.com>;

> Iremonger,

> >>>> Bernard <bernard.iremonger@intel.com>

> >>>> Subject: RE: [dpdk-dev] [PATCH] net/i40e: fix to ensure vector mode

> >>>> is not used

> >>>>

> >>>> Hi Bernard:

> >>>>

> >>>>> -----Original Message-----

> >>>>> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Bernard

> >>>> Iremonger

> >>>>> Sent: Tuesday, April 11, 2017 11:01 PM

> >>>>> To: dev@dpdk.org

> >>>>> Cc: Xing, Beilei <beilei.xing@intel.com>; Lu, Wenzhuo

> >>>>> <wenzhuo.lu@intel.com>; Zhang, Qi <qi.zhang@intel.com>;

> >> Iremonger,

> >>>>> Bernard <bernard.iremonger@intel.com>

> >>>>> Subject: [dpdk-dev] [PATCH] net/i40e: fix to ensure vector mode is

> >>>>> not used

> >>>>>

> >>>>> In rx vector mode, the QinQ VLAN tag is not stripped.

> >>>>> When hw_vlan_extend is set for QinQ ensure that rx vector mode is

> >>>>> not selected.

> >>>>>

> >>>>> Fixes: ca74903b75cf ("net/i40e: extract non-x86 specific code from

> >>>>> vector

> >>>>> driver")

> >>>>

> >>>> Why fixes? I didn't see above commit change rx callback function if

> >>>> hw_vlan_extend == 1

> >>>

> >>> Some of the QinQ functionality was introduced in 17.02, this

> >>> functionality also has the same issue.

> >>> So I added a fixes line.

> >>

> >> If you think this patch is a fix, you need to find the commit that

> >> introduce this issue The commit ca74903b75cf is not the root cause of

> >> the issue, it just move the code from I40e_rxtx_vec.c to

> >> i40e_rxtx_vec_common.h

> >>

> >> Regards

> >> Qi

> >>

> > This is a fix to the  i40e_rx_vec_dev_conf_condition_check_default()

> function.

> > The issue is caused because there is no check on the   hw_vlan_extend flag

> at present.

> > This is the correct fixline for that function.

> > ca74903b75 (Jianbo Liu   2016-10-14 09:30:00 +0530 221)

> i40e_rx_vec_dev_conf_condition_check_default(struct rte_eth_dev *dev)

> >

> > I will send a v2 as I should have added the "Cc: stable@dpdk.org"  line.

> 

> Hi Bernard,

> 

> I agree with Qi, the commit you are using is just moves function to a common

> header, you are not fixing that.

> 

> Perhaps fixline can be the commit that adds QinQ support, because it forgets

> adding hw_vlan_extend check?


Ok,  I will use that commit line.
> 

> byw, since this common function used by other vector drivers, neon and

> altivec, will this something effect them, is there any case "hw_vlan_extend

> == 1" but other vector drivers can be used?


The hw_vlan_extend is defined in struct rte_eth_rxmode{}  in rte_ethedev.h so it can be used by other vector drivers.
hw_vlan_extend was handled in this function previously before the following patch
net/i40e: remove option to disable offload flags
commit : 2d7a4ce0806dfdc5b27b280eaf87eeec4848a19f 
> 

> Thanks,

> ferruh

> 

 Regards,

Bernard.
  
Iremonger, Bernard April 12, 2017, 3:05 p.m. UTC | #8
Hi Qi,

<snip>
> >

> > >>>> -----Original Message-----

> > >>>> From: Zhang, Qi Z

> > >>>> Sent: Wednesday, April 12, 2017 12:43 PM

> > >>>> To: Iremonger, Bernard <bernard.iremonger@intel.com>;

> > >>>> dev@dpdk.org

> > >>>> Cc: Xing, Beilei <beilei.xing@intel.com>; Lu, Wenzhuo

> > >>>> <wenzhuo.lu@intel.com>; Zhang, Qi <qi.zhang@intel.com>;

> > >>>> Iremonger, Bernard <bernard.iremonger@intel.com>

> > >>>> Subject: RE: [dpdk-dev] [PATCH] net/i40e: fix to ensure vector

> > >>>> mode is not used

> > >>>>

> > >>>> Hi Bernard:

> > >>>>

> > >>>>> -----Original Message-----

> > >>>>> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Bernard

> > >>>> Iremonger

> > >>>>> Sent: Tuesday, April 11, 2017 11:01 PM

> > >>>>> To: dev@dpdk.org

> > >>>>> Cc: Xing, Beilei <beilei.xing@intel.com>; Lu, Wenzhuo

> > >>>>> <wenzhuo.lu@intel.com>; Zhang, Qi <qi.zhang@intel.com>;

> > >> Iremonger,

> > >>>>> Bernard <bernard.iremonger@intel.com>

> > >>>>> Subject: [dpdk-dev] [PATCH] net/i40e: fix to ensure vector mode

> > >>>>> is not used

> > >>>>>

> > >>>>> In rx vector mode, the QinQ VLAN tag is not stripped.

> > >>>>> When hw_vlan_extend is set for QinQ ensure that rx vector mode

> > >>>>> is not selected.

> > >>>>>

> > >>>>> Fixes: ca74903b75cf ("net/i40e: extract non-x86 specific code

> > >>>>> from vector

> > >>>>> driver")

> > >>>>

> > >>>> Why fixes? I didn't see above commit change rx callback function

> > >>>> if hw_vlan_extend == 1

> > >>>

> > >>> Some of the QinQ functionality was introduced in 17.02, this

> > >>> functionality also has the same issue.

> > >>> So I added a fixes line.

> > >>

> > >> If you think this patch is a fix, you need to find the commit that

> > >> introduce this issue The commit ca74903b75cf is not the root cause

> > >> of the issue, it just move the code from I40e_rxtx_vec.c to

> > >> i40e_rxtx_vec_common.h

> > >>

> > >> Regards

> > >> Qi

> > >>

> > > This is a fix to the  i40e_rx_vec_dev_conf_condition_check_default()

> > function.

> > > The issue is caused because there is no check on the   hw_vlan_extend

> flag

> > at present.

> > > This is the correct fixline for that function.

> > > ca74903b75 (Jianbo Liu   2016-10-14 09:30:00 +0530 221)

> > i40e_rx_vec_dev_conf_condition_check_default(struct rte_eth_dev

> *dev)

> > >

> > > I will send a v2 as I should have added the "Cc: stable@dpdk.org"  line.

> 

> I think it should be

> Fixes: 8e109464c02292 ("i40e: allow vector Rx and Tx usage") This is the first

> commit after which that QinQ is allowed with vPMD.


Or should it be the following commit, when it is used for QinQ?

Fixes: 5b2d37858d32 ("net/i40e: fix single VLAN tag to be outer VLAN tag")

> >

> > Hi Bernard,

> >

> > I agree with Qi, the commit you are using is just moves function to a

> > common header, you are not fixing that.

> >

> > Perhaps fixline can be the commit that adds QinQ support, because it

> > forgets adding hw_vlan_extend check?

> >

> > byw, since this common function used by other vector drivers, neon and

> > altivec, will this something effect them, is there any case

> > "hw_vlan_extend == 1" but other vector drivers can be used?

> 

> As I see, neon and altivec follow x86's implementation, they do not support

> QinQ neither.

> 

> >

> > Thanks,

> > ferruh

> >

> > >

> > > Regards,

> > >

> > > Bernard.

> > >

> > >

Regards,

Bernard.
  

Patch

diff --git a/drivers/net/i40e/i40e_rxtx_vec_common.h b/drivers/net/i40e/i40e_rxtx_vec_common.h
index 952fd4b63..692096684 100644
--- a/drivers/net/i40e/i40e_rxtx_vec_common.h
+++ b/drivers/net/i40e/i40e_rxtx_vec_common.h
@@ -234,6 +234,10 @@  i40e_rx_vec_dev_conf_condition_check_default(struct rte_eth_dev *dev)
 	if (rxmode->header_split == 1)
 		return -1;
 
+	/* no QinQ support */
+	if (rxmode->hw_vlan_extend == 1)
+		return -1;
+
 	return 0;
 #else
 	RTE_SET_USED(dev);