mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-12 05:48:40 +00:00
net/mlx5: Keep autogroups list ordered
Finding a new autogroup range is done by going over a group list
sorted by each group start index. The search is stopped after finding
the first free range. Adding the newly created group to the list is
wrongly added to the end of the list regardless of its start index as
the parameter of where to insert it is ignored.
This commit makes sure to use that unused parameter to insert
it where requested.
Fixes: f0d22d1874
('net/mlx5_core: Introduce flow steering autogrouped flow table')
Signed-off-by: Paul Blakey <paulb@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
bba1574c2f
commit
eccec8da3b
1 changed files with 3 additions and 3 deletions
|
@ -879,7 +879,7 @@ static struct mlx5_flow_group *create_flow_group_common(struct mlx5_flow_table *
|
|||
tree_init_node(&fg->node, !is_auto_fg, del_flow_group);
|
||||
tree_add_node(&fg->node, &ft->node);
|
||||
/* Add node to group list */
|
||||
list_add(&fg->node.list, ft->node.children.prev);
|
||||
list_add(&fg->node.list, prev_fg);
|
||||
|
||||
return fg;
|
||||
}
|
||||
|
@ -893,7 +893,7 @@ struct mlx5_flow_group *mlx5_create_flow_group(struct mlx5_flow_table *ft,
|
|||
return ERR_PTR(-EPERM);
|
||||
|
||||
lock_ref_node(&ft->node);
|
||||
fg = create_flow_group_common(ft, fg_in, &ft->node.children, false);
|
||||
fg = create_flow_group_common(ft, fg_in, ft->node.children.prev, false);
|
||||
unlock_ref_node(&ft->node);
|
||||
|
||||
return fg;
|
||||
|
@ -1012,7 +1012,7 @@ static struct mlx5_flow_group *create_autogroup(struct mlx5_flow_table *ft,
|
|||
u32 *match_criteria)
|
||||
{
|
||||
int inlen = MLX5_ST_SZ_BYTES(create_flow_group_in);
|
||||
struct list_head *prev = &ft->node.children;
|
||||
struct list_head *prev = ft->node.children.prev;
|
||||
unsigned int candidate_index = 0;
|
||||
struct mlx5_flow_group *fg;
|
||||
void *match_criteria_addr;
|
||||
|
|
Loading…
Reference in a new issue