linux/drivers/net/ethernet/intel/e1000e
Hiroaki SHIMODA 8edc0e624d e1000e: Change wthresh to 1 to avoid possible Tx stalls
This patch originated from Hiroaki SHIMODA but has been modified
by Intel with some minor cleanups and additional commit log text.

Denys Fedoryshchenko and others reported Tx stalls on e1000e with
BQL enabled.  Issue was root caused to hardware delays. They were
introduced because some of the e1000e hardware with transmit
writeback bursting enabled, waits until the driver does an
explict flush OR there are WTHRESH descriptors to write back.

Sometimes the delays in question were on the order of seconds,
causing visible lag for ssh sessions and unacceptable tx
completion latency, especially for BQL enabled kernels.

To avoid possible Tx stalls, change WTHRESH back to 1.

The current plan is to investigate a method for re-enabling
WTHRESH while not harming BQL, but those patches will be later
for net-next if they work.

please enqueue for stable since v3.3 as this bug was introduced in
commit 3f0cfa3bc1
Author: Tom Herbert <therbert@google.com>
Date:   Mon Nov 28 16:33:16 2011 +0000

    e1000e: Support for byte queue limits

    Changes to e1000e to use byte queue limits.

Reported-by: Denys Fedoryshchenko <denys@visp.net.lb>
Tested-by: Denys Fedoryshchenko <denys@visp.net.lb>
Signed-off-by: Hiroaki SHIMODA <shimoda.hiroaki@gmail.com>
CC: eric.dumazet@gmail.com
CC: therbert@google.com
Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2012-10-10 22:59:18 -04:00
..
80003es2lan.c e1000e: Driver workaround for IPv6 Header Extension Erratum. 2012-05-03 02:29:04 -07:00
82571.c e1000e: use correct type for read of 32-bit register 2012-08-30 19:07:28 -07:00
Makefile e1000e: update copyright year 2012-01-26 19:01:17 -08:00
defines.h e1000e: remove use of IP payload checksum 2012-07-01 00:25:32 -07:00
e1000.h e1000e: Change wthresh to 1 to avoid possible Tx stalls 2012-10-10 22:59:18 -04:00
ethtool.c e1000e: cleanup strict checkpatch check 2012-08-30 19:10:01 -07:00
hw.h e1000e: add device IDs for i218 2012-10-09 03:03:01 -07:00
ich8lan.c e1000e: fix test for PHY being accessible on 82577/8/9 and I217 2012-07-14 00:45:45 -07:00
mac.c e1000e: test for valid check_reset_block function pointer 2012-06-05 20:47:50 -07:00
manage.c e1000e: cleanup boolean logic 2012-04-14 02:05:00 -07:00
netdev.c e1000e: Change wthresh to 1 to avoid possible Tx stalls 2012-10-10 22:59:18 -04:00
nvm.c e1000e: rename e1000e_reload_nvm() and call as function pointer 2012-02-24 21:43:21 -08:00
param.c e1000e: use more informative logging macros when netdev not yet registered 2012-06-14 03:03:14 -07:00
phy.c e1000e: implement 82577/579 MDI setting support 2012-08-21 01:22:56 -07:00