Skip to content

Commit

Permalink
atl1: disable broken 64-bit DMA
Browse files Browse the repository at this point in the history
64-bit DMA causes data corruption with atl1.  We don't know why, and Atheros
is working on it.  For now, just use 32-bit DMA.  This is a big hack that is
probably wrong, but it stops the bleeding.

Signed-off-by: Luca Tettamanti <kronos.it@gmail.com>
Acked-by: Chris Snook <csnook@redhat.com>
Acked-by: Jay Cliburn <jacliburn@bellsouth.net>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
  • Loading branch information
Luca Tettamanti authored and Jeff Garzik committed Sep 13, 2007
1 parent c87ce65 commit 5f08e46
Showing 1 changed file with 7 additions and 12 deletions.
19 changes: 7 additions & 12 deletions drivers/net/atl1/atl1_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -2203,21 +2203,20 @@ static int __devinit atl1_probe(struct pci_dev *pdev,
struct net_device *netdev;
struct atl1_adapter *adapter;
static int cards_found = 0;
bool pci_using_64 = true;
int err;

err = pci_enable_device(pdev);
if (err)
return err;

err = pci_set_dma_mask(pdev, DMA_64BIT_MASK);
/*
* 64-bit DMA currently has data corruption problems, so let's just
* use 32-bit DMA for now. This is a big hack that is probably wrong.
*/
err = pci_set_dma_mask(pdev, DMA_32BIT_MASK);
if (err) {
err = pci_set_dma_mask(pdev, DMA_32BIT_MASK);
if (err) {
dev_err(&pdev->dev, "no usable DMA configuration\n");
goto err_dma;
}
pci_using_64 = false;
dev_err(&pdev->dev, "no usable DMA configuration\n");
goto err_dma;
}
/* Mark all PCI regions associated with PCI device
* pdev as being reserved by owner atl1_driver_name
Expand Down Expand Up @@ -2282,7 +2281,6 @@ static int __devinit atl1_probe(struct pci_dev *pdev,

netdev->ethtool_ops = &atl1_ethtool_ops;
adapter->bd_number = cards_found;
adapter->pci_using_64 = pci_using_64;

/* setup the private structure */
err = atl1_sw_init(adapter);
Expand All @@ -2299,9 +2297,6 @@ static int __devinit atl1_probe(struct pci_dev *pdev,
*/
/* netdev->features |= NETIF_F_TSO; */

if (pci_using_64)
netdev->features |= NETIF_F_HIGHDMA;

netdev->features |= NETIF_F_LLTX;

/*
Expand Down

0 comments on commit 5f08e46

Please sign in to comment.