Skip to content
Snippets Groups Projects
Commit 39eddb4c authored by Richard Röjfors's avatar Richard Röjfors Committed by David S. Miller
Browse files

macb: avoid lockup when TGO during underrun


In rare cases when an underrun occur, all macb buffers where consumed
and the netif_queue was stopped infinitely. This happens then the TGO
(transfer ongoing) bit in the TSR is set (and UND). It seems like
clening up after the underrun makes the driver and the macb hardware
end up in an inconsistent state. The result of this is that in the
following calls to macb_tx no TX buffers are released -> the
netif_queue was stopped, and never woken up again.

The solution is to disable the transmitter, if TGO is set, before
clening up after the underrun, and re-enable the transmitter when the
cleaning up is done.

Signed-off-by: default avatarRichard Röjfors <richard.rojfors@endian.se>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 24e94de4
No related branches found
No related tags found
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment