Knowledge Base Article

Why does the ethernet hang when running Linux on my Arria 10 HPS system?

Description

Due to a problem in the Linux driver for the Synopsys® Ethernet MAC in the linux-socfpga kernel version 4.1.22-ltsi,  ethernet interface may stall if there is increased traffic within the HPS sub system. 

When this problem appears the HPS EMAC DMA Status registers will show the following state:

i_emac_<X>_dmagrp_status:           

rs (Received Process State) : 0x5: RUNCLOSE : Running: Closing Receive Descriptor

The following registers status may also be present

tu (Transmit Buffer Unavailable): 0x1 : Transmit Descriptor Unavailable

ovf (Receive Overflow): 0x1 : Receive Buffer overflow

Resolution

This problem has been fixed for the linux-socfpga 4.1.33-ltsi kernel available from https://github.com/altera-opensource

Commit ID: 9a8bc214cc13bb318f403b ("stmmac: share reset function between dwmac100 and dwmac1000")

Commit ID: b0db4ee2b475f0b7ac1e36 ("stmmac: rework DMA bus setting and  introduce new platform AXI structure")

To work around this problem in earlier Kernel versions, edit the EMAC DMA control registers to set axi_bus_mode  rd_osr_lmt and wr_osr_lmt registers to 0xF.   This setting allows a greater number of outstanding AXI transactions on the EMAC DMA AXI Master interface.

Updated 2 months ago
Version 2.0
No CommentsBe the first to comment