summaryrefslogtreecommitdiffstats
path: root/target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx_main.c
diff options
context:
space:
mode:
authorGabor Juhos <juhosg@openwrt.org>2010-03-05 20:29:10 +0000
committerGabor Juhos <juhosg@openwrt.org>2010-03-05 20:29:10 +0000
commitba288eeb84062299974a0087ae8ba39517086e85 (patch)
tree16c1c1c4e953c68cfde8ba0332e7f5113d5363a7 /target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx_main.c
parent52564dc5e38d7eac33b6dd68b84cb0f7d7af955d (diff)
downloadmaster-31e0f0ae-ba288eeb84062299974a0087ae8ba39517086e85.tar.gz
master-31e0f0ae-ba288eeb84062299974a0087ae8ba39517086e85.tar.bz2
master-31e0f0ae-ba288eeb84062299974a0087ae8ba39517086e85.zip
ar71xx: ag71xx: use dma_unmap_single to unmap frames
SVN-Revision: 20001
Diffstat (limited to 'target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx_main.c')
-rw-r--r--target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx_main.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx_main.c b/target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx_main.c
index a3edd43aaf..cb4ccf06b6 100644
--- a/target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx_main.c
+++ b/target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx_main.c
@@ -185,9 +185,11 @@ static void ag71xx_ring_rx_clean(struct ag71xx *ag)
return;
for (i = 0; i < AG71XX_RX_RING_SIZE; i++)
- if (ring->buf[i].skb)
+ if (ring->buf[i].skb) {
+ dma_unmap_single(&ag->dev->dev, ring->buf[i].dma_addr,
+ AG71XX_RX_PKT_SIZE, DMA_FROM_DEVICE);
kfree_skb(ring->buf[i].skb);
-
+ }
}
static int ag71xx_ring_rx_init(struct ag71xx *ag)
@@ -223,6 +225,7 @@ static int ag71xx_ring_rx_init(struct ag71xx *ag)
AG71XX_RX_PKT_SIZE,
DMA_FROM_DEVICE);
ring->buf[i].skb = skb;
+ ring->buf[i].dma_addr = dma_addr;
ring->buf[i].desc->data = (u32) dma_addr;
ring->buf[i].desc->ctrl = DESC_EMPTY;
}
@@ -264,6 +267,7 @@ static int ag71xx_ring_rx_refill(struct ag71xx *ag)
DMA_FROM_DEVICE);
ring->buf[i].skb = skb;
+ ring->buf[i].dma_addr = dma_addr;
ring->buf[i].desc->data = (u32) dma_addr;
}
@@ -684,6 +688,9 @@ static int ag71xx_rx_packets(struct ag71xx *ag, int limit)
pktlen = ag71xx_desc_pktlen(desc);
pktlen -= ETH_FCS_LEN;
+ dma_unmap_single(&dev->dev, ring->buf[i].dma_addr,
+ AG71XX_RX_PKT_SIZE, DMA_FROM_DEVICE);
+
skb_put(skb, pktlen);
skb->dev = dev;