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

Wei Zhao wei.zhao1 at intel.com
Wed Jun 13 10:12:10 CEST 2018


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;
+		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;
+		}
 
 		switch (info->mask.tunnel_type_mask) {
 		case 0:
-- 
2.7.5



More information about the dev mailing list