[dpdk-dev] [PATCH] common/cnxk: fix issue with IPv6 ext matching

psatheesh at marvell.com psatheesh at marvell.com
Thu Jan 12 07:36:20 CET 2023


From: Kiran Kumar K <kirankumark at marvell.com>

While configuring ipv6 flow, ipv6 ext ltype should be
matched along with ipv6. Adding changes to fix this issue.

Fixes: 474e275b1bc6 ("common/cnxk: support extensions attributes in IPv6 item")
Cc: stable at dpdk.org

Signed-off-by: Kiran Kumar K <kirankumark at marvell.com>
Reviewed-by: Satheesh Paul <psatheesh at marvell.com>
---
 drivers/common/cnxk/roc_npc_mcam.c | 19 ++++++++++---------
 1 file changed, 10 insertions(+), 9 deletions(-)

diff --git a/drivers/common/cnxk/roc_npc_mcam.c b/drivers/common/cnxk/roc_npc_mcam.c
index c419ce3a4c..0abd8872b1 100644
--- a/drivers/common/cnxk/roc_npc_mcam.c
+++ b/drivers/common/cnxk/roc_npc_mcam.c
@@ -727,15 +727,16 @@ npc_set_ipv6ext_ltype_mask(struct npc_parse_state *pst)
 	 * because for AH and ESP, LC LFLAG is zero and we don't want to match
 	 * zero in LFLAG.
 	 */
-	lcflag_offset =
-		__builtin_popcount(pst->npc->keyx_supp_nmask[pst->nix_intf] &
-				   ((1ULL << NPC_LFLAG_LC_OFFSET) - 1));
-	lcflag_offset *= 4;
-
-	mask = (0xfULL << lcflag_offset);
-	val = pst->flow->mcam_data[0] & mask;
-	if (val)
-		pst->flow->mcam_mask[0] |= mask;
+	if (pst->npc->keyx_supp_nmask[pst->nix_intf] & (1ULL << NPC_LFLAG_LC_OFFSET)) {
+		lcflag_offset = __builtin_popcount(pst->npc->keyx_supp_nmask[pst->nix_intf] &
+						   ((1ULL << NPC_LFLAG_LC_OFFSET) - 1));
+		lcflag_offset *= 4;
+
+		mask = (0xfULL << lcflag_offset);
+		val = pst->flow->mcam_data[0] & mask;
+		if (val)
+			pst->flow->mcam_mask[0] |= mask;
+	}
 }
 
 int
-- 
2.35.3



More information about the stable mailing list