Commit 184603d8 authored by Alexander Gordeev's avatar Alexander Gordeev Committed by David S. Miller

sfc: 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: Shradha Shah <sshah@solarflare.com>
Cc: linux-net-drivers@solarflare.com
Cc: netdev@vger.kernel.org
Cc: linux-pci@vger.kernel.org
Acked-by: default avatarShradha Shah <sshah@solarflare.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 50b483a1
...@@ -1344,20 +1344,23 @@ static int efx_probe_interrupts(struct efx_nic *efx) ...@@ -1344,20 +1344,23 @@ static int efx_probe_interrupts(struct efx_nic *efx)
for (i = 0; i < n_channels; i++) for (i = 0; i < n_channels; i++)
xentries[i].entry = i; xentries[i].entry = i;
rc = pci_enable_msix(efx->pci_dev, xentries, n_channels); rc = pci_enable_msix_range(efx->pci_dev,
if (rc > 0) { xentries, 1, n_channels);
if (rc < 0) {
/* Fall back to single channel MSI */
efx->interrupt_mode = EFX_INT_MODE_MSI;
netif_err(efx, drv, efx->net_dev,
"could not enable MSI-X\n");
} else if (rc < n_channels) {
netif_err(efx, drv, efx->net_dev, netif_err(efx, drv, efx->net_dev,
"WARNING: Insufficient MSI-X vectors" "WARNING: Insufficient MSI-X vectors"
" available (%d < %u).\n", rc, n_channels); " available (%d < %u).\n", rc, n_channels);
netif_err(efx, drv, efx->net_dev, netif_err(efx, drv, efx->net_dev,
"WARNING: Performance may be reduced.\n"); "WARNING: Performance may be reduced.\n");
EFX_BUG_ON_PARANOID(rc >= n_channels);
n_channels = rc; n_channels = rc;
rc = pci_enable_msix(efx->pci_dev, xentries,
n_channels);
} }
if (rc == 0) { if (rc > 0) {
efx->n_channels = n_channels; efx->n_channels = n_channels;
if (n_channels > extra_channels) if (n_channels > extra_channels)
n_channels -= extra_channels; n_channels -= extra_channels;
...@@ -1373,11 +1376,6 @@ static int efx_probe_interrupts(struct efx_nic *efx) ...@@ -1373,11 +1376,6 @@ static int efx_probe_interrupts(struct efx_nic *efx)
for (i = 0; i < efx->n_channels; i++) for (i = 0; i < efx->n_channels; i++)
efx_get_channel(efx, i)->irq = efx_get_channel(efx, i)->irq =
xentries[i].vector; xentries[i].vector;
} else {
/* Fall back to single channel MSI */
efx->interrupt_mode = EFX_INT_MODE_MSI;
netif_err(efx, drv, efx->net_dev,
"could not enable MSI-X\n");
} }
} }
......
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