aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/intel/ixgb/ixgb_main.c
diff options
context:
space:
mode:
authorRussell King <rmk+kernel@arm.linux.org.uk>2013-06-10 07:46:11 -0400
committerRussell King <rmk+kernel@arm.linux.org.uk>2013-09-21 16:01:25 -0400
commit590990362b939bc6edf8e05bd0f3146b33a42870 (patch)
treeb207cb4f9a9e8dfc49e2ee0b2e012fc43afb504f /drivers/net/ethernet/intel/ixgb/ixgb_main.c
parentc21b8ebc2f1613fd0a9d5aa0d0d1083aee8ca306 (diff)
DMA-API: net: intel/ixgb: 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) { pr_err("No usable DMA configuration, aborting\n"); goto err_dma_mask; } } } 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/ixgb/ixgb_main.c')
-rw-r--r--drivers/net/ethernet/intel/ixgb/ixgb_main.c16
1 files changed, 5 insertions, 11 deletions
diff --git a/drivers/net/ethernet/intel/ixgb/ixgb_main.c b/drivers/net/ethernet/intel/ixgb/ixgb_main.c
index 9f6b236828e6..57e390cbe6d0 100644
--- a/drivers/net/ethernet/intel/ixgb/ixgb_main.c
+++ b/drivers/net/ethernet/intel/ixgb/ixgb_main.c
@@ -408,20 +408,14 @@ ixgb_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
408 return err; 408 return err;
409 409
410 pci_using_dac = 0; 410 pci_using_dac = 0;
411 err = dma_set_mask(&pdev->dev, DMA_BIT_MASK(64)); 411 err = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64));
412 if (!err) { 412 if (!err) {
413 err = dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(64)); 413 pci_using_dac = 1;
414 if (!err)
415 pci_using_dac = 1;
416 } else { 414 } else {
417 err = dma_set_mask(&pdev->dev, DMA_BIT_MASK(32)); 415 err = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(32));
418 if (err) { 416 if (err) {
419 err = dma_set_coherent_mask(&pdev->dev, 417 pr_err("No usable DMA configuration, aborting\n");
420 DMA_BIT_MASK(32)); 418 goto err_dma_mask;
421 if (err) {
422 pr_err("No usable DMA configuration, aborting\n");
423 goto err_dma_mask;
424 }
425 } 419 }
426 } 420 }
427 421