[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