Skip to content

Commit

Permalink
net/mlx5: fix redundant flow after RSS expansion
Browse files Browse the repository at this point in the history
[ upstream commit c1d397a ]

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 09315fc ("ethdev: add VLAN attributes to ethernet and VLAN items")
[2]: commit 86b59a1 ("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: fc2dd8d ("ethdev: fix expand RSS flows")

Signed-off-by: Xiaoyu Min <jackmin@nvidia.com>
Acked-by: Matan Azrad <matan@nvidia.com>
  • Loading branch information
jackmin authored and steevenlee committed May 8, 2021
1 parent 1cb30b3 commit fb455a8
Showing 1 changed file with 0 additions and 16 deletions.
16 changes: 0 additions & 16 deletions drivers/net/mlx5/mlx5_flow.c
Original file line number Diff line number Diff line change
Expand Up @@ -385,22 +385,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;
}

Expand Down

0 comments on commit fb455a8

Please sign in to comment.