[PATCH v2] net: stmmac: enable MAC rx/tx after DMA start
Maxime Chevallier
maxime.chevallier at bootlin.com
Mon Jul 27 01:23:13 PDT 2026
Hi,
On 7/27/26 08:14, Abid Ali wrote:
> When the MAC receiver is enabled before the DMA channels are started,
> incoming frames fill the MTL FIFO with no DMA engine to drain it.
> If the PHY/Switch is already up at this point, and there is inflow
> of packets towards EMAC, the per-queue FIFO overflows within this window.
>
> Once the FIFO is full, the MTL read controller goes idle and never
> retries delivery even if the DMA comes alive later on.
> This behaviour happens due to enabling the MAC RX path before
> the DMA setup is ready, and any delay between these events increases
> the chances of blocking the rx path permanently.
>
> The EMAC should only accept packets after the DMAs are enabled.
> Similarly, the teardown should ensure the MAC rx/tx is stopped before
> DMA engine is stopped.
>
> Signed-off-by: Abid Ali <dev.taqnialabs at gmail.com>
Ah great ! This matches the programming model for the few ref manuals I
have, e.g. cycloneV manual does state that the MAC must be enabled after the
DMA has been configured.
Reviewed-by: Maxime Chevallier <maxime.chevallier at bootlin.com>
Maxime
More information about the linux-arm-kernel
mailing list