[dpdk-stable] [PATCH] net/ixgbe: fix tunnel id format error for FDIR

Zhao1, Wei wei.zhao1 at intel.com
Tue Jun 12 09:49:23 CEST 2018


Hi, Wenzhuo

> -----Original Message-----
> From: Lu, Wenzhuo
> Sent: Tuesday, June 12, 2018 1:10 PM
> To: Zhao1, Wei <wei.zhao1 at intel.com>; dev at dpdk.org
> Cc: stable at dpdk.org
> Subject: RE: [PATCH] net/ixgbe: fix tunnel id format error for FDIR
> 
> Hi Wei,
> 
> 
> > -----Original Message-----
> > From: Zhao1, Wei
> > Sent: Tuesday, June 5, 2018 5:12 PM
> > To: dev at dpdk.org
> > Cc: Lu, Wenzhuo <wenzhuo.lu at intel.com>; stable at dpdk.org; Zhao1, Wei
> > <wei.zhao1 at intel.com>
> > Subject: [PATCH] net/ixgbe: fix tunnel id format error for FDIR
> >
> > In cloud mode for FDIR, tunnel id should be set as protocol request,
> > the lower 8 bits should be set as reserved.
> To my opinion, the original implementation and this patch have different
> understanding of the 'tunnel_id' in ' struct rte_eth_tunnel_flow'. Originally it
> only means the tunnel id but not including the reserved 8 bits.
> This patch means it should include the reserved bits. Maybe it makes things
> easier because the whole 4 bytes are big endian.
> So, may I suggest to add some comments in ' struct rte_eth_tunnel_flow' to
> let the users know what the 'tunnel_id' really means?

The format from input for 'tunnel_id' should be network network byte order
And it also should not contain reserved 1 byte, but hardware HASH need the format include  reserved 1 byte
And in network byte order. So, this patch convert to that format.
I will add some comment in  function ixgbe_fdir_filter_to_atr_input and ixgbe_parse_fdir_filter_tunnel,
That will not Influence other NIC format for this struct member.
Is that ok?


> 
> >
> > Fixes: 82fb702077f6 ("ixgbe: support new flow director modes for
> > X550")
> > Fixes: 11777435c727 ("net/ixgbe: parse flow director filter")
> >
> > Signed-off-by: Wei Zhao <wei.zhao1 at intel.com>
> > ---
> >  drivers/net/ixgbe/ixgbe_fdir.c | 2 +-  drivers/net/ixgbe/ixgbe_flow.c
> > | 5 ++---
> >  2 files changed, 3 insertions(+), 4 deletions(-)
> >
> > diff --git a/drivers/net/ixgbe/ixgbe_fdir.c
> > b/drivers/net/ixgbe/ixgbe_fdir.c index d5e5179..67ab627 100644
> > --- a/drivers/net/ixgbe/ixgbe_fdir.c
> > +++ b/drivers/net/ixgbe/ixgbe_fdir.c
> > @@ -774,7 +774,7 @@ ixgbe_fdir_filter_to_atr_input(const struct
> > rte_eth_fdir_filter *fdir_filter,
> >  		input->formatted.tunnel_type =
> >  			fdir_filter->input.flow.tunnel_flow.tunnel_type;
> >  		input->formatted.tni_vni =
> > -			fdir_filter->input.flow.tunnel_flow.tunnel_id;
> > +			fdir_filter->input.flow.tunnel_flow.tunnel_id >> 8;
> >  	}
> >
> >  	return 0;
> > diff --git a/drivers/net/ixgbe/ixgbe_flow.c
> > b/drivers/net/ixgbe/ixgbe_flow.c index eb0644c..64af777 100644
> > --- a/drivers/net/ixgbe/ixgbe_flow.c
> > +++ b/drivers/net/ixgbe/ixgbe_flow.c
> > @@ -2489,8 +2489,7 @@ ixgbe_parse_fdir_filter_tunnel(const struct
> > rte_flow_attr *attr,
> >  			rte_memcpy(((uint8_t *)
> >  				&rule->ixgbe_fdir.formatted.tni_vni + 1),
> >  				vxlan_spec->vni, RTE_DIM(vxlan_spec->vni));
> > -			rule->ixgbe_fdir.formatted.tni_vni =
> > rte_be_to_cpu_32(
> > -				rule->ixgbe_fdir.formatted.tni_vni);
> > +			rule->ixgbe_fdir.formatted.tni_vni >>= 8;
> >  		}
> >  	}
> >
> > @@ -2587,7 +2586,7 @@ ixgbe_parse_fdir_filter_tunnel(const struct
> > rte_flow_attr *attr,
> >  			/* tni is a 24-bits bit field */
> >  			rte_memcpy(&rule->ixgbe_fdir.formatted.tni_vni,
> >  			nvgre_spec->tni, RTE_DIM(nvgre_spec->tni));
> > -			rule->ixgbe_fdir.formatted.tni_vni <<= 8;
> > +			rule->ixgbe_fdir.formatted.tni_vni >>= 8;
> >  		}
> >  	}
> >
> > --
> > 2.7.5



More information about the stable mailing list