On 15.12.2016 22:03, Pavel Machek wrote: > > I actually did experiment with adding locking there, too, and no, no > luck. It seems stmmac_tx_err() is more broken than just locking. >
Ah ok. Then maybe priv->hw->dma->stop_tx() does not do the job correctly (stop the tx path properly) and the HW is still active on the tx path while the tx buffers are freed. OTOH stmmac_release() also stops the phy before the tx (and rx) paths are stopped. Did you try to stop the phy fist in stmmac_tx_err_work(), too? Regards, Lino