linux/drivers/net/ethernet
Claudiu Manoil f19015baa2 gianfar: Fix Tx int miss, dont write IC on-the-fly
Programming the interrupt coalescing (IC) registers while
the controller/DMA is on may incur the loss of one Tx
confirmation interrupt, under certain conditions.  This is
a subtle hw race because it does not occur during a burst
of Tx packets.  It has been observed on p2020 devices that,
if just one packet is being xmit'ed, the Tx confirmation
doesn't trigger and BQL evetually blocks the Tx queues,
followed by Tx timeout and an un-responsive device.
This issue was not apparent prior to introducing BQL
support, as a late Tx confirmation was not an issue back then
and the next burst of Tx frames would have triggered the
Tx confirmation/ Tx ring cleanup anyway.

Bottom line, the hw specifications state that the IC registers
should not be programmed while the Rx/Tx blocks (the DMA) are
enabled. Further more, these registers are currently re-written
with the same values on the processing path, over and over again.
To fix this, rewriting the IC registers has been removed from
the processing path (napi poll).  A complete MAC reset procedure
has been implemented for the ethtool -c option instead, to
reliably update these registers while the controller is stopped.

Signed-off-by: Claudiu Manoil <claudiu.manoil@freescale.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2014-02-24 19:38:20 -05:00
..
3com Drivers: net: ethernet: 3com: 3c589_cs fixed coding style issues 2014-02-18 16:59:46 -05:00
8390 net/apne: Remove unused variable ei_local 2014-01-26 22:40:43 -08:00
adaptec net: starfire: remove unnecessary pci_set_drvdata() 2013-10-18 00:03:28 -04:00
adi net: bfin_mac: do not reset PHY after phy_start() 2013-12-09 20:38:59 -05:00
aeroflex drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
allwinner net: ethernet: sunxi: Add new compatibles 2014-02-06 19:46:54 -08:00
alteon drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
amd pcnet32: add missing check for pci_dma_mapping_error 2014-02-19 14:58:27 -05:00
apple macmace: add missing platform_set_drvdata() in mace_probe() 2013-11-11 14:02:08 -05:00
arc Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2014-01-06 17:37:45 -05:00
atheros alx: add missing stats_lock spinlock init 2014-02-10 17:50:35 -08:00
broadcom bcmgenet: Deleted unnecessary select_queue method. 2014-02-24 19:33:27 -05:00
brocade bna: Use pci_enable_msix_range() instead of pci_enable_msix() 2014-02-18 15:33:29 -05:00
cadence net: macb: Fix build warning 2013-12-11 00:19:17 -05:00
calxeda drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
chelsio cgxb4: Stop using ethtool SPEED_* constants 2014-02-24 19:04:08 -05:00
cirrus drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
cisco enic: Use pci_enable_msix_range() instead of pci_enable_msix() 2014-02-18 15:33:30 -05:00
davicom dm9000: fix a lot of checkpatch issues 2014-01-16 16:22:53 -08:00
dec drivers/net: tulip_remove_one needs to call pci_disable_device() 2014-02-17 00:19:24 -05:00
dlink drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
emulex benet: Use pci_enable_msix_range() instead of pci_enable_msix() 2014-02-18 15:33:30 -05:00
faraday net: ftgmac100: use kfree_skb() where appropriate 2014-01-17 18:54:13 -08:00
freescale gianfar: Fix Tx int miss, dont write IC on-the-fly 2014-02-24 19:38:20 -05:00
fujitsu drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
hp hp100: replace hardcoded name in /proc/interrupts with interface name 2013-09-27 17:38:32 -04:00
i825xx drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
ibm Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc 2014-01-27 21:11:26 -08:00
icplus drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
intel i40e and i40evf: Bump driver versions 2014-02-21 12:38:26 -05:00
marvell Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2014-02-19 01:24:22 -05:00
mellanox net/mlx4: Fix limiting number of IRQ's instead of RSS queues 2014-02-24 18:38:14 -05:00
micrel drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
microchip
moxa drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
myricom myri10ge: Use pci_enable_msix_range() instead of pci_enable_msix() 2014-02-18 15:33:32 -05:00
natsemi Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2014-01-25 11:17:34 -08:00
neterion vxge: Use pci_enable_msix_range() instead of pci_enable_msix() 2014-02-18 15:33:32 -05:00
nuvoton drivers:net: delete premature free_irq 2013-09-04 13:18:19 -04:00
nvidia forcedeth: Use pci_enable_msix_range() instead of pci_enable_msix() 2014-02-18 15:33:33 -05:00
nxp drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
octeon Merge branch 'for-linus-dma-masks' of git://git.linaro.org/people/rmk/linux-arm 2013-11-14 07:55:21 +09:00
oki-semi ethernet: Fix FSF address in file headers 2013-12-06 12:37:55 -05:00
packetengines net: packetengines: slight optimization of addr 2013-12-31 16:48:32 -05:00
pasemi drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
qlogic qlcnic: Update version to 5.3.56 2014-02-24 18:43:19 -05:00
rdc r6040: use ETH_ZLEN instead of MISR for SKB length checking 2014-01-16 16:22:54 -08:00
realtek drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
renesas sh_eth: add device tree support 2014-02-18 17:21:34 -05:00
seeq drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
sfc sfc: Use pci_enable_msix_range() instead of pci_enable_msix() 2014-02-18 15:33:34 -05:00
sgi drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
silan
sis net: sis900: remove unnecessary pci_set_drvdata() 2013-12-09 18:09:28 -05:00
smsc drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
stmicro net: stmmac:sti: Add STi SOC glue driver. 2014-02-13 16:25:13 -05:00
sun niu: Use pci_enable_msix_range() instead of pci_enable_msix() 2014-02-18 15:33:34 -05:00
tehuti net: Spelling s/transmition/transmission/ 2014-01-14 17:11:26 -08:00
ti Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2014-02-19 01:24:22 -05:00
tile netdevice: add queue selection fallback handler for ndo_select_queue 2014-02-17 00:36:34 -05:00
toshiba drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
tundra drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
via net,via-rhine: Fix tx_timeout handling 2014-01-15 15:21:08 -08:00
wiznet net: w5100: use dev_get_platdata() 2013-08-30 17:43:38 -04:00
xilinx net: axienet: Fix compilation warnings 2014-02-13 18:07:40 -05:00
xircom ethernet: Fix FSF address in file headers 2013-12-06 12:37:55 -05:00
xscale ixp4xx_eth: Implement the SIOCGHWTSTAMP ioctl 2013-11-21 17:17:48 +00:00
dnet.c drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
dnet.h
ethoc.c net: ethoc: set up MII management bus clock 2014-02-04 20:19:51 -08:00
fealnx.c net: fealnx: remove unnecessary pci_set_drvdata() 2013-10-21 17:21:01 -04:00
jme.c net: jme: remove unnecessary pci_set_drvdata() 2013-10-21 17:21:01 -04:00
jme.h jme: Remove unused #define PFX 2013-11-07 02:14:32 -05:00
Kconfig net: Add MOXA ART SoCs ethernet driver 2013-08-11 21:38:12 -07:00
korina.c drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
lantiq_etop.c netdevice: add queue selection fallback handler for ndo_select_queue 2014-02-17 00:36:34 -05:00
Makefile net: Add MOXA ART SoCs ethernet driver 2013-08-11 21:38:12 -07:00
netx-eth.c ethernet: Fix FSF address in file headers 2013-12-06 12:37:55 -05:00
s6gmac.c drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00