[ar71xx] ag71xx driver: don't use dma_cache_wback_inv
[openwrt.git] / target / linux / ar71xx / files / drivers / net / ag71xx / ag71xx_main.c
index 6793b4d..16dc029 100644 (file)
@@ -196,6 +196,9 @@ static int ag71xx_ring_rx_init(struct ag71xx *ag)
                        break;
                }
 
+               dma_map_single(NULL, skb->data, AG71XX_RX_PKT_SIZE,
+                               DMA_FROM_DEVICE);
+
                skb->dev = ag->dev;
                skb_reserve(skb, AG71XX_RX_PKT_RESERVE);
 
@@ -234,8 +237,12 @@ static int ag71xx_ring_rx_refill(struct ag71xx *ag)
                                break;
                        }
 
+                       dma_map_single(NULL, skb->data, AG71XX_RX_PKT_SIZE,
+                                       DMA_FROM_DEVICE);
+
                        skb_reserve(skb, AG71XX_RX_PKT_RESERVE);
                        skb->dev = ag->dev;
+
                        ring->buf[i].skb = skb;
                        ring->descs[i].data = virt_to_phys(skb->data);
                }
@@ -468,7 +475,7 @@ static int ag71xx_hard_start_xmit(struct sk_buff *skb, struct net_device *dev)
                goto err_drop;
        }
 
-       dma_cache_wback_inv((unsigned long)skb->data, skb->len);
+       dma_map_single(NULL, skb->data, skb->len, DMA_TO_DEVICE);
 
        ring->buf[i].skb = skb;
 
@@ -621,8 +628,6 @@ static int ag71xx_rx_packets(struct ag71xx *ag, int limit)
                pktlen = ag71xx_desc_pktlen(desc);
                pktlen -= ETH_FCS_LEN;
 
-               /* TODO: move it into the refill function */
-               dma_cache_wback_inv((unsigned long)skb->data, pktlen);
                skb_put(skb, pktlen);
 
                skb->dev = dev;
This page took 0.033895 seconds and 4 git commands to generate.