此问题是由 RX 校验和卸载引擎与扩展描述符之间的通信引起的。在计算校验和后收到数据包时,状态将更新为以太网 Linux 驱动程序中的第 4 个 RX 扩展描述符。
发生此问题时,此状态更新会变慢并卡住,从而降低网络性能。
要解决此问题,请使用以下命令从 uboot 启用链模式。
<board_uboot_cmd_prompt> stmmaceth=chain_mode:1
此外,禁用扩展描述符或 RX 校验和卸载引擎以避免此问题。为此,请下载随附的 net-stmmac-workaround-for-network-performance.zip 其中包含两个补丁,并使用以下命令应用于 Linux 内核。
cd linux-socfpga
patch -p1 < 0001-net-stmmac-workaround-for-network-performance-reduci.patch
patch -p1 < 0001-net-stmmac-do-not-use-extended-descriptors-for-GMAC.patch