OSDN Git Service

igc: Improve the DMA mapping flow
authorSasha Neftin <sasha.neftin@intel.com>
Tue, 5 Nov 2019 09:44:13 +0000 (11:44 +0200)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Tue, 31 Dec 2019 19:17:25 +0000 (11:17 -0800)
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>
drivers/net/ethernet/intel/igc/igc_main.c

index 75dcaa8..91acce2 100644 (file)
@@ -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;