summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSasha Neftin <sasha.neftin@intel.com>2019-11-05 11:44:13 +0200
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>2019-12-31 11:17:25 -0800
commit21da01fd3bb1124b46e6b15657de36dffcc58af9 (patch)
treef8a32c684aa8e8791f34207814710a9ef2f5fa40
parentb7b462454a5c2aed1d8aecd165d1dae9017bd5fd (diff)
downloadlinux-stable-21da01fd3bb1124b46e6b15657de36dffcc58af9.tar.gz
linux-stable-21da01fd3bb1124b46e6b15657de36dffcc58af9.tar.bz2
linux-stable-21da01fd3bb1124b46e6b15657de36dffcc58af9.zip
igc: Improve the DMA mapping flow
Improve the probe flow and set both the DMA mask and the coherent to the same thing. Make the flow optimized and cleared. Signed-off-by: Sasha Neftin <sasha.neftin@intel.com> Tested-by: Aaron Brown <aaron.f.brown@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
-rw-r--r--drivers/net/ethernet/intel/igc/igc_main.c24
1 files changed, 9 insertions, 15 deletions
diff --git a/drivers/net/ethernet/intel/igc/igc_main.c b/drivers/net/ethernet/intel/igc/igc_main.c
index 75dcaa87d06b..91acce2e1d1c 100644
--- a/drivers/net/ethernet/intel/igc/igc_main.c
+++ b/drivers/net/ethernet/intel/igc/igc_main.c
@@ -4345,32 +4345,26 @@ static int igc_probe(struct pci_dev *pdev,
struct net_device *netdev;
struct igc_hw *hw;
const struct igc_info *ei = igc_info_tbl[ent->driver_data];
- int err;
+ int err, pci_using_dac;
err = pci_enable_device_mem(pdev);
if (err)
return err;
- err = dma_set_mask(&pdev->dev, DMA_BIT_MASK(64));
+ pci_using_dac = 0;
+ err = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64));
if (!err) {
- err = dma_set_coherent_mask(&pdev->dev,
- DMA_BIT_MASK(64));
+ pci_using_dac = 1;
} else {
- err = dma_set_mask(&pdev->dev, DMA_BIT_MASK(32));
+ err = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(32));
if (err) {
- err = dma_set_coherent_mask(&pdev->dev,
- DMA_BIT_MASK(32));
- if (err) {
- dev_err(&pdev->dev, "igc: Wrong DMA config\n");
- goto err_dma;
- }
+ dev_err(&pdev->dev,
+ "No usable DMA configuration, aborting\n");
+ goto err_dma;
}
}
- err = pci_request_selected_regions(pdev,
- pci_select_bars(pdev,
- IORESOURCE_MEM),
- igc_driver_name);
+ err = pci_request_mem_regions(pdev, igc_driver_name);
if (err)
goto err_pci_reg;