aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/sfc/efx.c
diff options
context:
space:
mode:
authorAlexander Gordeev <agordeev@redhat.com>2014-02-18 05:12:00 -0500
committerDavid S. Miller <davem@davemloft.net>2014-02-18 15:33:34 -0500
commit184603d8825773afae24279e055440dddada478d (patch)
tree20da459f5f4f4710946a7766aa972ee55cd14eba /drivers/net/ethernet/sfc/efx.c
parent50b483a1457abd6fe27117f0507297e107ef42b2 (diff)
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: Alexander 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: Shradha Shah <sshah@solarflare.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/sfc/efx.c')
-rw-r--r--drivers/net/ethernet/sfc/efx.c20
1 files changed, 9 insertions, 11 deletions
diff --git a/drivers/net/ethernet/sfc/efx.c b/drivers/net/ethernet/sfc/efx.c
index 62d1a78984c1..d72e0038a740 100644
--- a/drivers/net/ethernet/sfc/efx.c
+++ b/drivers/net/ethernet/sfc/efx.c
@@ -1344,20 +1344,23 @@ static int efx_probe_interrupts(struct efx_nic *efx)
1344 1344
1345 for (i = 0; i < n_channels; i++) 1345 for (i = 0; i < n_channels; i++)
1346 xentries[i].entry = i; 1346 xentries[i].entry = i;
1347 rc = pci_enable_msix(efx->pci_dev, xentries, n_channels); 1347 rc = pci_enable_msix_range(efx->pci_dev,
1348 if (rc > 0) { 1348 xentries, 1, n_channels);
1349 if (rc < 0) {
1350 /* Fall back to single channel MSI */
1351 efx->interrupt_mode = EFX_INT_MODE_MSI;
1352 netif_err(efx, drv, efx->net_dev,
1353 "could not enable MSI-X\n");
1354 } else if (rc < n_channels) {
1349 netif_err(efx, drv, efx->net_dev, 1355 netif_err(efx, drv, efx->net_dev,
1350 "WARNING: Insufficient MSI-X vectors" 1356 "WARNING: Insufficient MSI-X vectors"
1351 " available (%d < %u).\n", rc, n_channels); 1357 " available (%d < %u).\n", rc, n_channels);
1352 netif_err(efx, drv, efx->net_dev, 1358 netif_err(efx, drv, efx->net_dev,
1353 "WARNING: Performance may be reduced.\n"); 1359 "WARNING: Performance may be reduced.\n");
1354 EFX_BUG_ON_PARANOID(rc >= n_channels);
1355 n_channels = rc; 1360 n_channels = rc;
1356 rc = pci_enable_msix(efx->pci_dev, xentries,
1357 n_channels);
1358 } 1361 }
1359 1362
1360 if (rc == 0) { 1363 if (rc > 0) {
1361 efx->n_channels = n_channels; 1364 efx->n_channels = n_channels;
1362 if (n_channels > extra_channels) 1365 if (n_channels > extra_channels)
1363 n_channels -= extra_channels; 1366 n_channels -= extra_channels;
@@ -1373,11 +1376,6 @@ static int efx_probe_interrupts(struct efx_nic *efx)
1373 for (i = 0; i < efx->n_channels; i++) 1376 for (i = 0; i < efx->n_channels; i++)
1374 efx_get_channel(efx, i)->irq = 1377 efx_get_channel(efx, i)->irq =
1375 xentries[i].vector; 1378 xentries[i].vector;
1376 } else {
1377 /* Fall back to single channel MSI */
1378 efx->interrupt_mode = EFX_INT_MODE_MSI;
1379 netif_err(efx, drv, efx->net_dev,
1380 "could not enable MSI-X\n");
1381 } 1379 }
1382 } 1380 }
1383 1381