Skip to content

Commit

Permalink
net/mlx5: fix RSS flow item expansion for GRE key
Browse files Browse the repository at this point in the history
[ upstream commit 09546d7 ]

The support of RSS expansion for the flows with IPv6 GRE item was added
to mlx5 PMD. And the GRE KEY item support in expansion was missed
and the flows with GRE and GRE KEY items were expanded in the wrong
way causing the flow creation failure.

This patch adds the RSS expansion support for GRE KEY and mlx5 PMD
performs RSS expansion correctly.

Fixes: 048f0d4 ("net/mlx5: support RSS expansion for IPv6 GRE")

Signed-off-by: Jiawei Wang <jiaweiw@nvidia.com>
Acked-by: Xiaoyu Min <jackmin@nvidia.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
  • Loading branch information
jiaweiwsz authored and steevenlee committed Jun 8, 2021
1 parent 6db31e3 commit 106f008
Showing 1 changed file with 13 additions and 3 deletions.
16 changes: 13 additions & 3 deletions drivers/net/mlx5/mlx5_flow.c
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,8 @@ struct mlx5_flow_expand_node {
* RSS types bit-field associated with this node
* (see ETH_RSS_* definitions).
*/
uint8_t optional;
/**< optional expand field. Default 0 to expand, 1 not go deeper. */
};

/** Object returned by mlx5_flow_expand_rss(). */
Expand Down Expand Up @@ -212,7 +214,7 @@ mlx5_flow_expand_rss_item_complete(const struct rte_flow_item *item)
return ret;
}

#define MLX5_RSS_EXP_ELT_N 8
#define MLX5_RSS_EXP_ELT_N 16

/**
* Expand RSS flows into several possible flows according to the RSS hash
Expand Down Expand Up @@ -366,7 +368,7 @@ mlx5_flow_expand_rss(struct mlx5_flow_expand_rss *buf, size_t size,
}
}
/* Go deeper. */
if (node->next) {
if (!node->optional && node->next) {
next_node = node->next;
if (stack_pos++ == MLX5_RSS_EXP_ELT_N) {
rte_errno = E2BIG;
Expand Down Expand Up @@ -405,6 +407,7 @@ enum mlx5_expansion {
MLX5_EXPANSION_VXLAN,
MLX5_EXPANSION_VXLAN_GPE,
MLX5_EXPANSION_GRE,
MLX5_EXPANSION_GRE_KEY,
MLX5_EXPANSION_MPLS,
MLX5_EXPANSION_ETH,
MLX5_EXPANSION_ETH_VLAN,
Expand Down Expand Up @@ -513,9 +516,16 @@ static const struct mlx5_flow_expand_node mlx5_support_expansion[] = {
},
[MLX5_EXPANSION_GRE] = {
.next = MLX5_FLOW_EXPAND_RSS_NEXT(MLX5_EXPANSION_IPV4,
MLX5_EXPANSION_IPV6),
MLX5_EXPANSION_IPV6,
MLX5_EXPANSION_GRE_KEY),
.type = RTE_FLOW_ITEM_TYPE_GRE,
},
[MLX5_EXPANSION_GRE_KEY] = {
.next = MLX5_FLOW_EXPAND_RSS_NEXT(MLX5_EXPANSION_IPV4,
MLX5_EXPANSION_IPV6),
.type = RTE_FLOW_ITEM_TYPE_GRE_KEY,
.optional = 1,
},
[MLX5_EXPANSION_MPLS] = {
.next = MLX5_FLOW_EXPAND_RSS_NEXT(MLX5_EXPANSION_IPV4,
MLX5_EXPANSION_IPV6),
Expand Down

0 comments on commit 106f008

Please sign in to comment.