aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/intel
diff options
context:
space:
mode:
authorRussell King <rmk+kernel@arm.linux.org.uk>2013-06-10 07:22:30 -0400
committerRussell King <rmk+kernel@arm.linux.org.uk>2013-09-21 16:00:39 -0400
commit718a39eb587e038f7ded076afcfd8d709879139f (patch)
tree550ec0748859511163f58c313272893a94e99e1a /drivers/net/ethernet/intel
parent3e5480791e3b0e239d2cd4e5ecd43a7d2585484b (diff)
DMA-API: net: intel/e1000e: 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/e1000e/netdev.c18
1 files changed, 6 insertions, 12 deletions
diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c
index e87e9b01f404..519e293a8f38 100644
--- a/drivers/net/ethernet/intel/e1000e/netdev.c
+++ b/drivers/net/ethernet/intel/e1000e/netdev.c
@@ -6553,21 +6553,15 @@ static int e1000_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
6553 return err; 6553 return err;
6554 6554
6555 pci_using_dac = 0; 6555 pci_using_dac = 0;
6556 err = dma_set_mask(&pdev->dev, DMA_BIT_MASK(64)); 6556 err = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64));
6557 if (!err) { 6557 if (!err) {
6558 err = dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(64)); 6558 pci_using_dac = 1;
6559 if (!err)
6560 pci_using_dac = 1;
6561 } else { 6559 } else {
6562 err = dma_set_mask(&pdev->dev, DMA_BIT_MASK(32)); 6560 err = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(32));
6563 if (err) { 6561 if (err) {
6564 err = dma_set_coherent_mask(&pdev->dev, 6562 dev_err(&pdev->dev,
6565 DMA_BIT_MASK(32)); 6563 "No usable DMA configuration, aborting\n");
6566 if (err) { 6564 goto err_dma;
6567 dev_err(&pdev->dev,
6568 "No usable DMA configuration, aborting\n");
6569 goto err_dma;
6570 }
6571 } 6565 }
6572 } 6566 }
6573 6567