702-v5.19-33-net-ethernet-mtk_eth_soc-enable-rx-cksum-offload-for.patch 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. From: Lorenzo Bianconi <[email protected]>
  2. Date: Mon, 6 Jun 2022 21:49:00 +0200
  3. Subject: [PATCH] net: ethernet: mtk_eth_soc: enable rx cksum offload for
  4. MTK_NETSYS_V2
  5. Enable rx checksum offload for mt7986 chipset.
  6. Signed-off-by: Lorenzo Bianconi <[email protected]>
  7. Link: https://lore.kernel.org/r/c8699805c18f7fd38315fcb8da2787676d83a32c.1654544585.git.lorenzo@kernel.org
  8. Signed-off-by: Jakub Kicinski <[email protected]>
  9. ---
  10. --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
  11. +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
  12. @@ -1473,8 +1473,8 @@ static int mtk_poll_rx(struct napi_struc
  13. int done = 0, bytes = 0;
  14. while (done < budget) {
  15. + unsigned int pktlen, *rxdcsum;
  16. struct net_device *netdev;
  17. - unsigned int pktlen;
  18. dma_addr_t dma_addr;
  19. u32 hash, reason;
  20. int mac = 0;
  21. @@ -1541,7 +1541,13 @@ static int mtk_poll_rx(struct napi_struc
  22. pktlen = RX_DMA_GET_PLEN0(trxd.rxd2);
  23. skb->dev = netdev;
  24. skb_put(skb, pktlen);
  25. - if (trxd.rxd4 & eth->soc->txrx.rx_dma_l4_valid)
  26. +
  27. + if (MTK_HAS_CAPS(eth->soc->caps, MTK_NETSYS_V2))
  28. + rxdcsum = &trxd.rxd3;
  29. + else
  30. + rxdcsum = &trxd.rxd4;
  31. +
  32. + if (*rxdcsum & eth->soc->txrx.rx_dma_l4_valid)
  33. skb->ip_summed = CHECKSUM_UNNECESSARY;
  34. else
  35. skb_checksum_none_assert(skb);
  36. @@ -3765,6 +3771,7 @@ static const struct mtk_soc_data mt7986_
  37. .txd_size = sizeof(struct mtk_tx_dma_v2),
  38. .rxd_size = sizeof(struct mtk_rx_dma_v2),
  39. .rx_irq_done_mask = MTK_RX_DONE_INT_V2,
  40. + .rx_dma_l4_valid = RX_DMA_L4_VALID_V2,
  41. .dma_max_len = MTK_TX_DMA_BUF_LEN_V2,
  42. .dma_len_offset = 8,
  43. },