diff options
author | Greg Kroah-Hartman <gregkh@suse.de> | 2011-10-11 10:51:59 -0600 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2011-10-11 10:51:59 -0600 |
commit | 27ef9ee54e7d234a93812132702d47a813893853 (patch) | |
tree | be26b4c10015dc133e61fc3fa1703a7f19408303 | |
parent | 2cf0ea4e90022f7cab94f40f02886cbf9f93faa6 (diff) | |
download | stable-queue-27ef9ee54e7d234a93812132702d47a813893853.tar.gz |
-rw-r--r-- | queue-3.0/e1000e-workaround-for-packet-drop-on-82579-at-100mbps.patch | 69 | ||||
-rw-r--r-- | queue-3.0/series | 1 |
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 |