Sometimes the FEC driver will stall with a descriptor in the DMA ring that's ready for transmit but FEC_X_DES_ACTIVE bit is not enabled. This buffer will remain jammed in the ring until another transmit request is queued.
Has anyone else seen this issue? Is there a known solution?
We have worked around the problem by keeping a count of tx ready descriptor, then we check that count at the end of fec_enet_rx(). If we have at least one tx descriptor ready, but the DMA TX controller is not active, we give it a bump.
We would like to avoid this situation rather than work around it.