[kernel] r19435 - in dists/sid/linux/debian: . patches patches/features/all/bql
Ben Hutchings
benh at alioth.debian.org
Fri Oct 12 03:28:23 UTC 2012
Author: benh
Date: Fri Oct 12 03:28:22 2012
New Revision: 19435
Log:
e1000e: Change wthresh to 1 to avoid possible Tx stalls
Added:
dists/sid/linux/debian/patches/features/all/bql/e1000e-Change-wthresh-to-1-to-avoid-possible-Tx-stal.patch
Modified:
dists/sid/linux/debian/changelog
dists/sid/linux/debian/patches/series
Modified: dists/sid/linux/debian/changelog
==============================================================================
--- dists/sid/linux/debian/changelog Fri Oct 12 03:09:17 2012 (r19434)
+++ dists/sid/linux/debian/changelog Fri Oct 12 03:28:22 2012 (r19435)
@@ -33,6 +33,7 @@
- Fix statfs() values when different block sizes are in use
* udeb: Add hid-logitech-dj to input-modules (Closes: #661379)
* connector: Make CONNECTOR built-in; enable PROC_EVENTS (Closes: #588200)
+ * e1000e: Change wthresh to 1 to avoid possible Tx stalls
-- Ben Hutchings <ben at decadent.org.uk> Sat, 29 Sep 2012 14:19:46 +0200
Added: dists/sid/linux/debian/patches/features/all/bql/e1000e-Change-wthresh-to-1-to-avoid-possible-Tx-stal.patch
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/bql/e1000e-Change-wthresh-to-1-to-avoid-possible-Tx-stal.patch Fri Oct 12 03:28:22 2012 (r19435)
@@ -0,0 +1,80 @@
+From: Hiroaki SHIMODA <shimoda.hiroaki at 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 at 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 at visp.net.lb>
+Tested-by: Denys Fedoryshchenko <denys at visp.net.lb>
+Signed-off-by: Hiroaki SHIMODA <shimoda.hiroaki at gmail.com>
+CC: eric.dumazet at gmail.com
+CC: therbert at google.com
+Signed-off-by: Jesse Brandeburg <jesse.brandeburg at intel.com>
+Signed-off-by: David S. Miller <davem at 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
Modified: dists/sid/linux/debian/patches/series
==============================================================================
--- dists/sid/linux/debian/patches/series Fri Oct 12 03:09:17 2012 (r19434)
+++ dists/sid/linux/debian/patches/series Fri Oct 12 03:28:22 2012 (r19435)
@@ -369,6 +369,7 @@
features/all/bql/bql-avoid-unneeded-limit-decrement.patch
features/all/bql/bql-avoid-possible-inconsistent-calculation.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/forcedeath-fix-bql-support-for-forcedeath.patch
features/all/bql/tg3-support-for-byte-queue-limits.patch
More information about the Kernel-svn-changes
mailing list