diff options
author | Kevin Hao <kexin.hao@windriver.com> | 2008-06-21 18:20:35 +0800 |
---|---|---|
committer | Jeff Garzik <jgarzik@redhat.com> | 2008-06-27 01:30:59 -0400 |
commit | 1923815d855e1daec931fc9f2221fb73ca708870 (patch) | |
tree | 35a9b71110068267ad827bba2b2df7cdc585f6fb /drivers/net/e100.c | |
parent | 70081ac55df939363b27c1ebd27c51f510129139 (diff) | |
download | linux-1923815d855e1daec931fc9f2221fb73ca708870.tar.gz linux-1923815d855e1daec931fc9f2221fb73ca708870.tar.bz2 linux-1923815d855e1daec931fc9f2221fb73ca708870.zip |
e100: Do pci_dma_sync after skb_alloc for proper operation on ixp4xx
The E100 device can't work on current kernel (2.6.26-rc6) and will cause
kernel corruption on intel ixdp4xx.
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
Diffstat (limited to 'drivers/net/e100.c')
-rw-r--r-- | drivers/net/e100.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/net/e100.c b/drivers/net/e100.c index f3cba5e24ec5..1037b1332312 100644 --- a/drivers/net/e100.c +++ b/drivers/net/e100.c @@ -1803,6 +1803,8 @@ static int e100_rx_alloc_skb(struct nic *nic, struct rx *rx) if (rx->prev->skb) { struct rfd *prev_rfd = (struct rfd *)rx->prev->skb->data; put_unaligned_le32(rx->dma_addr, &prev_rfd->link); + pci_dma_sync_single_for_device(nic->pdev, rx->prev->dma_addr, + sizeof(struct rfd), PCI_DMA_TODEVICE); } return 0; |