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. cc: sta...@dpdk.org Fixes: c7870bfe09dc ("ethdev: move RSS expansion code to mlx5 driver") Signed-off-by: Gregory Etelson <getel...@nvidia.com> Acked-by: Matan Azrad <ma...@nvidia.com> --- drivers/net/mlx5/mlx5_flow.c | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c index 090de0366b..900ec8e4bc 100644 --- a/drivers/net/mlx5/mlx5_flow.c +++ b/drivers/net/mlx5/mlx5_flow.c @@ -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), -- 2.34.1