3
0
Fork 0
forked from mirrors/linux
kernel/drivers/net/ethernet/freescale
Mattias Barthel a179aad12b net: fec: ERR007885 Workaround for conventional TX
Activate TX hang workaround also in
fec_enet_txq_submit_skb() when TSO is not enabled.

Errata: ERR007885

Symptoms: NETDEV WATCHDOG: eth0 (fec): transmit queue 0 timed out

commit 37d6017b84 ("net: fec: Workaround for imx6sx enet tx hang when enable three queues")
There is a TDAR race condition for mutliQ when the software sets TDAR
and the UDMA clears TDAR simultaneously or in a small window (2-4 cycles).
This will cause the udma_tx and udma_tx_arbiter state machines to hang.

So, the Workaround is checking TDAR status four time, if TDAR cleared by
    hardware and then write TDAR, otherwise don't set TDAR.

Fixes: 53bb20d1fa ("net: fec: add variable reg_desc_active to speed things up")
Signed-off-by: Mattias Barthel <mattias.barthel@atlascopco.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Link: https://patch.msgid.link/20250429090826.3101258-1-mattiasbarthel@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2025-05-01 07:10:00 -07:00
..
dpaa xdp: get rid of xdp_frame::mem.id 2024-12-12 18:22:52 -08:00
dpaa2 rtnetlink: add ndo_fdb_dump_context 2024-12-10 18:32:32 -08:00
enetc net: enetc: fix frame corruption on bpf_xdp_adjust_head/tail() and XDP_PASS 2025-04-21 19:02:14 -07:00
fman net: remove phylink_pcs .neg_mode boolean 2025-02-14 17:09:50 -08:00
fs_enet net: ethernet: fs_enet: Use %pa to format resource_size_t 2024-10-15 10:55:54 -07:00
fec.h net: fec: use phydev->eee_cfg.tx_lpi_timer 2024-12-11 20:23:52 -08:00
fec_main.c net: fec: ERR007885 Workaround for conventional TX 2025-05-01 07:10:00 -07:00
fec_mpc52xx.c net: ethernet: Switch back to struct platform_driver::remove() 2024-10-04 16:39:56 -07:00
fec_mpc52xx.h
fec_mpc52xx_phy.c net: fec_mpc52xx_phy: Use %pa to format resource_size_t 2024-10-15 10:55:54 -07:00
fec_ptp.c Networking changes for 6.15. 2025-03-26 21:48:21 -07:00
fsl_pq_mdio.c net: ethernet: Switch back to struct platform_driver::remove() 2024-10-04 16:39:56 -07:00
gianfar.c net: gianfar: simplify init_phy() 2025-02-07 17:01:01 -08:00
gianfar.h
gianfar_ethtool.c net: freescale: use ethtool string helpers 2024-10-31 18:34:48 -07:00
Kconfig net: freescale: ucc_geth: phylink conversion 2024-12-06 13:41:53 +00:00
Makefile
ucc_geth.c net: freescale: ucc_geth: make ugeth_mac_ops be static const 2025-02-18 18:08:18 -08:00
ucc_geth.h net: freescale: ucc_geth: remove unused PHY_INIT_TIMEOUT and PHY_CHANGE_TIME 2025-02-11 16:34:58 -08:00
ucc_geth_ethtool.c net: freescale: ucc_geth: phylink conversion 2024-12-06 13:41:53 +00:00
xgmac_mdio.c