b05faa9c4b7b958ccd78e27e88085d49b9349380
[openwrt/staging/blocktrron.git] /
1 From: Lorenzo Bianconi <lorenzo@kernel.org>
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
6 Enable rx checksum offload for mt7986 chipset.
7
8 Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
9 Link: https://lore.kernel.org/r/c8699805c18f7fd38315fcb8da2787676d83a32c.1654544585.git.lorenzo@kernel.org
10 Signed-off-by: Jakub Kicinski <kuba@kernel.org>
11 ---
12
13 --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
14 +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
15 @@ -1463,8 +1463,8 @@ static int mtk_poll_rx(struct napi_struc
16 int done = 0, bytes = 0;
17
18 while (done < budget) {
19 + unsigned int pktlen, *rxdcsum;
20 struct net_device *netdev;
21 - unsigned int pktlen;
22 dma_addr_t dma_addr;
23 u32 hash, reason;
24 int mac = 0;
25 @@ -1531,7 +1531,13 @@ static int mtk_poll_rx(struct napi_struc
26 pktlen = RX_DMA_GET_PLEN0(trxd.rxd2);
27 skb->dev = netdev;
28 skb_put(skb, pktlen);
29 - if (trxd.rxd4 & eth->soc->txrx.rx_dma_l4_valid)
30 +
31 + if (MTK_HAS_CAPS(eth->soc->caps, MTK_NETSYS_V2))
32 + rxdcsum = &trxd.rxd3;
33 + else
34 + rxdcsum = &trxd.rxd4;
35 +
36 + if (*rxdcsum & eth->soc->txrx.rx_dma_l4_valid)
37 skb->ip_summed = CHECKSUM_UNNECESSARY;
38 else
39 skb_checksum_none_assert(skb);
40 @@ -3755,6 +3761,7 @@ static const struct mtk_soc_data mt7986_
41 .txd_size = sizeof(struct mtk_tx_dma_v2),
42 .rxd_size = sizeof(struct mtk_rx_dma_v2),
43 .rx_irq_done_mask = MTK_RX_DONE_INT_V2,
44 + .rx_dma_l4_valid = RX_DMA_L4_VALID_V2,
45 .dma_max_len = MTK_TX_DMA_BUF_LEN_V2,
46 .dma_len_offset = 8,
47 },