]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.0 patches
authorGreg Kroah-Hartman <gregkh@suse.de>
Tue, 11 Oct 2011 16:51:59 +0000 (10:51 -0600)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 11 Oct 2011 16:51:59 +0000 (10:51 -0600)
queue-3.0/e1000e-workaround-for-packet-drop-on-82579-at-100mbps.patch [new file with mode: 0644]
queue-3.0/series

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 (file)
index 0000000..2cdc3d5
--- /dev/null
@@ -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:
index be0d8b542f9a390ecbde483108f7b18b419e7551..8e1210d31800b5445444cd08e54273203befe969 100644 (file)
@@ -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