mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2024-09-03 11:14:37 +03:00
ar71xx: ag71xx: use dma_unmap_single to unmap frames
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@20001 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
parent
fc4c3342f3
commit
54b41868d6
@ -38,7 +38,7 @@
|
|||||||
#define ETH_FCS_LEN 4
|
#define ETH_FCS_LEN 4
|
||||||
|
|
||||||
#define AG71XX_DRV_NAME "ag71xx"
|
#define AG71XX_DRV_NAME "ag71xx"
|
||||||
#define AG71XX_DRV_VERSION "0.5.29"
|
#define AG71XX_DRV_VERSION "0.5.30"
|
||||||
|
|
||||||
#define AG71XX_NAPI_WEIGHT 64
|
#define AG71XX_NAPI_WEIGHT 64
|
||||||
#define AG71XX_OOM_REFILL (1 + HZ/10)
|
#define AG71XX_OOM_REFILL (1 + HZ/10)
|
||||||
@ -88,8 +88,10 @@ struct ag71xx_desc {
|
|||||||
} __attribute__((aligned(4)));
|
} __attribute__((aligned(4)));
|
||||||
|
|
||||||
struct ag71xx_buf {
|
struct ag71xx_buf {
|
||||||
struct sk_buff *skb;
|
struct sk_buff *skb;
|
||||||
struct ag71xx_desc *desc;
|
struct ag71xx_desc *desc;
|
||||||
|
dma_addr_t dma_addr;
|
||||||
|
u32 pad;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ag71xx_ring {
|
struct ag71xx_ring {
|
||||||
|
@ -185,9 +185,11 @@ static void ag71xx_ring_rx_clean(struct ag71xx *ag)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
for (i = 0; i < AG71XX_RX_RING_SIZE; i++)
|
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);
|
kfree_skb(ring->buf[i].skb);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static int ag71xx_ring_rx_init(struct ag71xx *ag)
|
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,
|
AG71XX_RX_PKT_SIZE,
|
||||||
DMA_FROM_DEVICE);
|
DMA_FROM_DEVICE);
|
||||||
ring->buf[i].skb = skb;
|
ring->buf[i].skb = skb;
|
||||||
|
ring->buf[i].dma_addr = dma_addr;
|
||||||
ring->buf[i].desc->data = (u32) dma_addr;
|
ring->buf[i].desc->data = (u32) dma_addr;
|
||||||
ring->buf[i].desc->ctrl = DESC_EMPTY;
|
ring->buf[i].desc->ctrl = DESC_EMPTY;
|
||||||
}
|
}
|
||||||
@ -264,6 +267,7 @@ static int ag71xx_ring_rx_refill(struct ag71xx *ag)
|
|||||||
DMA_FROM_DEVICE);
|
DMA_FROM_DEVICE);
|
||||||
|
|
||||||
ring->buf[i].skb = skb;
|
ring->buf[i].skb = skb;
|
||||||
|
ring->buf[i].dma_addr = dma_addr;
|
||||||
ring->buf[i].desc->data = (u32) 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 = ag71xx_desc_pktlen(desc);
|
||||||
pktlen -= ETH_FCS_LEN;
|
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_put(skb, pktlen);
|
||||||
|
|
||||||
skb->dev = dev;
|
skb->dev = dev;
|
||||||
|
Loading…
Reference in New Issue
Block a user