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

Lu, Wenzhuo wenzhuo.lu at intel.com
Tue Jun 12 07:10:02 CEST 2018


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?

> 
> 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