mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-24 01:41:39 +00:00
net/mlx5: Clean SRIOV eswitch resources upon VF creation failure
Upon sriov enable, eswitch is always enabled.
Currently, if enable hca failed over all VFs, we would skip eswitch
disable as part of sriov disable, which will lead to resources leak.
Fix it by disabling eswitch if it was enabled (use indication from
eswitch mode).
Fixes: 6b6adee3da
('net/mlx5: SRIOV core code refactoring')
Signed-off-by: Eran Ben Elisha <eranbe@mellanox.com>
Signed-off-by: Noa Osherovich <noaos@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
This commit is contained in:
parent
6b84202c94
commit
079adf0539
2 changed files with 7 additions and 1 deletions
|
@ -1668,7 +1668,8 @@ void mlx5_eswitch_disable_sriov(struct mlx5_eswitch *esw)
|
|||
int i;
|
||||
|
||||
if (!esw || !MLX5_CAP_GEN(esw->dev, vport_group_manager) ||
|
||||
MLX5_CAP_GEN(esw->dev, port_type) != MLX5_CAP_PORT_TYPE_ETH)
|
||||
MLX5_CAP_GEN(esw->dev, port_type) != MLX5_CAP_PORT_TYPE_ETH ||
|
||||
esw->mode == SRIOV_NONE)
|
||||
return;
|
||||
|
||||
esw_info(esw->dev, "disable SRIOV: active vports(%d) mode(%d)\n",
|
||||
|
|
|
@ -88,7 +88,11 @@ static void mlx5_device_disable_sriov(struct mlx5_core_dev *dev)
|
|||
int vf;
|
||||
|
||||
if (!sriov->enabled_vfs)
|
||||
#ifdef CONFIG_MLX5_CORE_EN
|
||||
goto disable_sriov_resources;
|
||||
#else
|
||||
return;
|
||||
#endif
|
||||
|
||||
for (vf = 0; vf < sriov->num_vfs; vf++) {
|
||||
if (!sriov->vfs_ctx[vf].enabled)
|
||||
|
@ -103,6 +107,7 @@ static void mlx5_device_disable_sriov(struct mlx5_core_dev *dev)
|
|||
}
|
||||
|
||||
#ifdef CONFIG_MLX5_CORE_EN
|
||||
disable_sriov_resources:
|
||||
mlx5_eswitch_disable_sriov(dev->priv.eswitch);
|
||||
#endif
|
||||
|
||||
|
|
Loading…
Reference in a new issue