summaryrefslogtreecommitdiffstats
path: root/drivers/net/e100.c
diff options
context:
space:
mode:
authorKevin Hao <kexin.hao@windriver.com>2008-06-21 18:20:35 +0800
committerJeff Garzik <jgarzik@redhat.com>2008-06-27 01:30:59 -0400
commit1923815d855e1daec931fc9f2221fb73ca708870 (patch)
tree35a9b71110068267ad827bba2b2df7cdc585f6fb /drivers/net/e100.c
parent70081ac55df939363b27c1ebd27c51f510129139 (diff)
downloadlinux-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.c2
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;