summaryrefslogtreecommitdiffstats
path: root/drivers/net
diff options
context:
space:
mode:
authorTodd Fujinaka <todd.fujinaka@intel.com>2015-04-17 14:24:38 -0400
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>2015-06-26 05:33:33 -0400
commit8d0a88a959f0768d6b46436ea2517926fb682e53 (patch)
tree7ad4b040d1ac05f2f8492110613c83ff4179e52b /drivers/net
parent011cb197a84ed547c2b6b12a86adbeec1be0fdaf (diff)
igb: disable IPv6 extension header processing
Disable IPv6 extension header processing as per hardware errata. Also fix copyright date. Signed-off-by: Todd Fujinaka <todd.fujinaka@intel.com> Tested-by: Aaron Brown <aaron.f.brown@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Diffstat (limited to 'drivers/net')
-rw-r--r--drivers/net/ethernet/intel/igb/e1000_82575.c12
-rw-r--r--drivers/net/ethernet/intel/igb/e1000_defines.h3
2 files changed, 10 insertions, 5 deletions
diff --git a/drivers/net/ethernet/intel/igb/e1000_82575.c b/drivers/net/ethernet/intel/igb/e1000_82575.c
index 0f69ef81751a..b0182dd31346 100644
--- a/drivers/net/ethernet/intel/igb/e1000_82575.c
+++ b/drivers/net/ethernet/intel/igb/e1000_82575.c
@@ -1,5 +1,5 @@
1/* Intel(R) Gigabit Ethernet Linux driver 1/* Intel(R) Gigabit Ethernet Linux driver
2 * Copyright(c) 2007-2014 Intel Corporation. 2 * Copyright(c) 2007-2015 Intel Corporation.
3 * 3 *
4 * This program is free software; you can redistribute it and/or modify it 4 * This program is free software; you can redistribute it and/or modify it
5 * under the terms and conditions of the GNU General Public License, 5 * under the terms and conditions of the GNU General Public License,
@@ -1900,8 +1900,8 @@ static void igb_clear_hw_cntrs_82575(struct e1000_hw *hw)
1900 * igb_rx_fifo_flush_82575 - Clean rx fifo after RX enable 1900 * igb_rx_fifo_flush_82575 - Clean rx fifo after RX enable
1901 * @hw: pointer to the HW structure 1901 * @hw: pointer to the HW structure
1902 * 1902 *
1903 * After rx enable if managability is enabled then there is likely some 1903 * After rx enable if manageability is enabled then there is likely some
1904 * bad data at the start of the fifo and possibly in the DMA fifo. This 1904 * bad data at the start of the fifo and possibly in the DMA fifo. This
1905 * function clears the fifos and flushes any packets that came in as rx was 1905 * function clears the fifos and flushes any packets that came in as rx was
1906 * being enabled. 1906 * being enabled.
1907 **/ 1907 **/
@@ -1910,6 +1910,11 @@ void igb_rx_fifo_flush_82575(struct e1000_hw *hw)
1910 u32 rctl, rlpml, rxdctl[4], rfctl, temp_rctl, rx_enabled; 1910 u32 rctl, rlpml, rxdctl[4], rfctl, temp_rctl, rx_enabled;
1911 int i, ms_wait; 1911 int i, ms_wait;
1912 1912
1913 /* disable IPv6 options as per hardware errata */
1914 rfctl = rd32(E1000_RFCTL);
1915 rfctl |= E1000_RFCTL_IPV6_EX_DIS;
1916 wr32(E1000_RFCTL, rfctl);
1917
1913 if (hw->mac.type != e1000_82575 || 1918 if (hw->mac.type != e1000_82575 ||
1914 !(rd32(E1000_MANC) & E1000_MANC_RCV_TCO_EN)) 1919 !(rd32(E1000_MANC) & E1000_MANC_RCV_TCO_EN))
1915 return; 1920 return;
@@ -1937,7 +1942,6 @@ void igb_rx_fifo_flush_82575(struct e1000_hw *hw)
1937 * incoming packets are rejected. Set enable and wait 2ms so that 1942 * incoming packets are rejected. Set enable and wait 2ms so that
1938 * any packet that was coming in as RCTL.EN was set is flushed 1943 * any packet that was coming in as RCTL.EN was set is flushed
1939 */ 1944 */
1940 rfctl = rd32(E1000_RFCTL);
1941 wr32(E1000_RFCTL, rfctl & ~E1000_RFCTL_LEF); 1945 wr32(E1000_RFCTL, rfctl & ~E1000_RFCTL_LEF);
1942 1946
1943 rlpml = rd32(E1000_RLPML); 1947 rlpml = rd32(E1000_RLPML);
diff --git a/drivers/net/ethernet/intel/igb/e1000_defines.h b/drivers/net/ethernet/intel/igb/e1000_defines.h
index 217f8138851b..f8684aa285be 100644
--- a/drivers/net/ethernet/intel/igb/e1000_defines.h
+++ b/drivers/net/ethernet/intel/igb/e1000_defines.h
@@ -344,7 +344,8 @@
344#define E1000_RXCSUM_PCSD 0x00002000 /* packet checksum disabled */ 344#define E1000_RXCSUM_PCSD 0x00002000 /* packet checksum disabled */
345 345
346/* Header split receive */ 346/* Header split receive */
347#define E1000_RFCTL_LEF 0x00040000 347#define E1000_RFCTL_IPV6_EX_DIS 0x00010000
348#define E1000_RFCTL_LEF 0x00040000
348 349
349/* Collision related configuration parameters */ 350/* Collision related configuration parameters */
350#define E1000_COLLISION_THRESHOLD 15 351#define E1000_COLLISION_THRESHOLD 15