net/mlx5: Move state lock taking into mlx5_sf_dealloc()

Instead of taking lock and calling mlx5_sf_dealloc(), move the lock
taking into mlx5_sf_dealloc(). The other caller of mlx5_sf_dealloc()
does not need it now, but will need it after a follow-up patch removing
the table reference counting.

Signed-off-by: Jiri Pirko <jiri@nvidia.com>
Reviewed-by: Shay Drory <shayd@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
This commit is contained in:
Jiri Pirko 2023-06-02 15:51:42 +02:00 committed by Saeed Mahameed
parent 2284a48362
commit 9497036dfb

View File

@ -341,6 +341,8 @@ int mlx5_devlink_sf_port_new(struct devlink *devlink,
static void mlx5_sf_dealloc(struct mlx5_sf_table *table, struct mlx5_sf *sf)
{
mutex_lock(&table->sf_state_lock);
mlx5_sf_function_id_erase(table, sf);
if (sf->hw_state == MLX5_VHCA_STATE_ALLOCATED) {
@ -358,6 +360,8 @@ static void mlx5_sf_dealloc(struct mlx5_sf_table *table, struct mlx5_sf *sf)
mlx5_sf_hw_table_sf_deferred_free(table->dev, sf->controller, sf->id);
kfree(sf);
}
mutex_unlock(&table->sf_state_lock);
}
int mlx5_devlink_sf_port_del(struct devlink *devlink,
@ -377,10 +381,7 @@ int mlx5_devlink_sf_port_del(struct devlink *devlink,
}
mlx5_eswitch_unload_sf_vport(esw, sf->hw_fn_id);
mutex_lock(&table->sf_state_lock);
mlx5_sf_dealloc(table, sf);
mutex_unlock(&table->sf_state_lock);
mlx5_sf_table_put(table);
return 0;
}