3.0 patches
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 0000000..2cdc3d5
--- /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 be0d8b5..8e1210d 100644
--- a/queue-3.0/series
+++ b/queue-3.0/series
@@ -37,3 +37,4 @@
 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