diff options
author | Edward Cree <ecree@solarflare.com> | 2020-09-07 19:15:48 +0300 |
---|---|---|
committer | Jakub Kicinski <kuba@kernel.org> | 2020-09-08 00:46:13 +0300 |
commit | 08bdbcae290ba89fe451b3a186d7c1409397838d (patch) | |
tree | 1570d14255127ff410973c7bdf1a55cdec8a7520 /drivers/net | |
parent | 60bd2a2d1f601a7c0efbf8a956f6c920bbee9ad9 (diff) | |
download | linux-08bdbcae290ba89fe451b3a186d7c1409397838d.tar.xz |
sfc: simplify DMA mask setting
Christoph says[1] that dma_set_mask_and_coherent() is smart enough to
truncate the mask itself if it's too long. So we can get rid of our
"lop off one bit and retry" loop in efx_init_io().
[1]: https://www.spinics.net/lists/netdev/msg677266.html
Signed-off-by: Edward Cree <ecree@solarflare.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'drivers/net')
-rw-r--r-- | drivers/net/ethernet/sfc/efx_common.c | 12 |
1 files changed, 1 insertions, 11 deletions
diff --git a/drivers/net/ethernet/sfc/efx_common.c b/drivers/net/ethernet/sfc/efx_common.c index 9eda54e27cd4..80a23def96ad 100644 --- a/drivers/net/ethernet/sfc/efx_common.c +++ b/drivers/net/ethernet/sfc/efx_common.c @@ -1086,17 +1086,7 @@ int efx_init_io(struct efx_nic *efx, int bar, dma_addr_t dma_mask, pci_set_master(pci_dev); - /* Set the PCI DMA mask. Try all possibilities from our - * genuine mask down to 32 bits, because some architectures - * (e.g. x86_64 with iommu_sac_force set) will allow 40 bit - * masks event though they reject 46 bit masks. - */ - while (dma_mask > 0x7fffffffUL) { - rc = dma_set_mask_and_coherent(&pci_dev->dev, dma_mask); - if (rc == 0) - break; - dma_mask >>= 1; - } + rc = dma_set_mask_and_coherent(&pci_dev->dev, dma_mask); if (rc) { netif_err(efx, probe, efx->net_dev, "could not find a suitable DMA mask\n"); |