linux_dsm_epyc7002/drivers/net/ethernet/xilinx
Esben Haabendal 84823ff80f net: ll_temac: Fix race condition causing TX hang
It is possible that the interrupt handler fires and frees up space in
the TX ring in between checking for sufficient TX ring space and
stopping the TX queue in temac_start_xmit. If this happens, the
queue wake from the interrupt handler will occur before the queue is
stopped, causing a lost wakeup and the adapter's transmit hanging.

To avoid this, after stopping the queue, check again whether there is
sufficient space in the TX ring. If so, wake up the queue again.

This is a port of the similar fix in axienet driver,
commit 7de44285c1 ("net: axienet: Fix race condition causing TX hang").

Fixes: 23ecc4bde2 ("net: ll_temac: fix checksum offload logic")
Signed-off-by: Esben Haabendal <esben@geanix.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2020-02-24 10:58:48 -08:00
..
Kconfig net: axienet: In kconfig remove arch dependency for axi_emac 2019-11-13 11:43:58 -08:00
ll_temac_main.c net: ll_temac: Fix race condition causing TX hang 2020-02-24 10:58:48 -08:00
ll_temac_mdio.c net: ll_temac: Prepare indirect register access for multicast support 2019-05-23 09:33:57 -07:00
ll_temac.h net: ll_temac: Prepare indirect register access for multicast support 2019-05-23 09:33:57 -07:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
xilinx_axienet_main.c net: phylink: rename mac_link_state() op to mac_pcs_get_state() 2019-11-23 16:13:39 -08:00
xilinx_axienet_mdio.c net: axienet: Fix MDIO bus parent node detection 2019-06-06 16:24:30 -07:00
xilinx_axienet.h net: axienet: convert to phylink API 2019-06-06 16:24:30 -07:00
xilinx_emaclite.c netdev: pass the stuck queue to the timeout handler 2019-12-12 21:38:57 -08:00