diff options
author | Sergei Shtylyov <sergei.shtylyov@cogentembedded.com> | 2015-07-14 17:56:52 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2015-07-17 03:10:47 -0400 |
commit | e2370f07cf703c0920c99bc24de3d152262738f0 (patch) | |
tree | 774464cccb5fc59dc5785e83af1f3f3f478d1f7f /drivers/net | |
parent | 15afb10df4a3f1bd781373ffd968e70cc4b21a42 (diff) |
ravb: do not invalidate cache for RX buffer twice
First, dma_sync_single_for_cpu() shouldn't have been called in the first place
(it's a streaming DMA API), dma_unmap_single() should have been called instead.
Second, dma_unmap_single() call after handing the buffer to napi_gro_receive()
makes little sense. Moreover desc->dptr might not be valid at this point.
Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net')
-rw-r--r-- | drivers/net/ethernet/renesas/ravb_main.c | 10 |
1 files changed, 3 insertions, 7 deletions
diff --git a/drivers/net/ethernet/renesas/ravb_main.c b/drivers/net/ethernet/renesas/ravb_main.c index fd9745714d90..0e5fde321630 100644 --- a/drivers/net/ethernet/renesas/ravb_main.c +++ b/drivers/net/ethernet/renesas/ravb_main.c | |||
@@ -543,10 +543,9 @@ static bool ravb_rx(struct net_device *ndev, int *quota, int q) | |||
543 | 543 | ||
544 | skb = priv->rx_skb[q][entry]; | 544 | skb = priv->rx_skb[q][entry]; |
545 | priv->rx_skb[q][entry] = NULL; | 545 | priv->rx_skb[q][entry] = NULL; |
546 | dma_sync_single_for_cpu(&ndev->dev, | 546 | dma_unmap_single(&ndev->dev, le32_to_cpu(desc->dptr), |
547 | le32_to_cpu(desc->dptr), | 547 | ALIGN(PKT_BUF_SZ, 16), |
548 | ALIGN(PKT_BUF_SZ, 16), | 548 | DMA_FROM_DEVICE); |
549 | DMA_FROM_DEVICE); | ||
550 | get_ts &= (q == RAVB_NC) ? | 549 | get_ts &= (q == RAVB_NC) ? |
551 | RAVB_RXTSTAMP_TYPE_V2_L2_EVENT : | 550 | RAVB_RXTSTAMP_TYPE_V2_L2_EVENT : |
552 | ~RAVB_RXTSTAMP_TYPE_V2_L2_EVENT; | 551 | ~RAVB_RXTSTAMP_TYPE_V2_L2_EVENT; |
@@ -584,9 +583,6 @@ static bool ravb_rx(struct net_device *ndev, int *quota, int q) | |||
584 | if (!skb) | 583 | if (!skb) |
585 | break; /* Better luck next round. */ | 584 | break; /* Better luck next round. */ |
586 | ravb_set_buffer_align(skb); | 585 | ravb_set_buffer_align(skb); |
587 | dma_unmap_single(&ndev->dev, le32_to_cpu(desc->dptr), | ||
588 | ALIGN(PKT_BUF_SZ, 16), | ||
589 | DMA_FROM_DEVICE); | ||
590 | dma_addr = dma_map_single(&ndev->dev, skb->data, | 586 | dma_addr = dma_map_single(&ndev->dev, skb->data, |
591 | le16_to_cpu(desc->ds_cc), | 587 | le16_to_cpu(desc->ds_cc), |
592 | DMA_FROM_DEVICE); | 588 | DMA_FROM_DEVICE); |