commit | 53a5d37ca67547d9fc5cf1d964aa1efcf01fd30d | [log] [tgz] |
---|---|---|
author | developer <developer@mediatek.com> | Wed Feb 07 10:49:52 2024 +0800 |
committer | developer <developer@mediatek.com> | Thu Feb 15 17:08:52 2024 +0800 |
tree | c2909bec4f779b883827a41a44c05fea05f42562 | |
parent | 637c5eef0bb8d6a6840ab29647984f37ff5695f5 [diff] |
[][kernel][common][eth][Add ADMA DMAD DDONE bit check] [Description] Add ADMA DMAD DDONE bit check. The NAPI TX function in the Ethernet driver is often called multiple times when only one interrupt is triggered. This situation may cause packet data to be cleared before ADMA completes processing. Therefore, we align QDMA to add DDONE bit check to ensure that ADMA has completed processing. Without this patch, unexpected situatios may occur. [Release-log] N/A Change-Id: If81fe4ab1184f776c400349b850f0dc6c4a1fa2a Reviewed-on: https://gerrit.mediatek.inc/c/openwrt/feeds/mtk_openwrt_feeds/+/8657082
diff --git a/21.02/files/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/21.02/files/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_eth_soc.c index 70fdf8d..49c123b 100644 --- a/21.02/files/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_eth_soc.c +++ b/21.02/files/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_eth_soc.c
@@ -2628,6 +2628,10 @@ while ((cpu != dma) && budget) { int mac = 0; + desc = ring->dma_pdma + cpu * eth->soc->txrx.txd_size; + if ((desc->txd2 & TX_DMA_OWNER_CPU) == 0) + break; + tx_buf = &ring->buf[cpu]; if (tx_buf->flags & MTK_TX_FLAGS_FPORT1) mac = MTK_GMAC2_ID;