diff options
author | Don Fry <pcnet32@verizon.net> | 2007-03-05 21:13:09 -0500 |
---|---|---|
committer | Jeff Garzik <jeff@garzik.org> | 2007-03-06 06:14:54 -0500 |
commit | b2cbbd8e0e8093fbf115ac2669482b016d781c78 (patch) | |
tree | 04d96724cf39fb65e7209da608fcda0f22d14666 /drivers | |
parent | 4c44fd009ae79fc04e2c049f708792ad83400dde (diff) |
pcnet32: Fix PCnet32 performance bug on non-coherent architecutres
The PCnet32 driver always passed the the size of the largest possible packet
to the pci_dma_sync_single_for_cpu and pci_dma_sync_single_for_device.
This results in a fairly large "colateral damage" in the caches and makes
the flush operation itself much slower. On a system with a 40MHz CPU this
patch increases network bandwidth by about 12%.
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Acked-by: Don Fry <pcnet32@verizon.net>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/pcnet32.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/net/pcnet32.c b/drivers/net/pcnet32.c index 36f9d988278f..4d94ba7899bf 100644 --- a/drivers/net/pcnet32.c +++ b/drivers/net/pcnet32.c | |||
@@ -1234,14 +1234,14 @@ static void pcnet32_rx_entry(struct net_device *dev, | |||
1234 | skb_put(skb, pkt_len); /* Make room */ | 1234 | skb_put(skb, pkt_len); /* Make room */ |
1235 | pci_dma_sync_single_for_cpu(lp->pci_dev, | 1235 | pci_dma_sync_single_for_cpu(lp->pci_dev, |
1236 | lp->rx_dma_addr[entry], | 1236 | lp->rx_dma_addr[entry], |
1237 | PKT_BUF_SZ - 2, | 1237 | pkt_len, |
1238 | PCI_DMA_FROMDEVICE); | 1238 | PCI_DMA_FROMDEVICE); |
1239 | eth_copy_and_sum(skb, | 1239 | eth_copy_and_sum(skb, |
1240 | (unsigned char *)(lp->rx_skbuff[entry]->data), | 1240 | (unsigned char *)(lp->rx_skbuff[entry]->data), |
1241 | pkt_len, 0); | 1241 | pkt_len, 0); |
1242 | pci_dma_sync_single_for_device(lp->pci_dev, | 1242 | pci_dma_sync_single_for_device(lp->pci_dev, |
1243 | lp->rx_dma_addr[entry], | 1243 | lp->rx_dma_addr[entry], |
1244 | PKT_BUF_SZ - 2, | 1244 | pkt_len, |
1245 | PCI_DMA_FROMDEVICE); | 1245 | PCI_DMA_FROMDEVICE); |
1246 | } | 1246 | } |
1247 | lp->stats.rx_bytes += skb->len; | 1247 | lp->stats.rx_bytes += skb->len; |