]> 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)
commita7a4d6d9c1e29d1455c27ea49fc46608f89d9380
tree1d557c28fd891fab01e5a291571e854cc9756f79
parentafdcf2ab6fc6cb3b11a9589e32d05ab65d6bf43e
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