net/mlx5: Wait for inactive autogroups

Currently, if one thread tries to add an entry to an autogrouped table
with no free matching group, while another thread is in the process of
creating a new matching autogroup, it doesn't wait for the new group
creation, and creates an unnecessary new autogroup.

Instead of skipping inactive, wait on the write lock of those groups.

Signed-off-by: Paul Blakey <paulb@mellanox.com>
Reviewed-by: Roi Dayan <roid@mellanox.com>
Reviewed-by: Mark Bloch <markb@mellanox.com>
Reviewed-by: Maor Gottlieb <maorg@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
This commit is contained in:
Paul Blakey 2020-05-07 12:01:39 +03:00 committed by Saeed Mahameed
parent 41798df9bf
commit 49c0355d30
1 changed files with 5 additions and 3 deletions

View File

@ -1755,11 +1755,13 @@ skip_search:
list_for_each_entry(iter, match_head, list) {
g = iter->g;
if (!g->node.active)
continue;
nested_down_write_ref_node(&g->node, FS_LOCK_PARENT);
if (!g->node.active) {
up_write_ref_node(&g->node, false);
continue;
}
err = insert_fte(g, fte);
if (err) {
up_write_ref_node(&g->node, false);