aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Ertman <david.m.ertman@intel.com>2014-07-03 21:44:32 -0400
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>2014-07-25 23:43:29 -0400
commit493004d04f56fd7d642bdbb2938e17e5f7d622d1 (patch)
treeed6dd60591f8a394ae1ef5c97fc477caeda3503b
parente90dd264566405e2f1bbb8595a4b5612281f6315 (diff)
e1000e: Fix CRC errors with jumbo traffic
Modifying the jumbo frame workaround for 82579, i217 and i218 client parts to increase the gap between the read and write pointers in the Tx FIFO. Signed-off-by: Dave Ertman <david.m.ertman@intel.com> Tested-by: Aaron Brown <aaron.f.brown@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
-rw-r--r--drivers/net/ethernet/intel/e1000e/defines.h1
-rw-r--r--drivers/net/ethernet/intel/e1000e/ich8lan.c2
2 files changed, 2 insertions, 1 deletions
diff --git a/drivers/net/ethernet/intel/e1000e/defines.h b/drivers/net/ethernet/intel/e1000e/defines.h
index d18e89212575..bb7ab3c321d6 100644
--- a/drivers/net/ethernet/intel/e1000e/defines.h
+++ b/drivers/net/ethernet/intel/e1000e/defines.h
@@ -342,6 +342,7 @@
342#define E1000_TIPG_IPGR2_SHIFT 20 342#define E1000_TIPG_IPGR2_SHIFT 20
343 343
344#define MAX_JUMBO_FRAME_SIZE 0x3F00 344#define MAX_JUMBO_FRAME_SIZE 0x3F00
345#define E1000_TX_PTR_GAP 0x1F
345 346
346/* Extended Configuration Control and Size */ 347/* Extended Configuration Control and Size */
347#define E1000_EXTCNF_CTRL_MDIO_SW_OWNERSHIP 0x00000020 348#define E1000_EXTCNF_CTRL_MDIO_SW_OWNERSHIP 0x00000020
diff --git a/drivers/net/ethernet/intel/e1000e/ich8lan.c b/drivers/net/ethernet/intel/e1000e/ich8lan.c
index f236861c2a31..8dbcdc81104e 100644
--- a/drivers/net/ethernet/intel/e1000e/ich8lan.c
+++ b/drivers/net/ethernet/intel/e1000e/ich8lan.c
@@ -2444,7 +2444,7 @@ s32 e1000_lv_jumbo_workaround_ich8lan(struct e1000_hw *hw, bool enable)
2444 return ret_val; 2444 return ret_val;
2445 e1e_rphy(hw, PHY_REG(776, 20), &data); 2445 e1e_rphy(hw, PHY_REG(776, 20), &data);
2446 data &= ~(0x3FF << 2); 2446 data &= ~(0x3FF << 2);
2447 data |= (0x1A << 2); 2447 data |= (E1000_TX_PTR_GAP << 2);
2448 ret_val = e1e_wphy(hw, PHY_REG(776, 20), data); 2448 ret_val = e1e_wphy(hw, PHY_REG(776, 20), data);
2449 if (ret_val) 2449 if (ret_val)
2450 return ret_val; 2450 return ret_val;