From: Kiran Kumar K <[email protected]>
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: [email protected]
Signed-off-by: Kiran Kumar K <[email protected]>
Reviewed-by: Satheesh Paul <[email protected]>
---
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