e1000e: Change wthresh to 1 to avoid possible Tx stalls
svn path=/dists/sid/linux/; revision=19435
This commit is contained in:
parent
fef45a9d29
commit
fe2316a734
|
@ -33,6 +33,7 @@ linux (3.2.31-1) UNRELEASED; urgency=low
|
||||||
- Fix statfs() values when different block sizes are in use
|
- Fix statfs() values when different block sizes are in use
|
||||||
* udeb: Add hid-logitech-dj to input-modules (Closes: #661379)
|
* udeb: Add hid-logitech-dj to input-modules (Closes: #661379)
|
||||||
* connector: Make CONNECTOR built-in; enable PROC_EVENTS (Closes: #588200)
|
* connector: Make CONNECTOR built-in; enable PROC_EVENTS (Closes: #588200)
|
||||||
|
* e1000e: Change wthresh to 1 to avoid possible Tx stalls
|
||||||
|
|
||||||
-- Ben Hutchings <ben@decadent.org.uk> Sat, 29 Sep 2012 14:19:46 +0200
|
-- Ben Hutchings <ben@decadent.org.uk> Sat, 29 Sep 2012 14:19:46 +0200
|
||||||
|
|
||||||
|
|
80
debian/patches/features/all/bql/e1000e-Change-wthresh-to-1-to-avoid-possible-Tx-stal.patch
vendored
Normal file
80
debian/patches/features/all/bql/e1000e-Change-wthresh-to-1-to-avoid-possible-Tx-stal.patch
vendored
Normal file
|
@ -0,0 +1,80 @@
|
||||||
|
From: Hiroaki SHIMODA <shimoda.hiroaki@gmail.com>
|
||||||
|
Date: Wed, 10 Oct 2012 15:34:20 +0000
|
||||||
|
Subject: e1000e: Change wthresh to 1 to avoid possible Tx stalls
|
||||||
|
|
||||||
|
commit 8edc0e624db3756783233e464879eb2e3b904c13 upstream.
|
||||||
|
|
||||||
|
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 3f0cfa3bc11e7f00c9994e0f469cbc0e7da7b00c
|
||||||
|
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>
|
||||||
|
---
|
||||||
|
drivers/net/ethernet/intel/e1000e/e1000.h | 6 +++---
|
||||||
|
drivers/net/ethernet/intel/e1000e/netdev.c | 2 +-
|
||||||
|
2 files changed, 4 insertions(+), 4 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/drivers/net/ethernet/intel/e1000e/e1000.h b/drivers/net/ethernet/intel/e1000e/e1000.h
|
||||||
|
index cb3356c..04668b4 100644
|
||||||
|
--- a/drivers/net/ethernet/intel/e1000e/e1000.h
|
||||||
|
+++ b/drivers/net/ethernet/intel/e1000e/e1000.h
|
||||||
|
@@ -175,13 +175,13 @@ struct e1000_info;
|
||||||
|
/*
|
||||||
|
* in the case of WTHRESH, it appears at least the 82571/2 hardware
|
||||||
|
* writes back 4 descriptors when WTHRESH=5, and 3 descriptors when
|
||||||
|
- * WTHRESH=4, and since we want 64 bytes at a time written back, set
|
||||||
|
- * it to 5
|
||||||
|
+ * WTHRESH=4, so a setting of 5 gives the most efficient bus
|
||||||
|
+ * utilization but to avoid possible Tx stalls, set it to 1
|
||||||
|
*/
|
||||||
|
#define E1000_TXDCTL_DMA_BURST_ENABLE \
|
||||||
|
(E1000_TXDCTL_GRAN | /* set descriptor granularity */ \
|
||||||
|
E1000_TXDCTL_COUNT_DESC | \
|
||||||
|
- (5 << 16) | /* wthresh must be +1 more than desired */\
|
||||||
|
+ (1 << 16) | /* wthresh must be +1 more than desired */\
|
||||||
|
(1 << 8) | /* hthresh */ \
|
||||||
|
0x1f) /* pthresh */
|
||||||
|
|
||||||
|
diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c
|
||||||
|
index de57a2b..f444eb0 100644
|
||||||
|
--- a/drivers/net/ethernet/intel/e1000e/netdev.c
|
||||||
|
+++ b/drivers/net/ethernet/intel/e1000e/netdev.c
|
||||||
|
@@ -2831,7 +2831,7 @@ static void e1000_configure_tx(struct e1000_adapter *adapter)
|
||||||
|
* set up some performance related parameters to encourage the
|
||||||
|
* hardware to use the bus more efficiently in bursts, depends
|
||||||
|
* on the tx_int_delay to be enabled,
|
||||||
|
- * wthresh = 5 ==> burst write a cacheline (64 bytes) at a time
|
||||||
|
+ * wthresh = 1 ==> burst write is disabled to avoid Tx stalls
|
||||||
|
* hthresh = 1 ==> prefetch when one or more available
|
||||||
|
* pthresh = 0x1f ==> prefetch if internal cache 31 or less
|
||||||
|
* BEWARE: this seems to work but should be considered first if
|
|
@ -369,6 +369,7 @@ features/all/bql/bql-fix-posdiff-to-integer-overflow-aware.patch
|
||||||
features/all/bql/bql-avoid-unneeded-limit-decrement.patch
|
features/all/bql/bql-avoid-unneeded-limit-decrement.patch
|
||||||
features/all/bql/bql-avoid-possible-inconsistent-calculation.patch
|
features/all/bql/bql-avoid-possible-inconsistent-calculation.patch
|
||||||
features/all/bql/e1000e-support-for-byte-queue-limits.patch
|
features/all/bql/e1000e-support-for-byte-queue-limits.patch
|
||||||
|
features/all/bql/e1000e-Change-wthresh-to-1-to-avoid-possible-Tx-stal.patch
|
||||||
features/all/bql/forcedeth-support-for-byte-queue-limits.patch
|
features/all/bql/forcedeth-support-for-byte-queue-limits.patch
|
||||||
features/all/bql/forcedeath-fix-bql-support-for-forcedeath.patch
|
features/all/bql/forcedeath-fix-bql-support-for-forcedeath.patch
|
||||||
features/all/bql/tg3-support-for-byte-queue-limits.patch
|
features/all/bql/tg3-support-for-byte-queue-limits.patch
|
||||||
|
|
Loading…
Reference in New Issue