diff options
author | Alexander Gordeev <agordeev@redhat.com> | 2014-02-18 05:12:00 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-02-18 15:33:34 -0500 |
commit | 184603d8825773afae24279e055440dddada478d (patch) | |
tree | 20da459f5f4f4710946a7766aa972ee55cd14eba /drivers/net/ethernet/sfc/efx.c | |
parent | 50b483a1457abd6fe27117f0507297e107ef42b2 (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.c | 20 |
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 | ||