Commit 7dc4c064 authored by Alexander Gordeev's avatar Alexander Gordeev Committed by David S. Miller

benet: Use pci_enable_msix_range() instead of pci_enable_msix()

As result of deprecation of MSI-X/MSI enablement functions
pci_enable_msix() and pci_enable_msi_block() all drivers
using these two interfaces need to be updated to use the
new pci_enable_msi_range() and pci_enable_msix_range()
interfaces.
Signed-off-by: default avatarAlexander Gordeev <agordeev@redhat.com>
Cc: Sathya Perla <sathya.perla@emulex.com>
Cc: Subbu Seetharaman <subbu.seetharaman@emulex.com>
Cc: Ajit Khaparde <ajit.khaparde@emulex.com>
Cc: netdev@vger.kernel.org
Cc: linux-pci@vger.kernel.org
Acked-by: default avatarSathya Perla <sathya.perla@emulex.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent abbb6a37
...@@ -2507,7 +2507,7 @@ static void be_msix_disable(struct be_adapter *adapter) ...@@ -2507,7 +2507,7 @@ static void be_msix_disable(struct be_adapter *adapter)
static int be_msix_enable(struct be_adapter *adapter) static int be_msix_enable(struct be_adapter *adapter)
{ {
int i, status, num_vec; int i, num_vec;
struct device *dev = &adapter->pdev->dev; struct device *dev = &adapter->pdev->dev;
/* If RoCE is supported, program the max number of NIC vectors that /* If RoCE is supported, program the max number of NIC vectors that
...@@ -2523,24 +2523,11 @@ static int be_msix_enable(struct be_adapter *adapter) ...@@ -2523,24 +2523,11 @@ static int be_msix_enable(struct be_adapter *adapter)
for (i = 0; i < num_vec; i++) for (i = 0; i < num_vec; i++)
adapter->msix_entries[i].entry = i; adapter->msix_entries[i].entry = i;
status = pci_enable_msix(adapter->pdev, adapter->msix_entries, num_vec); num_vec = pci_enable_msix_range(adapter->pdev, adapter->msix_entries,
if (status == 0) { MIN_MSIX_VECTORS, num_vec);
goto done; if (num_vec < 0)
} else if (status >= MIN_MSIX_VECTORS) { goto fail;
num_vec = status;
status = pci_enable_msix(adapter->pdev, adapter->msix_entries,
num_vec);
if (!status)
goto done;
}
dev_warn(dev, "MSIx enable failed\n");
/* INTx is not supported in VFs, so fail probe if enable_msix fails */
if (!be_physfn(adapter))
return status;
return 0;
done:
if (be_roce_supported(adapter) && num_vec > MIN_MSIX_VECTORS) { if (be_roce_supported(adapter) && num_vec > MIN_MSIX_VECTORS) {
adapter->num_msix_roce_vec = num_vec / 2; adapter->num_msix_roce_vec = num_vec / 2;
dev_info(dev, "enabled %d MSI-x vector(s) for RoCE\n", dev_info(dev, "enabled %d MSI-x vector(s) for RoCE\n",
...@@ -2552,6 +2539,14 @@ static int be_msix_enable(struct be_adapter *adapter) ...@@ -2552,6 +2539,14 @@ static int be_msix_enable(struct be_adapter *adapter)
dev_info(dev, "enabled %d MSI-x vector(s) for NIC\n", dev_info(dev, "enabled %d MSI-x vector(s) for NIC\n",
adapter->num_msix_vec); adapter->num_msix_vec);
return 0; return 0;
fail:
dev_warn(dev, "MSIx enable failed\n");
/* INTx is not supported in VFs, so fail probe if enable_msix fails */
if (!be_physfn(adapter))
return num_vec;
return 0;
} }
static inline int be_msix_vec_get(struct be_adapter *adapter, static inline int be_msix_vec_get(struct be_adapter *adapter,
......
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