Yes, this fix is correct... I made the same patch locally... sorry we
haven't submited it yet... turns out we've dropeed this one from our
own latest sources; thanks for the reminder. :-)
Note that there is another problem with cache line invalidation and
the use of pci_dma_sync_single(), where one can get stale entries in
the cache when the buffer is next re-used for DMA.
My co-worker Will Jhun <mailto:wjhun@ayrnetworks.com> just sent
e-mail on the subject of problems with the cache invalidation
routines last Saturday, with Message-ID:
<20020525131806.A4073@ayrnetworks.com>
Kevin
At 12:46 PM +0200 5/29/02, Brian Murphy wrote:
If I don't apply the following patch to pcnet32.c then the network connection
on my vr5000 box is extremely jerky. It also seems quite sensible to have a
dma sync operation here.
any comments?
/Brian
--- drivers/net/pcnet32.c 19 Mar 2002 16:40:55 -0000 1.1.1.1.2.1.2.6
+++ drivers/net/pcnet32.c 29 May 2002 09:57:33 -0000 1.13.4.2
@@ -1343,6 +1351,10 @@
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_skbuff[entry]->tail,
+ pkt_len,
+ PCI_DMA_FROMDEVICE);
eth_copy_and_sum(skb,
(unsigned char
*)(lp->rx_skbuff[entry]->tail),
pkt_len,0);
--
|