[dpdk-dev] [PATCH] net/ixgbe: fix mask bits register set error for FDIR

Lu, Wenzhuo wenzhuo.lu at intel.com
Thu Jun 14 02:52:32 CEST 2018


Hi  Wei,

> -----Original Message-----
> From: Zhao1, Wei
> Sent: Wednesday, June 13, 2018 4: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 mask bits register set error for FDIR
> 
> MAC address bits in mask registers should be set to zero when the is mac
> mask is 0xFF, otherwise if it is 0x0 these bits should be to 0x3F.
> 
> Fixes: 82fb702077f6 ("ixgbe: support new flow director modes for X550")
> 
> Signed-off-by: Wei Zhao <wei.zhao1 at intel.com>
> ---
>  drivers/net/ixgbe/ixgbe_fdir.c | 12 +++++++++---
>  1 file changed, 9 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/net/ixgbe/ixgbe_fdir.c b/drivers/net/ixgbe/ixgbe_fdir.c
> index 3feb815..6d97aa3 100644
> --- a/drivers/net/ixgbe/ixgbe_fdir.c
> +++ b/drivers/net/ixgbe/ixgbe_fdir.c
> @@ -394,9 +394,15 @@ fdir_set_input_mask_x550(struct rte_eth_dev *dev)
>  				IXGBE_FDIRIP6M_TNI_VNI;
> 
>  	if (mode == RTE_FDIR_MODE_PERFECT_TUNNEL) {
> -		mac_mask = info->mask.mac_addr_byte_mask;
> -		fdiripv6m |= (mac_mask <<
> IXGBE_FDIRIP6M_INNER_MAC_SHIFT)
> -				& IXGBE_FDIRIP6M_INNER_MAC;
> +		mac_mask = info->mask.mac_addr_byte_mask & 0x3F;
Better not use 0x3f, you can change it to "IXGBE_FDIRIP6M_INNER_MAC >> IXGBE_FDIRIP6M_INNER_MAC_SHIFT"

> +		if (mac_mask == 0x3F)
> +			fdiripv6m &= ~IXGBE_FDIRIP6M_INNER_MAC;
> +		else if (mac_mask == 0)
> +			fdiripv6m |= IXGBE_FDIRIP6M_INNER_MAC;
> +		else{
> +			PMD_INIT_LOG(ERR, "invalid mac_addr_byte_mask");
> +			return -EINVAL;
I think every byte of the MAC address can be masked. So this is not the invalid case. We should support 0x1f, 0xf, 0x7... as before.

> +		}
> 
>  		switch (info->mask.tunnel_type_mask) {
>  		case 0:
> --
> 2.7.5



More information about the dev mailing list