diff options
author | Lorenzo Bianconi <lorenzo@kernel.org> | 2022-06-06 21:49:00 +0200 |
---|---|---|
committer | Jakub Kicinski <kuba@kernel.org> | 2022-06-07 20:51:16 -0700 |
commit | da6e113ff010815fdd21ee1e9af2e8d179a2680f (patch) | |
tree | f47d18cd3d10562d00ff4d682e23d2e0e6b22bbb /drivers/net/ethernet/mediatek/mtk_eth_soc.c | |
parent | 67074ae6af59c7d9112535e6f8449bc59f66df40 (diff) | |
download | linux-stable-da6e113ff010815fdd21ee1e9af2e8d179a2680f.tar.gz linux-stable-da6e113ff010815fdd21ee1e9af2e8d179a2680f.tar.bz2 linux-stable-da6e113ff010815fdd21ee1e9af2e8d179a2680f.zip |
net: ethernet: mtk_eth_soc: enable rx cksum offload for MTK_NETSYS_V2
Enable rx checksum offload for mt7986 chipset.
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Link: https://lore.kernel.org/r/c8699805c18f7fd38315fcb8da2787676d83a32c.1654544585.git.lorenzo@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'drivers/net/ethernet/mediatek/mtk_eth_soc.c')
-rw-r--r-- | drivers/net/ethernet/mediatek/mtk_eth_soc.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/drivers/net/ethernet/mediatek/mtk_eth_soc.c index b3b3c079a0fa..9d7700984e9b 100644 --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c @@ -1433,8 +1433,8 @@ static int mtk_poll_rx(struct napi_struct *napi, int budget, int done = 0, bytes = 0; while (done < budget) { + unsigned int pktlen, *rxdcsum; struct net_device *netdev; - unsigned int pktlen; dma_addr_t dma_addr; u32 hash, reason; int mac = 0; @@ -1498,7 +1498,13 @@ static int mtk_poll_rx(struct napi_struct *napi, int budget, pktlen = RX_DMA_GET_PLEN0(trxd.rxd2); skb->dev = netdev; skb_put(skb, pktlen); - if (trxd.rxd4 & eth->soc->txrx.rx_dma_l4_valid) + + if (MTK_HAS_CAPS(eth->soc->caps, MTK_NETSYS_V2)) + rxdcsum = &trxd.rxd3; + else + rxdcsum = &trxd.rxd4; + + if (*rxdcsum & eth->soc->txrx.rx_dma_l4_valid) skb->ip_summed = CHECKSUM_UNNECESSARY; else skb_checksum_none_assert(skb); @@ -3744,6 +3750,7 @@ static const struct mtk_soc_data mt7986_data = { .txd_size = sizeof(struct mtk_tx_dma_v2), .rxd_size = sizeof(struct mtk_rx_dma_v2), .rx_irq_done_mask = MTK_RX_DONE_INT_V2, + .rx_dma_l4_valid = RX_DMA_L4_VALID_V2, .dma_max_len = MTK_TX_DMA_BUF_LEN_V2, .dma_len_offset = 8, }, |