diff options
author | Todd Fujinaka <todd.fujinaka@intel.com> | 2015-04-17 14:24:38 -0400 |
---|---|---|
committer | Jeff Kirsher <jeffrey.t.kirsher@intel.com> | 2015-06-26 05:33:33 -0400 |
commit | 8d0a88a959f0768d6b46436ea2517926fb682e53 (patch) | |
tree | 7ad4b040d1ac05f2f8492110613c83ff4179e52b /drivers/net | |
parent | 011cb197a84ed547c2b6b12a86adbeec1be0fdaf (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.c | 12 | ||||
-rw-r--r-- | drivers/net/ethernet/intel/igb/e1000_defines.h | 3 |
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 |