Hi  Wei,

> -----Original Message-----
> From: Zhao1, Wei
> Sent: Wednesday, June 13, 2018 4:12 PM
> To: dev@dpdk.org
> Cc: Lu, Wenzhuo <wenzhuo...@intel.com>; sta...@dpdk.org; Zhao1, Wei
> <wei.zh...@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.zh...@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

Reply via email to