octeontx2-af: fix issue with IPv6 ext match for RSS
authorKiran Kumar K <kirankumark@marvell.com>
Wed, 10 Jul 2024 07:51:26 +0000 (13:21 +0530)
committerDavid S. Miller <davem@davemloft.net>
Fri, 12 Jul 2024 12:42:01 +0000 (13:42 +0100)
While performing RSS based on IPv6, extension ltype
is not being considered. This will be problem for
fragmented packets or packets with extension header.
Adding changes to match IPv6 ext header along with IPv6
ltype.

Fixes: 41a7aa7b800d ("octeontx2-af: NIX Rx flowkey configuration for RSS")
Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>
Reviewed-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/marvell/octeontx2/af/rvu_nix.c

index 00af888..19fe3ed 100644 (file)
@@ -3864,6 +3864,9 @@ static int get_flowkey_alg_idx(struct nix_hw *nix_hw, u32 flow_cfg)
        return -ERANGE;
 }
 
+/* Mask to match ipv6(NPC_LT_LC_IP6) and ipv6 ext(NPC_LT_LC_IP6_EXT) */
+#define NPC_LT_LC_IP6_MATCH_MSK ((~(NPC_LT_LC_IP6 ^ NPC_LT_LC_IP6_EXT)) & 0xf)
+
 static int set_flowkey_fields(struct nix_rx_flowkey_alg *alg, u32 flow_cfg)
 {
        int idx, nr_field, key_off, field_marker, keyoff_marker;
@@ -3990,7 +3993,7 @@ static int set_flowkey_fields(struct nix_rx_flowkey_alg *alg, u32 flow_cfg)
                                        field->bytesm1 = 15; /* DIP,16 bytes */
                                }
                        }
-                       field->ltype_mask = 0xF; /* Match only IPv6 */
+                       field->ltype_mask = NPC_LT_LC_IP6_MATCH_MSK;
                        break;
                case NIX_FLOW_KEY_TYPE_TCP:
                case NIX_FLOW_KEY_TYPE_UDP: