commit | b3a9e7b10ee0bff57596b2deee065f303edcbbbd | [log] [tgz] |
---|---|---|
author | developer <developer@mediatek.com> | Wed Feb 08 15:18:10 2023 +0800 |
committer | developer <developer@mediatek.com> | Wed Feb 08 18:17:10 2023 +0800 |
tree | 7e3d1fc923936e1d324d59aeb05ac75b6358d1fc | |
parent | 33554a2a7cbd1d70ac635b36b05c98a7a8a7df06 [diff] |
[][Kernel][mt7988][eth][Add sw padding in Ethernet Tx] [Description] Add software padding processing in Ethernet Tx path. It's found that too-short packets would lead to switch Tx CRC error, followed by switch output queue stuck issue. So Ethernet driver should check if the packet is too short and conduct software padding when necessary. If without this patch, switch might encounter output queue stuck issue. [Release-log] N/A Change-Id: Ibd94cbf3be0530d2b9ee61477b0362d099c47d8e Reviewed-on: https://gerrit.mediatek.inc/c/openwrt/feeds/mtk_openwrt_feeds/+/7109899
diff --git a/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_eth_soc.c index 77981e6..af4893c 100755 --- a/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_eth_soc.c +++ b/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_eth_soc.c
@@ -1456,6 +1456,13 @@ int i, n_desc = 1; int k = 0; + if (skb->len < 32) { + if (skb_put_padto(skb, MTK_MIN_TX_LENGTH)) + return -ENOMEM; + + txd_info.size = skb_headlen(skb); + } + itxd = ring->next_free; itxd_pdma = qdma_to_pdma(ring, itxd); if (itxd == ring->last_free)
diff --git a/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_eth_soc.h b/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_eth_soc.h index 0c56d1b..a594d0b 100755 --- a/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_eth_soc.h +++ b/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_eth_soc.h
@@ -18,6 +18,7 @@ #define MTK_QDMA_PAGE_SIZE 2048 #define MTK_MAX_RX_LENGTH 1536 +#define MTK_MIN_TX_LENGTH 60 #define MTK_DMA_SIZE 2048 #define MTK_NAPI_WEIGHT 256