summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRalf Bächle <ralf@linux-mips.org>2003-11-08 02:24:10 -0500
committerRalf Bächle <ralf@linux-mips.org>2003-11-08 02:24:10 -0500
commite9e3cd4bc0328528fbcc81a1d5c9175d464362e7 (patch)
tree48c5233978e403180ba01a3fa54ecc830bc79df2
parent215a574e0bc05a66769d11ddd4c2ca7d465e19b4 (diff)
[netdrvr pcnet32] add missing pci_dma_sync_single
a patch for the pcnet32.c driver which adds a missing call to pci_dma_sync_single. If a received packet is smaller than rx_copybreak the pcnet driver will recycle the receive buffer which requires calling pci_dma_sync_single. Patch is against 2.6 but I it's also needed in 2.4. Without that call the processor might still have old stale data in the data cache when the processor accesses the recycled buffer.
-rw-r--r--drivers/net/pcnet32.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/net/pcnet32.c b/drivers/net/pcnet32.c
index 2d519b696533..92fafabcd86b 100644
--- a/drivers/net/pcnet32.c
+++ b/drivers/net/pcnet32.c
@@ -1376,6 +1376,10 @@ pcnet32_rx(struct net_device *dev)
if (!rx_in_place) {
skb_reserve(skb,2); /* 16 byte align */
skb_put(skb,pkt_len); /* Make room */
+ pci_dma_sync_single(lp->pci_dev,
+ lp->rx_dma_addr[entry],
+ PKT_BUF_SZ,
+ PCI_DMA_FROMDEVICE);
eth_copy_and_sum(skb,
(unsigned char *)(lp->rx_skbuff[entry]->tail),
pkt_len,0);