浏览代码

net: sh_eth: fix cache coherency issue

Fix the problem that may not work receive process by cache coherency issue.

Signed-off-by: Yoshihiro Shimoda <shimoda.yoshihiro@renesas.com>
Signed-off-by: Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Yoshihiro Shimoda 16 年之前
父节点
当前提交
e88aae7bb1
共有 1 个文件被更改,包括 4 次插入0 次删除
  1. 4 0
      drivers/net/sh_eth.c

+ 4 - 0
drivers/net/sh_eth.c

@@ -250,6 +250,8 @@ static void sh_eth_ring_format(struct net_device *ndev)
 		mdp->rx_skbuff[i] = skb;
 		if (skb == NULL)
 			break;
+		dma_map_single(&ndev->dev, skb->tail, mdp->rx_buf_sz,
+				DMA_FROM_DEVICE);
 		skb->dev = ndev; /* Mark as being used by this device. */
 #if defined(CONFIG_CPU_SUBTYPE_SH7763)
 		reserve = SH7763_SKB_ALIGN
@@ -559,6 +561,8 @@ static int sh_eth_rx(struct net_device *ndev)
 			mdp->rx_skbuff[entry] = skb;
 			if (skb == NULL)
 				break;	/* Better luck next round. */
+			dma_map_single(&ndev->dev, skb->tail, mdp->rx_buf_sz,
+					DMA_FROM_DEVICE);
 			skb->dev = ndev;
 #if defined(CONFIG_CPU_SUBTYPE_SH7763)
 			reserve = SH7763_SKB_ALIGN