[dpdk-dev,v2] net: fix stripped VLAN flag for offload emulation

Message ID 20170504223613.24431-1-thomas@monjalon.net (mailing list archive)
State Accepted, archived
Headers

Checks

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

Commit Message

Thomas Monjalon May 4, 2017, 10:36 p.m. UTC
  From: Michał Mirosław <michal.miroslaw@atendesoftware.pl>

Apply the new flag PKT_RX_VLAN_STRIPPED to the software emulation case
(currently only for virtio and af_packet).

Fixes: b37b528d957c ("mbuf: add new Rx flags for stripped VLAN")
Cc: stable@dpdk.org

Signed-off-by: Michał Mirosław <michal.miroslaw@atendesoftware.pl>
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
---
v2: add explanations and update rte_vlan_insert()
---
 lib/librte_net/rte_ether.h | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
  

Comments

Olivier Matz May 5, 2017, 10:02 a.m. UTC | #1
Hi Thomas,

On Fri,  5 May 2017 00:36:13 +0200, Thomas Monjalon <thomas@monjalon.net> wrote:
> From: Michał Mirosław <michal.miroslaw@atendesoftware.pl>
> 
> Apply the new flag PKT_RX_VLAN_STRIPPED to the software emulation case
> (currently only for virtio and af_packet).
> 
> Fixes: b37b528d957c ("mbuf: add new Rx flags for stripped VLAN")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Michał Mirosław <michal.miroslaw@atendesoftware.pl>
> Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
> ---
> v2: add explanations and update rte_vlan_insert()
> ---
>  lib/librte_net/rte_ether.h | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/lib/librte_net/rte_ether.h b/lib/librte_net/rte_ether.h
> index ff3d06540..5edf66c3f 100644
> --- a/lib/librte_net/rte_ether.h
> +++ b/lib/librte_net/rte_ether.h
> @@ -357,7 +357,7 @@ static inline int rte_vlan_strip(struct rte_mbuf *m)
>  		return -1;
>  
>  	struct vlan_hdr *vh = (struct vlan_hdr *)(eh + 1);
> -	m->ol_flags |= PKT_RX_VLAN_PKT;
> +	m->ol_flags |= PKT_RX_VLAN_PKT | PKT_RX_VLAN_STRIPPED;
>  	m->vlan_tci = rte_be_to_cpu_16(vh->vlan_tci);
>  
>  	/* Copy ether header over rather than moving whole packet */
> @@ -407,6 +407,8 @@ static inline int rte_vlan_insert(struct rte_mbuf **m)
>  	vh = (struct vlan_hdr *) (nh + 1);
>  	vh->vlan_tci = rte_cpu_to_be_16((*m)->vlan_tci);
>  
> +	(*m)->ol_flags &= ~PKT_RX_VLAN_STRIPPED;
> +
>  	return 0;
>  }
>  

Having disymetric flags looks strange at first glance, but I think
you are right and PKT_RX_VLAN_PKT should be kept in rte_vlan_strip()
for compat purpose. As I said previously in the thread, I think
there is some work remaining to clean-up the vlan offload flags,
we should do this for 17.08.


Acked-by: Olivier Matz <olivier.matz@6wind.com>
  
Thomas Monjalon May 5, 2017, 2 p.m. UTC | #2
05/05/2017 12:02, Olivier Matz:
> Hi Thomas,
> 
> On Fri,  5 May 2017 00:36:13 +0200, Thomas Monjalon <thomas@monjalon.net> wrote:
> > From: Michał Mirosław <michal.miroslaw@atendesoftware.pl>
> > 
> > Apply the new flag PKT_RX_VLAN_STRIPPED to the software emulation case
> > (currently only for virtio and af_packet).
> > 
> > Fixes: b37b528d957c ("mbuf: add new Rx flags for stripped VLAN")
> > Cc: stable@dpdk.org
> > 
> > Signed-off-by: Michał Mirosław <michal.miroslaw@atendesoftware.pl>
> > Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
> > ---
> > v2: add explanations and update rte_vlan_insert()
> > ---
> >  lib/librte_net/rte_ether.h | 4 +++-
> >  1 file changed, 3 insertions(+), 1 deletion(-)
> > 
> > diff --git a/lib/librte_net/rte_ether.h b/lib/librte_net/rte_ether.h
> > index ff3d06540..5edf66c3f 100644
> > --- a/lib/librte_net/rte_ether.h
> > +++ b/lib/librte_net/rte_ether.h
> > @@ -357,7 +357,7 @@ static inline int rte_vlan_strip(struct rte_mbuf *m)
> >  		return -1;
> >  
> >  	struct vlan_hdr *vh = (struct vlan_hdr *)(eh + 1);
> > -	m->ol_flags |= PKT_RX_VLAN_PKT;
> > +	m->ol_flags |= PKT_RX_VLAN_PKT | PKT_RX_VLAN_STRIPPED;
> >  	m->vlan_tci = rte_be_to_cpu_16(vh->vlan_tci);
> >  
> >  	/* Copy ether header over rather than moving whole packet */
> > @@ -407,6 +407,8 @@ static inline int rte_vlan_insert(struct rte_mbuf **m)
> >  	vh = (struct vlan_hdr *) (nh + 1);
> >  	vh->vlan_tci = rte_cpu_to_be_16((*m)->vlan_tci);
> >  
> > +	(*m)->ol_flags &= ~PKT_RX_VLAN_STRIPPED;
> > +
> >  	return 0;
> >  }
> >  
> 
> Having disymetric flags looks strange at first glance, but I think
> you are right and PKT_RX_VLAN_PKT should be kept in rte_vlan_strip()
> for compat purpose. As I said previously in the thread, I think
> there is some work remaining to clean-up the vlan offload flags,
> we should do this for 17.08.
> 
> 
> Acked-by: Olivier Matz <olivier.matz@6wind.com>

Applied, thanks
  

Patch

diff --git a/lib/librte_net/rte_ether.h b/lib/librte_net/rte_ether.h
index ff3d06540..5edf66c3f 100644
--- a/lib/librte_net/rte_ether.h
+++ b/lib/librte_net/rte_ether.h
@@ -357,7 +357,7 @@  static inline int rte_vlan_strip(struct rte_mbuf *m)
 		return -1;
 
 	struct vlan_hdr *vh = (struct vlan_hdr *)(eh + 1);
-	m->ol_flags |= PKT_RX_VLAN_PKT;
+	m->ol_flags |= PKT_RX_VLAN_PKT | PKT_RX_VLAN_STRIPPED;
 	m->vlan_tci = rte_be_to_cpu_16(vh->vlan_tci);
 
 	/* Copy ether header over rather than moving whole packet */
@@ -407,6 +407,8 @@  static inline int rte_vlan_insert(struct rte_mbuf **m)
 	vh = (struct vlan_hdr *) (nh + 1);
 	vh->vlan_tci = rte_cpu_to_be_16((*m)->vlan_tci);
 
+	(*m)->ol_flags &= ~PKT_RX_VLAN_STRIPPED;
+
 	return 0;
 }