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: Jack Morgenstein <jackm@dev.mellanox.co.il>
Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Jack Morgenstein 2012-05-15 10:35:01 +00:00 коммит произвёл David S. Miller
Родитель b9985f410a
Коммит 681372a7a3
1 изменённых файлов: 2 добавлений и 3 удалений

Просмотреть файл

@ -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 @@ err_cmd:
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)
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);
} }