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

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
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -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) */
#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)
{
@@ -3936,7 +3938,7 @@ static int set_flowkey_fields(struct nix_rx_flowkey_alg *alg, u32 flow_cfg)
			field->hdr_offset = 9; /* offset */
			field->bytesm1 = 0; /* 1 byte */
			field->ltype_match = NPC_LT_LC_IP;
			field->ltype_mask = 0xF;
			field->ltype_mask = NPC_LT_LC_IP_MATCH_MSK;
			break;
		case NIX_FLOW_KEY_TYPE_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)
					field->bytesm1 = 3; /* DIP, 4 bytes */
				}
			}

			field->ltype_mask = 0xF; /* Match only IPv4 */
			field->ltype_mask = NPC_LT_LC_IP_MATCH_MSK;
			keyoff_marker = false;
			break;
		case NIX_FLOW_KEY_TYPE_IPV6: