Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

authored by

Todd Fujinaka and committed by
Jeff Kirsher
8d0a88a9 011cb197

+10 -5
+8 -4
drivers/net/ethernet/intel/igb/e1000_82575.c
··· 1 1 /* Intel(R) Gigabit Ethernet Linux driver 2 - * Copyright(c) 2007-2014 Intel Corporation. 2 + * Copyright(c) 2007-2015 Intel Corporation. 3 3 * 4 4 * This program is free software; you can redistribute it and/or modify it 5 5 * under the terms and conditions of the GNU General Public License, ··· 1900 1900 * igb_rx_fifo_flush_82575 - Clean rx fifo after RX enable 1901 1901 * @hw: pointer to the HW structure 1902 1902 * 1903 - * After rx enable if managability is enabled then there is likely some 1904 - * bad data at the start of the fifo and possibly in the DMA fifo. This 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 1905 1905 * function clears the fifos and flushes any packets that came in as rx was 1906 1906 * being enabled. 1907 1907 **/ ··· 1909 1909 { 1910 1910 u32 rctl, rlpml, rxdctl[4], rfctl, temp_rctl, rx_enabled; 1911 1911 int i, ms_wait; 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); 1912 1917 1913 1918 if (hw->mac.type != e1000_82575 || 1914 1919 !(rd32(E1000_MANC) & E1000_MANC_RCV_TCO_EN)) ··· 1942 1937 * incoming packets are rejected. Set enable and wait 2ms so that 1943 1938 * any packet that was coming in as RCTL.EN was set is flushed 1944 1939 */ 1945 - rfctl = rd32(E1000_RFCTL); 1946 1940 wr32(E1000_RFCTL, rfctl & ~E1000_RFCTL_LEF); 1947 1941 1948 1942 rlpml = rd32(E1000_RLPML);
+2 -1
drivers/net/ethernet/intel/igb/e1000_defines.h
··· 344 344 #define E1000_RXCSUM_PCSD 0x00002000 /* packet checksum disabled */ 345 345 346 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 350 /* Collision related configuration parameters */ 350 351 #define E1000_COLLISION_THRESHOLD 15