[dpdk-dev,v2] net: fix stripped VLAN flag for offload emulation
Checks
Commit Message
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
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>
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
@@ -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;
}