linux_dsm_epyc7002/drivers/net/ethernet
Frank Li 031916568a net: fec: workaround stop tx during errata ERR006358
If the ready bit in the transmit buffer descriptor (TxBD[R])
is previously detected as not set during a prior frame transmission,
then the ENET_TDAR[TDAR] bit is cleared at a later time, even if
additional TxBDs were added to the ring and the ENET_TDAR[TDAR]
bit is set. This results in frames not being transmitted until
there is a 0-to-1 transition on ENET_TDAR[TDAR].

Workarounds:
code can use the transmit frame interrupt flag (ENET_EIR[TXF])
as a method to detect whether the ENET has completed transmission
and the ENET_TDAR[TDAR] has been cleared. If ENET_TDAR[TDAR] is
detected as cleared when packets are queued and waiting for transmit,
then a write to the TDAR bit will restart TxBD processing.

This case main happen when loading is light. A ethernet package may
not send out utile next package put into tx queue.

How to test:
while [ true ]
do
	ping <IP> -s 10000 -w 4
	ping <IP> -s 6000 -w 2
	ping <IP> -s 4000 -w 2
	ping <IP> -s 10000 -w 2
done

You will see below result in overnight test.

6008 bytes from 10.192.242.116: seq=1 ttl=128 time=0.722 ms
4008 bytes from 10.192.242.116: seq=0 ttl=128 time=1001.008 ms
4008 bytes from 10.192.242.116: seq=1 ttl=128 time=1.010 ms
10008 bytes from 10.192.242.116: seq=0 ttl=128 time=0.896 ms

After apply this patch, >1000ms delay disappear.

