Hi, wenzhuo > -----Original Message----- > From: Lu, Wenzhuo > Sent: Thursday, June 14, 2018 8:53 AM > To: Zhao1, Wei <wei.zh...@intel.com>; dev@dpdk.org > Cc: sta...@dpdk.org > Subject: RE: [PATCH] net/ixgbe: fix mask bits register set error for FDIR > > 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.
Ok, I will commit v3 > > > + } > > > > switch (info->mask.tunnel_type_mask) { > > case 0: > > -- > > 2.7.5