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]: commit09315fc838
("ethdev: add VLAN attributes to ethernet and VLAN items") [2]: commit86b59a1af6
("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:fc2dd8dd49
("ethdev: fix expand RSS flows") Cc: stable@dpdk.org Signed-off-by: Xiaoyu Min <jackmin@nvidia.com> Acked-by: Matan Azrad <matan@nvidia.com>
This commit is contained in:
parent
61cfa035d3
commit
c1d397a67e
@ -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;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user