mirror of
https://github.com/torvalds/linux.git
synced 2026-11-07 06:17:02 +01:00
octeontx2-af: fix inner LC ltype match for RSS flowkey
Inner LC ltypes differ from outer LC ltypes, but RSS flowkey programming was using outer LC IP/IP6 ltype masks for inner IP keys. For inner IPv4/IPv6, match only the base IP ltype and do not include extension-header matches. Keep existing outer LC masks unchanged. This fixes inner-tunnel RSS key calculation and prevents mismatches in inner IP flow classification. Signed-off-by: kmahammadraf <kmahammadraf@marvell.com> Signed-off-by: Kiran Kumar K <kirankumark@marvell.com> Signed-off-by: Dave Miller <davem@davem-thinkpadp1gen8.ibmlond.csb>
This commit is contained in:
parent
1c8a700752
commit
22dd6bb2ba
|
|
@ -4111,9 +4111,12 @@ static int set_flowkey_fields(struct nix_rx_flowkey_alg *alg, u32 flow_cfg)
|
|||
case NIX_FLOW_KEY_TYPE_INNR_IPV4:
|
||||
field->lid = NPC_LID_LC;
|
||||
field->ltype_match = NPC_LT_LC_IP;
|
||||
field->ltype_mask = NPC_LT_LC_IP_MATCH_MSK;
|
||||
|
||||
if (key_type == NIX_FLOW_KEY_TYPE_INNR_IPV4) {
|
||||
field->lid = NPC_LID_LG;
|
||||
field->ltype_match = NPC_LT_LG_TU_IP;
|
||||
field->ltype_mask = 0xF;
|
||||
}
|
||||
field->hdr_offset = 12; /* SIP offset */
|
||||
field->bytesm1 = 7; /* SIP + DIP, 8 bytes */
|
||||
|
|
@ -4132,16 +4135,18 @@ static int set_flowkey_fields(struct nix_rx_flowkey_alg *alg, u32 flow_cfg)
|
|||
field->bytesm1 = 3; /* DIP, 4 bytes */
|
||||
}
|
||||
}
|
||||
field->ltype_mask = NPC_LT_LC_IP_MATCH_MSK;
|
||||
keyoff_marker = false;
|
||||
break;
|
||||
case NIX_FLOW_KEY_TYPE_IPV6:
|
||||
case NIX_FLOW_KEY_TYPE_INNR_IPV6:
|
||||
field->lid = NPC_LID_LC;
|
||||
field->ltype_match = NPC_LT_LC_IP6;
|
||||
field->ltype_mask = NPC_LT_LC_IP6_MATCH_MSK;
|
||||
|
||||
if (key_type == NIX_FLOW_KEY_TYPE_INNR_IPV6) {
|
||||
field->lid = NPC_LID_LG;
|
||||
field->ltype_match = NPC_LT_LG_TU_IP6;
|
||||
field->ltype_mask = 0xF;
|
||||
}
|
||||
field->hdr_offset = 8; /* SIP offset */
|
||||
field->bytesm1 = 31; /* SIP + DIP, 32 bytes */
|
||||
|
|
@ -4161,7 +4166,6 @@ static int set_flowkey_fields(struct nix_rx_flowkey_alg *alg, u32 flow_cfg)
|
|||
field->bytesm1 = 15; /* DIP,16 bytes */
|
||||
}
|
||||
}
|
||||
field->ltype_mask = NPC_LT_LC_IP6_MATCH_MSK;
|
||||
break;
|
||||
case NIX_FLOW_KEY_TYPE_TCP:
|
||||
case NIX_FLOW_KEY_TYPE_UDP:
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user