summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@suse.de>2011-10-11 10:51:59 -0600
committerGreg Kroah-Hartman <gregkh@suse.de>2011-10-11 10:51:59 -0600
commit27ef9ee54e7d234a93812132702d47a813893853 (patch)
treebe26b4c10015dc133e61fc3fa1703a7f19408303
parent2cf0ea4e90022f7cab94f40f02886cbf9f93faa6 (diff)
downloadstable-queue-27ef9ee54e7d234a93812132702d47a813893853.tar.gz
3.0 patchesHEADmaster
-rw-r--r--queue-3.0/e1000e-workaround-for-packet-drop-on-82579-at-100mbps.patch69
-rw-r--r--queue-3.0/series1
2 files changed, 70 insertions, 0 deletions
diff --git a/queue-3.0/e1000e-workaround-for-packet-drop-on-82579-at-100mbps.patch b/queue-3.0/e1000e-workaround-for-packet-drop-on-82579-at-100mbps.patch
new file mode 100644
index 0000000000..2cdc3d5f18
--- /dev/null
+++ b/queue-3.0/e1000e-workaround-for-packet-drop-on-82579-at-100mbps.patch
@@ -0,0 +1,69 @@
+From 0ed013e28fe853244f4972cf18d8e2bd62eeb8fc Mon Sep 17 00:00:00 2001
+From: Bruce Allan <bruce.w.allan@intel.com>
+Date: Fri, 29 Jul 2011 05:52:56 +0000
+Subject: e1000e: workaround for packet drop on 82579 at 100Mbps
+
+From: Bruce Allan <bruce.w.allan@intel.com>
+
+commit 0ed013e28fe853244f4972cf18d8e2bd62eeb8fc upstream.
+
+The MAC can drop short packets when the PHY detects noise on the line at
+100Mbps due to a timing issue. Workaround the issue by increasing the PLL
+counter so the PHY properly recognizes the synchronization pattern from the
+MAC.
+
+Signed-off-by: Bruce Allan <bruce.w.allan@intel.com>
+Tested-by: Jeff Pieper <jeffrey.e.pieper@intel.com>
+Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
+Cc: Leann Ogasawara <leann.ogasawara@canonical.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/e1000e/ich8lan.c | 19 ++++++++++++++-----
+ 1 file changed, 14 insertions(+), 5 deletions(-)
+
+--- a/drivers/net/e1000e/ich8lan.c
++++ b/drivers/net/e1000e/ich8lan.c
+@@ -137,8 +137,9 @@
+ #define HV_PM_CTRL PHY_REG(770, 17)
+
+ /* PHY Low Power Idle Control */
+-#define I82579_LPI_CTRL PHY_REG(772, 20)
+-#define I82579_LPI_CTRL_ENABLE_MASK 0x6000
++#define I82579_LPI_CTRL PHY_REG(772, 20)
++#define I82579_LPI_CTRL_ENABLE_MASK 0x6000
++#define I82579_LPI_CTRL_FORCE_PLL_LOCK_COUNT 0x80
+
+ /* EMI Registers */
+ #define I82579_EMI_ADDR 0x10
+@@ -1611,6 +1612,7 @@ static s32 e1000_k1_workaround_lv(struct
+ s32 ret_val = 0;
+ u16 status_reg = 0;
+ u32 mac_reg;
++ u16 phy_reg;
+
+ if (hw->mac.type != e1000_pch2lan)
+ goto out;
+@@ -1625,12 +1627,19 @@ static s32 e1000_k1_workaround_lv(struct
+ mac_reg = er32(FEXTNVM4);
+ mac_reg &= ~E1000_FEXTNVM4_BEACON_DURATION_MASK;
+
+- if (status_reg & HV_M_STATUS_SPEED_1000)
++ ret_val = e1e_rphy(hw, I82579_LPI_CTRL, &phy_reg);
++ if (ret_val)
++ goto out;
++
++ if (status_reg & HV_M_STATUS_SPEED_1000) {
+ mac_reg |= E1000_FEXTNVM4_BEACON_DURATION_8USEC;
+- else
++ phy_reg &= ~I82579_LPI_CTRL_FORCE_PLL_LOCK_COUNT;
++ } else {
+ mac_reg |= E1000_FEXTNVM4_BEACON_DURATION_16USEC;
+-
++ phy_reg |= I82579_LPI_CTRL_FORCE_PLL_LOCK_COUNT;
++ }
+ ew32(FEXTNVM4, mac_reg);
++ ret_val = e1e_wphy(hw, I82579_LPI_CTRL, phy_reg);
+ }
+
+ out:
diff --git a/queue-3.0/series b/queue-3.0/series
index be0d8b542f..8e1210d318 100644
--- a/queue-3.0/series
+++ b/queue-3.0/series
@@ -37,3 +37,4 @@ mips-pm-use-struct-syscore_ops-instead-of-sysdevs-for-pm.patch
ftrace-fix-regression-of-mod-module-function-enabling.patch
ftrace-fix-regression-where-ftrace-breaks-when-modules-are-loaded.patch
ftrace-fix-warning-when-config_function_tracer-is-not-defined.patch
+e1000e-workaround-for-packet-drop-on-82579-at-100mbps.patch