[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