linux/drivers/net/ethernet/freescale
Fugang Duan 37d6017b84 net: fec: Workaround for imx6sx enet tx hang when enable three queues
When enable three queues on imx6sx enet, and then do tx performance
test with iperf tool, after some time running, tx hang.

Found that:
	If uDMA is running, software set TDAR may cause tx hang.
	If uDMA is in idle, software set TDAR don't cause tx hang.

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.
The issue exist at i.MX6SX enet IP.

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

The patch is only one Workaround for the issue ERR007885.

Signed-off-by: Fugang Duan <B38611@freescale.com>
Signed-off-by: Frank Li <Frank.Li@freescale.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2014-09-19 15:36:50 -04:00
..
fs_enet Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2014-08-13 18:27:40 -06:00
Kconfig net/fsl: xgmac_mdio is dependent on OF_MDIO 2014-06-11 15:50:59 -07:00
Makefile gianfar: Remove sysfs stubs for FIFOCFG and stashing 2014-02-18 15:03:02 -05:00
fec.h net:fec: increase DMA queue number 2014-09-19 15:36:50 -04:00
fec_main.c net: fec: Workaround for imx6sx enet tx hang when enable three queues 2014-09-19 15:36:50 -04:00
fec_mpc52xx.c fec_mpc52xx: delete unneeded test before of_node_put 2014-08-08 10:28:08 -07:00
fec_mpc52xx.h drivers/net: fix up stale paths from driver reorg 2012-01-30 12:54:40 -05:00
fec_mpc52xx_phy.c net: fec_mpc52xx_phy: remove unnecessary dev_set_drvdata() 2013-08-21 12:27:04 -07:00
fec_ptp.c net: fec: ptp: avoid register access when ipg clock is disabled 2014-08-22 10:45:56 -07:00
fsl_pq_mdio.c drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
gianfar.c net: gianfar: fix reference counting for phy_node 2014-08-07 16:02:58 -07:00
gianfar.h gianfar: Use Single-Queue polling for "fsl,etsec2" 2014-03-10 13:17:22 -04:00
gianfar_ethtool.c gianfar: Check if phydev present on ethtool -A 2014-04-24 13:36:16 -04:00
gianfar_ptp.c ptp: drivers: set the number of programmable pins. 2014-03-21 14:21:14 -04:00
ucc_geth.c net: ucc_geth: fix build failure 2014-08-10 21:40:15 -07:00
ucc_geth.h net: remove skb recycling 2012-10-07 00:40:54 -04:00
ucc_geth_ethtool.c net: get rid of SET_ETHTOOL_OPS 2014-05-13 17:43:20 -04:00
xgmac_mdio.c net/fsl: Add format length modifier to avoid negative values 2014-07-30 19:58:09 -07:00