Commit 60795bbf authored by Satheesh Paul's avatar Satheesh Paul Committed by David S. Miller

octeontx2-af: fix issue with IPv4 match for RSS

While performing RSS based on IPv4, packets with
IPv4 options are not being considered. Adding changes
to match both plain IPv4 and IPv4 with option header.

Fixes: 41a7aa7b ("octeontx2-af: NIX Rx flowkey configuration for RSS")
Signed-off-by: default avatarSatheesh Paul <psatheesh@marvell.com>
Reviewed-by: default avatarKalesh AP <kalesh-anakkur.purayil@broadcom.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent e23ac109
...@@ -3866,6 +3866,8 @@ static int get_flowkey_alg_idx(struct nix_hw *nix_hw, u32 flow_cfg) ...@@ -3866,6 +3866,8 @@ static int get_flowkey_alg_idx(struct nix_hw *nix_hw, u32 flow_cfg)
/* Mask to match ipv6(NPC_LT_LC_IP6) and ipv6 ext(NPC_LT_LC_IP6_EXT) */ /* 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) #define NPC_LT_LC_IP6_MATCH_MSK ((~(NPC_LT_LC_IP6 ^ NPC_LT_LC_IP6_EXT)) & 0xf)
/* Mask to match both ipv4(NPC_LT_LC_IP) and ipv4 ext(NPC_LT_LC_IP_OPT) */
#define NPC_LT_LC_IP_MATCH_MSK ((~(NPC_LT_LC_IP ^ NPC_LT_LC_IP_OPT)) & 0xf)
static int set_flowkey_fields(struct nix_rx_flowkey_alg *alg, u32 flow_cfg) static int set_flowkey_fields(struct nix_rx_flowkey_alg *alg, u32 flow_cfg)
{ {
...@@ -3936,7 +3938,7 @@ static int set_flowkey_fields(struct nix_rx_flowkey_alg *alg, u32 flow_cfg) ...@@ -3936,7 +3938,7 @@ static int set_flowkey_fields(struct nix_rx_flowkey_alg *alg, u32 flow_cfg)
field->hdr_offset = 9; /* offset */ field->hdr_offset = 9; /* offset */
field->bytesm1 = 0; /* 1 byte */ field->bytesm1 = 0; /* 1 byte */
field->ltype_match = NPC_LT_LC_IP; field->ltype_match = NPC_LT_LC_IP;
field->ltype_mask = 0xF; field->ltype_mask = NPC_LT_LC_IP_MATCH_MSK;
break; break;
case NIX_FLOW_KEY_TYPE_IPV4: case NIX_FLOW_KEY_TYPE_IPV4:
case NIX_FLOW_KEY_TYPE_INNR_IPV4: case NIX_FLOW_KEY_TYPE_INNR_IPV4:
...@@ -3963,8 +3965,7 @@ static int set_flowkey_fields(struct nix_rx_flowkey_alg *alg, u32 flow_cfg) ...@@ -3963,8 +3965,7 @@ static int set_flowkey_fields(struct nix_rx_flowkey_alg *alg, u32 flow_cfg)
field->bytesm1 = 3; /* DIP, 4 bytes */ field->bytesm1 = 3; /* DIP, 4 bytes */
} }
} }
field->ltype_mask = NPC_LT_LC_IP_MATCH_MSK;
field->ltype_mask = 0xF; /* Match only IPv4 */
keyoff_marker = false; keyoff_marker = false;
break; break;
case NIX_FLOW_KEY_TYPE_IPV6: case NIX_FLOW_KEY_TYPE_IPV6:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment