summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLucas Stach <dev@lynxeye.de>2015-01-04 22:09:05 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2015-01-05 12:52:37 +0100
commit36138c6e1b3acfc6fd177a0c7470a4bc79a48ebd (patch)
tree17dd19bca6f70bcf6cfa3c4df164480d5f5e746a
parentae2448181adc73f66e31648a8bf3645c4b3f2b47 (diff)
downloadbarebox-36138c6e1b3acfc6fd177a0c7470a4bc79a48ebd.tar.gz
barebox-36138c6e1b3acfc6fd177a0c7470a4bc79a48ebd.tar.xz
net: rtl8169: remove unnecessary cache maintenance
The buffer descriptors are allocated from coherent memory, so there is no cache maintenance needed. Only tell the compiler that the descriptors can be modified by the hardware. Signed-off-by: Lucas Stach <dev@lynxeye.de> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r--drivers/net/rtl8169.c24
1 files changed, 5 insertions, 19 deletions
diff --git a/drivers/net/rtl8169.c b/drivers/net/rtl8169.c
index 5702900e49..19f5763c87 100644
--- a/drivers/net/rtl8169.c
+++ b/drivers/net/rtl8169.c
@@ -50,11 +50,11 @@ struct rtl8169_priv {
struct pci_dev *pci_dev;
int chipset;
- struct bufdesc *tx_desc;
+ volatile struct bufdesc *tx_desc;
void *tx_buf;
unsigned int cur_tx;
- struct bufdesc *rx_desc;
+ volatile struct bufdesc *rx_desc;
void *rx_buf;
unsigned int cur_rx;
@@ -250,10 +250,6 @@ static void rtl8169_init_ring(struct rtl8169_priv *priv)
priv->rx_desc[i].buf_addr =
virt_to_phys(priv->rx_buf + i * PKT_BUF_SIZE);
}
-
- dma_flush_range((unsigned long)priv->rx_desc,
- (unsigned long)priv->rx_desc +
- NUM_RX_DESC * sizeof(struct bufdesc));
}
static void rtl8169_hw_start(struct rtl8169_priv *priv)
@@ -386,14 +382,10 @@ static int rtl8169_eth_send(struct eth_device *edev, void *packet,
((packet_length > ETH_ZLEN) ? packet_length : ETH_ZLEN);
}
- dma_flush_range((unsigned long)&priv->tx_desc[entry],
- (unsigned long)&priv->tx_desc[entry + 1]);
-
RTL_W8(priv, TxPoll, 0x40);
- do {
- dma_inv_range((unsigned long)&priv->tx_desc[entry],
- (unsigned long)&priv->tx_desc[entry + 1]);
- } while (priv->tx_desc[entry].status & BD_STAT_OWN);
+
+ while (priv->tx_desc[entry].status & BD_STAT_OWN)
+ ;
priv->cur_tx++;
@@ -408,9 +400,6 @@ static int rtl8169_eth_rx(struct eth_device *edev)
entry = priv->cur_rx % NUM_RX_DESC;
- dma_inv_range((unsigned long)&priv->rx_desc[entry],
- (unsigned long)&priv->rx_desc[entry + 1]);
-
if ((priv->rx_desc[entry].status & BD_STAT_OWN) == 0) {
if (!(priv->rx_desc[entry].status & BD_STAT_RX_RES)) {
pkt_size = (priv->rx_desc[entry].status & 0x1fff) - 4;
@@ -441,9 +430,6 @@ static int rtl8169_eth_rx(struct eth_device *edev)
priv->rx_desc[entry].buf_addr =
virt_to_phys(priv->rx_buf +
entry * PKT_BUF_SIZE);
-
- dma_flush_range((unsigned long)&priv->rx_desc[entry],
- (unsigned long)&priv->rx_desc[entry + 1]);
} else {
dev_err(&edev->dev, "rx error\n");
}