Commit 681372a7 authored by Jack Morgenstein's avatar Jack Morgenstein Committed by David S. Miller

net/mlx4_core: Do not reset module-parameter num_vfs when fail to enable sriov

Consider the following scenario: 2 HCAs, where only one of which can run SRIOV.

If we reset the module parameter, all the VFs of the SRIOV HCA will be
claimed by the PPF host (-- the code relies on num_vfs being non-zero
to avoid this claiming, and num_vfs was reset when pci_enable_sriov failed
for the non-SRIOV HCA).

The solution is not to touch the num_vfs parameter.

Also, eliminate the unneeded check of num_vfs when disabling sriov
(the dev flag bit is sufficient).
Signed-off-by: default avatarJack Morgenstein <jackm@dev.mellanox.co.il>
Signed-off-by: default avatarOr Gerlitz <ogerlitz@mellanox.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent b9985f41
...@@ -1865,7 +1865,6 @@ static int __mlx4_init_one(struct pci_dev *pdev, const struct pci_device_id *id) ...@@ -1865,7 +1865,6 @@ static int __mlx4_init_one(struct pci_dev *pdev, const struct pci_device_id *id)
mlx4_err(dev, "Failed to enable sriov," mlx4_err(dev, "Failed to enable sriov,"
"continuing without sriov enabled" "continuing without sriov enabled"
" (err = %d).\n", err); " (err = %d).\n", err);
num_vfs = 0;
err = 0; err = 0;
} else { } else {
mlx4_warn(dev, "Running in master mode\n"); mlx4_warn(dev, "Running in master mode\n");
...@@ -2022,7 +2021,7 @@ static int __mlx4_init_one(struct pci_dev *pdev, const struct pci_device_id *id) ...@@ -2022,7 +2021,7 @@ static int __mlx4_init_one(struct pci_dev *pdev, const struct pci_device_id *id)
mlx4_cmd_cleanup(dev); mlx4_cmd_cleanup(dev);
err_sriov: err_sriov:
if (num_vfs && (dev->flags & MLX4_FLAG_SRIOV)) if (dev->flags & MLX4_FLAG_SRIOV)
pci_disable_sriov(pdev); pci_disable_sriov(pdev);
err_rel_own: err_rel_own:
...@@ -2099,7 +2098,7 @@ static void mlx4_remove_one(struct pci_dev *pdev) ...@@ -2099,7 +2098,7 @@ static void mlx4_remove_one(struct pci_dev *pdev)
if (dev->flags & MLX4_FLAG_MSI_X) if (dev->flags & MLX4_FLAG_MSI_X)
pci_disable_msix(pdev); pci_disable_msix(pdev);
if (num_vfs && (dev->flags & MLX4_FLAG_SRIOV)) { if (dev->flags & MLX4_FLAG_SRIOV) {
mlx4_warn(dev, "Disabling sriov\n"); mlx4_warn(dev, "Disabling sriov\n");
pci_disable_sriov(pdev); pci_disable_sriov(pdev);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment