From: Xiaoyu Min Date: Tue, 30 Mar 2021 13:40:32 +0000 (+0800) Subject: net/mlx5: fix redundant flow after RSS expansion X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=c1d397a67eed3b9d7adce5e73c5352de040b3b65;p=dpdk.git net/mlx5: fix redundant flow after RSS expansion When RSS expand, if there is no expansion happened but completion happened because user only input next protocol field instead of item i.e, ether type == 0x8100 instead of VLAN, an extra flow is created with missing item in order to filter traffic strictly. However, after [1] and [2] the rte_flow_item_eth itself is enough to filter out VLAN traffic, the VLAN item is not needed. [1]: commit 09315fc83861 ("ethdev: add VLAN attributes to ethernet and VLAN items") [2]: commit 86b59a1af671 ("net/mlx5: support VLAN matching fields") This redundant flow will cause failure in some scenarios on group 0 due to they are the same FTE. Fixes: fc2dd8dd492f ("ethdev: fix expand RSS flows") Cc: stable@dpdk.org Signed-off-by: Xiaoyu Min Acked-by: Matan Azrad --- diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c index 0f1a9c5ed9..b34d2952b1 100644 --- a/drivers/net/mlx5/mlx5_flow.c +++ b/drivers/net/mlx5/mlx5_flow.c @@ -384,22 +384,6 @@ mlx5_flow_expand_rss(struct mlx5_flow_expand_rss *buf, size_t size, } node = *next_node ? &graph[*next_node] : NULL; }; - /* no expanded flows but we have missed item, create one rule for it */ - if (buf->entries == 1 && missed != 0) { - elt = 2; - lsize += elt * sizeof(*item) + user_pattern_size; - if (lsize <= size) { - buf->entry[buf->entries].priority = 1; - buf->entry[buf->entries].pattern = addr; - buf->entries++; - flow_items[0].type = missed_item.type; - flow_items[1].type = RTE_FLOW_ITEM_TYPE_END; - rte_memcpy(addr, buf->entry[0].pattern, - user_pattern_size); - addr = (void *)(((uintptr_t)addr) + user_pattern_size); - rte_memcpy(addr, flow_items, elt * sizeof(*item)); - } - } return lsize; }