Signed-off-by: Frank Li <Frank.Li@freescale.com>
Acked-by: Fugang Duan  <B38611@freescale.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2013-07-27 20:14:48 -07:00
..
3com net: Move MII out from under NET_CORE and hide it 2013-06-19 22:22:56 -07:00
8390 net/trivial: replace numeric with standard PM state macros 2013-06-28 22:11:48 -07:00
adaptec net: Move MII out from under NET_CORE and hide it 2013-06-19 22:22:56 -07:00
adi net: Move MII out from under NET_CORE and hide it 2013-06-19 22:22:56 -07:00
aeroflex net: ethernet: use platform_{get,set}_drvdata() 2013-05-25 21:27:58 -07:00
allwinner drivers: net: sun4i-emac: select MDIO_SUN4I 2013-07-26 13:57:58 -07:00
alteon net/ethernet/alteon/acenic: Use module_pci_driver to register driver 2013-05-22 14:35:04 -07:00
amd amd8111e: use pdev->pm_cap instead of pci_find_capability(.., PCI_CAP_ID_PM) 2013-06-19 22:22:56 -07:00
apple net: Restore unintentional reverts. 2013-06-24 12:43:40 -07:00
arc arc_emac: fix compile-time errors & warnings on PPC64 2013-06-26 01:35:44 -07:00
atheros Revert "atl1c: Fix misuse of netdev_alloc_skb in refilling rx ring" 2013-07-27 20:00:44 -07:00
broadcom net/tg3: Fix warning from pci_disable_device() 2013-07-26 14:28:00 -07:00
brocade Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2013-07-09 18:24:39 -07:00
cadence drivers/net/ethernet/cadence: don't use devm_pinctrl_get_select_default() in probe 2013-07-11 17:18:26 -07:00
calxeda net: ethernet: remove unnecessary platform_set_drvdata() 2013-05-27 22:34:51 -07:00
chelsio cxgb3: Missing rtnl lock in error recovery 2013-07-02 12:37:48 -07:00
cirrus net: Move MII out from under NET_CORE and hide it 2013-06-19 22:22:56 -07:00
cisco drivers/net: enic: release rtnl_lock on error-path 2013-07-09 12:55:48 -07:00
davicom net: Move MII out from under NET_CORE and hide it 2013-06-19 22:22:56 -07:00
dec net: Move MII out from under NET_CORE and hide it 2013-06-19 22:22:56 -07:00
dlink net: Move MII out from under NET_CORE and hide it 2013-06-19 22:22:56 -07:00
emulex be2net: Fix to avoid hardware workaround when not needed 2013-07-16 13:01:57 -07:00
faraday net: Move MII out from under NET_CORE and hide it 2013-06-19 22:22:56 -07:00
freescale net: fec: workaround stop tx during errata ERR006358 2013-07-27 20:14:48 -07:00
fujitsu Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2013-05-01 14:08:52 -07:00
hp
i825xx drivers:net: Remove unnecessary OOM messages after netdev_alloc_skb 2013-03-09 16:09:19 -05:00
ibm Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2013-07-09 18:24:39 -07:00
icplus net: Move MII out from under NET_CORE and hide it 2013-06-19 22:22:56 -07:00
intel net: rename ll methods to busy-poll 2013-07-10 17:08:27 -07:00
marvell net: mv643xx_eth: do not use port number as platform device id 2013-07-09 12:51:47 -07:00
mellanox mlx5: use after free in mlx5_cmd_comp_handler() 2013-07-24 15:44:51 -07:00
micrel net: Move MII out from under NET_CORE and hide it 2013-06-19 22:22:56 -07:00
microchip net: ethernet: enc28j60: use spi_get_drvdata() and spi_set_drvdata() 2013-04-07 16:48:19 -04:00
myricom net/trivial: replace numeric with standard PM state macros 2013-06-28 22:11:48 -07:00
natsemi net: vlan: add protocol argument to packet tagging functions 2013-04-19 14:46:06 -04:00
neterion treewide: Fix typo in printk 2013-06-18 13:48:45 +02:00
nuvoton net: Move MII out from under NET_CORE and hide it 2013-06-19 22:22:56 -07:00
nvidia net/ethernet/nvidia/forcedeth: Use module_pci_driver to register driver 2013-05-22 14:35:05 -07:00
nxp net: ethernet: remove unnecessary platform_set_drvdata() 2013-05-27 22:34:51 -07:00
octeon Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus 2013-07-13 14:52:21 -07:00
oki-semi net: pch_gbe depends on x86 2013-07-22 14:43:30 -07:00
packetengines net: Move MII out from under NET_CORE and hide it 2013-06-19 22:22:56 -07:00
pasemi drivers:net: dma_alloc_coherent: use __GFP_ZERO instead of memset(, 0) 2013-03-17 12:50:24 -04:00
qlogic qlcnic: Fix diagnostic interrupt test for 83xx adapters. 2013-07-27 20:03:02 -07:00
rdc net: Move MII out from under NET_CORE and hide it 2013-06-19 22:22:56 -07:00
realtek r8169: fix lockdep warning when removing interface 2013-07-24 15:42:59 -07:00
renesas sh_eth: SH_ETH should depend on HAS_DMA 2013-07-10 19:47:14 -07:00
seeq net: ethernet: remove unnecessary platform_set_drvdata() 2013-05-27 22:34:51 -07:00
sfc sfc: Enable RX scatter for flows steered by RFS 2013-07-22 18:03:50 -07:00
sgi net: Move MII out from under NET_CORE and hide it 2013-06-19 22:22:56 -07:00
silan net/ethernet/silan/sc92031: Use module_pci_driver to register driver 2013-05-22 14:35:03 -07:00
sis net: Move MII out from under NET_CORE and hide it 2013-06-19 22:22:56 -07:00
smsc net: Move MII out from under NET_CORE and hide it 2013-06-19 22:22:56 -07:00
stmicro dt:net:stmmac: Add dt specific phy reset callback support. 2013-07-04 14:34:17 -07:00
sun sunvnet: vnet_port_remove must call unregister_netdev 2013-07-10 13:35:52 -07:00
tehuti net: vlan: add protocol argument to packet tagging functions 2013-04-19 14:46:06 -04:00
ti Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2013-07-09 18:24:39 -07:00
tile tile: support new Tilera hypervisor 2013-05-02 16:20:31 -04:00
toshiba net/ethernet/toshiba/tc35815: Use module_pci_driver to register driver 2013-05-22 14:35:04 -07:00
tundra net: ethernet: remove unnecessary platform_set_drvdata() 2013-05-27 22:34:51 -07:00
via via-rhine: fix dma mapping errors 2013-07-12 16:28:02 -07:00
wiznet net: ethernet: remove unnecessary platform_set_drvdata() 2013-05-27 22:34:51 -07:00
xilinx net: emaclite: Convert to use devm_ioremap_resource 2013-06-12 02:22:35 -07:00
xircom Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2013-05-01 14:08:52 -07:00
xscale net: ethernet: remove unnecessary platform_set_drvdata() 2013-05-27 22:34:51 -07:00
dnet.c
dnet.h
ethoc.c net: ethernet: remove unnecessary platform_set_drvdata() 2013-05-27 22:34:51 -07:00
fealnx.c
jme.c net, jme: remove redundant D0 power state set 2013-05-31 01:39:08 -07:00
jme.h
Kconfig ethernet/arc/arc_emac - Add new driver 2013-06-25 16:34:32 -07:00
korina.c net: Restore unintentional reverts. 2013-06-24 12:43:40 -07:00
lantiq_etop.c lantiq_etop: use free_netdev(netdev) instead of kfree() 2013-03-21 11:50:10 -04:00
Makefile ethernet/arc/arc_emac - Add new driver 2013-06-25 16:34:32 -07:00
netx-eth.c net: ethernet: remove unnecessary platform_set_drvdata() 2013-05-27 22:34:51 -07:00
s6gmac.c net: ethernet: remove unnecessary platform_set_drvdata() 2013-05-27 22:34:51 -07:00