2
0

610-v5.13-38-net-ethernet-mtk_eth_soc-unmap-RX-data-before-callin.patch 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. From 5196c417854942e218a59ec87bf7d414b3bd581e Mon Sep 17 00:00:00 2001
  2. From: Felix Fietkau <[email protected]>
  3. Date: Thu, 22 Apr 2021 22:20:55 -0700
  4. Subject: [PATCH] net: ethernet: mtk_eth_soc: unmap RX data before calling
  5. build_skb
  6. Since build_skb accesses the data area (for initializing shinfo), dma unmap
  7. needs to happen before that call
  8. Signed-off-by: Felix Fietkau <[email protected]>
  9. [Ilya: split build_skb cleanup fix into a separate commit]
  10. Signed-off-by: Ilya Lipnitskiy <[email protected]>
  11. Signed-off-by: David S. Miller <[email protected]>
  12. ---
  13. drivers/net/ethernet/mediatek/mtk_eth_soc.c | 5 +++--
  14. 1 file changed, 3 insertions(+), 2 deletions(-)
  15. --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
  16. +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
  17. @@ -1319,6 +1319,9 @@ static int mtk_poll_rx(struct napi_struc
  18. goto release_desc;
  19. }
  20. + dma_unmap_single(eth->dev, trxd.rxd1,
  21. + ring->buf_size, DMA_FROM_DEVICE);
  22. +
  23. /* receive data */
  24. skb = build_skb(data, ring->frag_size);
  25. if (unlikely(!skb)) {
  26. @@ -1328,8 +1331,6 @@ static int mtk_poll_rx(struct napi_struc
  27. }
  28. skb_reserve(skb, NET_SKB_PAD + NET_IP_ALIGN);
  29. - dma_unmap_single(eth->dev, trxd.rxd1,
  30. - ring->buf_size, DMA_FROM_DEVICE);
  31. pktlen = RX_DMA_GET_PLEN0(trxd.rxd2);
  32. skb->dev = netdev;
  33. skb_put(skb, pktlen);