net/mlx5: fix RSS expansion for patterns with ICMP item
PATCH 1/1 net/mlx5: fix RSS expansion for patterns with ICMP item
MLX5 PMD RSS expansion implementation added L4 UDP or TCP headers after ICMP.
For example:
ETH / IPv4 / ICMP expanded into ETH / IPv4 / ICMP / {UDP | TCP} ETH / IPv6 / ICMPv6 expanded into ETH / IPv6 / ICMPv6 / {UDP | TCP}
The patch updates PMD expansion scheme to handle ICMP and ICMPv6 types as non-expandable for RSS.
--- drivers/net/mlx5/mlx5_flow.c | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-)
drivers/net/mlx5/mlx5_flow.c +23 -1
@@ -150,6 +150,8 @@ mlx5_flow_is_rss_expandable_item(const struct rte_flow_item *item)case RTE_FLOW_ITEM_TYPE_UDP :case RTE_FLOW_ITEM_TYPE_TCP :case RTE_FLOW_ITEM_TYPE_ESP : +case RTE_FLOW_ITEM_TYPE_ICMP : +case RTE_FLOW_ITEM_TYPE_ICMP6 :case RTE_FLOW_ITEM_TYPE_VXLAN :case RTE_FLOW_ITEM_TYPE_NVGRE :case RTE_FLOW_ITEM_TYPE_GRE :
@@ -563,10 +565,12 @@ enum mlx5_expansion {MLX5_EXPANSION_OUTER_IPV4_UDP ,MLX5_EXPANSION_OUTER_IPV4_TCP ,MLX5_EXPANSION_OUTER_IPV4_ESP , +MLX5_EXPANSION_OUTER_IPV4_ICMP ,MLX5_EXPANSION_OUTER_IPV6 ,MLX5_EXPANSION_OUTER_IPV6_UDP ,MLX5_EXPANSION_OUTER_IPV6_TCP ,MLX5_EXPANSION_OUTER_IPV6_ESP , +MLX5_EXPANSION_OUTER_IPV6_ICMP6 ,MLX5_EXPANSION_VXLAN ,MLX5_EXPANSION_STD_VXLAN , MLX5_EXPANSION_L3_VXLAN,
@@ -581,10 +585,12 @@ enum mlx5_expansion {MLX5_EXPANSION_IPV4_UDP ,MLX5_EXPANSION_IPV4_TCP ,MLX5_EXPANSION_IPV4_ESP , +MLX5_EXPANSION_IPV4_ICMP ,MLX5_EXPANSION_IPV6 ,MLX5_EXPANSION_IPV6_UDP ,MLX5_EXPANSION_IPV6_TCP ,MLX5_EXPANSION_IPV6_ESP , +MLX5_EXPANSION_IPV6_ICMP6 ,MLX5_EXPANSION_IPV6_FRAG_EXT ,MLX5_EXPANSION_GTP , MLX5_EXPANSION_GENEVE,
@@ -620,6 +626,7 @@ static const struct mlx5_flow_expand_node mlx5_support_expansion[] = { (MLX5_EXPANSION_OUTER_IPV4_UDP ,MLX5_EXPANSION_OUTER_IPV4_TCP ,MLX5_EXPANSION_OUTER_IPV4_ESP , +MLX5_EXPANSION_OUTER_IPV4_ICMP ,MLX5_EXPANSION_GRE ,MLX5_EXPANSION_NVGRE , MLX5_EXPANSION_IPV4,
@@ -645,11 +652,15 @@ static const struct mlx5_flow_expand_node mlx5_support_expansion[] = { .type = RTE_FLOW_ITEM_TYPE_ESP, .rss_types = RTE_ETH_RSS_ESP, }, + [MLX5_EXPANSION_OUTER_IPV4_ICMP] = { + .type = RTE_FLOW_ITEM_TYPE_ICMP, + }, [MLX5_EXPANSION_OUTER_IPV6] = { .next =MLX5_FLOW_EXPAND_RSS_NEXT (MLX5_EXPANSION_OUTER_IPV6_UDP, MLX5_EXPANSION_OUTER_IPV6_TCP, MLX5_EXPANSION_OUTER_IPV6_ESP, + MLX5_EXPANSION_OUTER_IPV6_ICMP6, MLX5_EXPANSION_IPV4, MLX5_EXPANSION_IPV6, MLX5_EXPANSION_GRE,
@@ -675,6 +686,9 @@ static const struct mlx5_flow_expand_node mlx5_support_expansion[] = { .type = RTE_FLOW_ITEM_TYPE_ESP, .rss_types = RTE_ETH_RSS_ESP, }, + [MLX5_EXPANSION_OUTER_IPV6_ICMP6] = { + .type = RTE_FLOW_ITEM_TYPE_ICMP6, + }, [MLX5_EXPANSION_VXLAN] = { .next = MLX5_FLOW_EXPAND_RSS_NEXT(MLX5_EXPANSION_ETH, MLX5_EXPANSION_IPV4,
@@ -735,7 +749,8 @@ static const struct mlx5_flow_expand_node mlx5_support_expansion[] = { [MLX5_EXPANSION_IPV4] = { .next =MLX5_FLOW_EXPAND_RSS_NEXT (MLX5_EXPANSION_IPV4_UDP ,MLX5_EXPANSION_IPV4_TCP , - MLX5_EXPANSION_IPV4_ESP), +MLX5_EXPANSION_IPV4_ESP , + MLX5_EXPANSION_IPV4_ICMP), .type = RTE_FLOW_ITEM_TYPE_IPV4, .rss_types =RTE_ETH_RSS_IPV4 |RTE_ETH_RSS_FRAG_IPV4 | RTE_ETH_RSS_NONFRAG_IPV4_OTHER,
@@ -752,10 +767,14 @@ static const struct mlx5_flow_expand_node mlx5_support_expansion[] = { .type = RTE_FLOW_ITEM_TYPE_ESP, .rss_types = RTE_ETH_RSS_ESP, }, + [MLX5_EXPANSION_IPV4_ICMP] = { + .type = RTE_FLOW_ITEM_TYPE_ICMP, + }, [MLX5_EXPANSION_IPV6] = { .next =MLX5_FLOW_EXPAND_RSS_NEXT (MLX5_EXPANSION_IPV6_UDP ,MLX5_EXPANSION_IPV6_TCP ,MLX5_EXPANSION_IPV6_ESP , +MLX5_EXPANSION_IPV6_ICMP6 , MLX5_EXPANSION_IPV6_FRAG_EXT), .type = RTE_FLOW_ITEM_TYPE_IPV6, .rss_types = RTE_ETH_RSS_IPV6 | RTE_ETH_RSS_FRAG_IPV6 |
@@ -776,6 +795,9 @@ static const struct mlx5_flow_expand_node mlx5_support_expansion[] = { [MLX5_EXPANSION_IPV6_FRAG_EXT] = { .type = RTE_FLOW_ITEM_TYPE_IPV6_FRAG_EXT, }, + [MLX5_EXPANSION_IPV6_ICMP6] = { + .type = RTE_FLOW_ITEM_TYPE_ICMP6, + }, [MLX5_EXPANSION_GTP] = { .next =MLX5_FLOW_EXPAND_RSS_NEXT (MLX5_EXPANSION_IPV4 , MLX5_EXPANSION_IPV6),
Signature · 1 line
2.34.1
Hi,
Quoted 19 lines
-----Original Message-----
From: Gregory Etelson <[email protected]>
Sent: Friday, June 17, 2022 8:23 AM
To: [email protected]; Gregory Etelson <[email protected]>
Cc: Raslan Darawsheh <[email protected]>; [email protected]; Matan Azrad <[email protected]>; Slava Ovsiienko <[email protected]>; Ferruh Yigit <[email protected]>; Dekel Peled <[email protected]>
Subject: [PATCH] net/mlx5: fix RSS expansion for patterns with ICMP itemMLX5 PMD RSS expansion implementation added L4 UDP or TCP headers after ICMP.
For example:
ETH / IPv4 / ICMP expanded into ETH / IPv4 / ICMP / {UDP | TCP} ETH / IPv6 / ICMPv6 expanded into ETH / IPv6 / ICMPv6 / {UDP | TCP}The patch updates PMD expansion scheme to handle ICMP and ICMPv6 types
as non-expandable for RSS.
Quoted 5 lines
Fixes c7870bfe09dc ("ethdev: move RSS expansion code to mlx5 driver")Signed-off-by Gregory Etelson <[email protected]>Acked-by Matan Azrad <[email protected]>
Patch applied to next-net-mlx,
Kindest regards,
Raslan Darawsheh