aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/intel
diff options
context:
space:
mode:
authorRussell King <rmk+kernel@arm.linux.org.uk>2013-06-10 07:26:32 -0400
committerRussell King <rmk+kernel@arm.linux.org.uk>2013-09-21 16:01:14 -0400
commitc21b8ebc2f1613fd0a9d5aa0d0d1083aee8ca306 (patch)
tree6061608ac67fff6645e48ada3baa07dbc110496d /drivers/net/ethernet/intel
parentdc4ff9bb7534ebd153f8441ec0e9190964ad8944 (diff)
DMA-API: net: intel/igbvf: fix 32-bit DMA mask handling
The fallback to 32-bit DMA mask is rather odd: err = dma_set_mask(&pdev->dev, DMA_BIT_MASK(64)); if (!err) { err = dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(64)); if (!err) pci_using_dac = 1; } else { err = dma_set_mask(&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, "No usable DMA " "configuration, aborting\n"); goto err_dma; } } } This means we only set the coherent DMA mask in the fallback path if the DMA mask set failed, which is silly. This fixes it to set the coherent DMA mask only if dma_set_mask() succeeded, and to error out if either fails. Acked-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'drivers/net/ethernet/intel')
-rw-r--r--drivers/net/ethernet/intel/igbvf/netdev.c18
1 files changed, 6 insertions, 12 deletions
diff --git a/drivers/net/ethernet/intel/igbvf/netdev.c b/drivers/net/ethernet/intel/igbvf/netdev.c
index 93eb7ee06d3e..4e6b02fbe652 100644
--- a/drivers/net/ethernet/intel/igbvf/netdev.c
+++ b/drivers/net/ethernet/intel/igbvf/netdev.c
@@ -2638,21 +2638,15 @@ static int igbvf_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
2638 return err; 2638 return err;
2639 2639
2640 pci_using_dac = 0; 2640 pci_using_dac = 0;
2641 err = dma_set_mask(&pdev->dev, DMA_BIT_MASK(64)); 2641 err = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64));
2642 if (!err) { 2642 if (!err) {
2643 err = dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(64)); 2643 pci_using_dac = 1;
2644 if (!err)
2645 pci_using_dac = 1;
2646 } else { 2644 } else {
2647 err = dma_set_mask(&pdev->dev, DMA_BIT_MASK(32)); 2645 err = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(32));
2648 if (err) { 2646 if (err) {
2649 err = dma_set_coherent_mask(&pdev->dev, 2647 dev_err(&pdev->dev, "No usable DMA "
2650 DMA_BIT_MASK(32)); 2648 "configuration, aborting\n");
2651 if (err) { 2649 goto err_dma;
2652 dev_err(&pdev->dev, "No usable DMA "
2653 "configuration, aborting\n");
2654 goto err_dma;
2655 }
2656 } 2650 }
2657 } 2651 }
2658 2652