]> git.baikalelectronics.ru Git - kernel.git/commit
net: macb: restart tx after tx used bit read
authorClaudiu Beznea <claudiu.beznea@microchip.com>
Mon, 17 Dec 2018 10:02:42 +0000 (10:02 +0000)
committerDavid S. Miller <davem@davemloft.net>
Tue, 18 Dec 2018 23:57:07 +0000 (15:57 -0800)
commit90f2168fffb61672b432b74026de49cd27048f44
tree1d557c28fd891fab01e5a291571e854cc9756f79
parentf2172f0d80198caa3d926831e24e24e8e201fc83
net: macb: restart tx after tx used bit read

On some platforms (currently detected only on SAMA5D4) TX might stuck
even the pachets are still present in DMA memories and TX start was
issued for them. This happens due to race condition between MACB driver
updating next TX buffer descriptor to be used and IP reading the same
descriptor. In such a case, the "TX USED BIT READ" interrupt is asserted.
GEM/MACB user guide specifies that if a "TX USED BIT READ" interrupt
is asserted TX must be restarted. Restart TX if used bit is read and
packets are present in software TX queue. Packets are removed from software
TX queue if TX was successful for them (see macb_tx_interrupt()).

Signed-off-by: Claudiu Beznea <claudiu.beznea@microchip.com>
Acked-by: Nicolas Ferre <nicolas.ferre@microchip.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/cadence/macb_main.c