e1000e: disable jumbo frames on 82579 when MACsec enabled in EEPROM
authorBruce Allan <bruce.w.allan@intel.com>
Fri, 25 Feb 2011 07:44:51 +0000 (07:44 +0000)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Fri, 11 Mar 2011 10:23:21 +0000 (02:23 -0800)
If/when an OEM enables MACsec in the 82579 EEPROM, disable jumbo frames
support in the driver due to an interoperability issue in hardware that
prevents jumbo packets from being transmitted or received.

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>
drivers/net/e1000e/defines.h
drivers/net/e1000e/ich8lan.c

index 13149983d07ec993bca6487e2a16484349d6cf46..c516a7440becb4eefa97a806a53c651d7673ec3d 100644 (file)
@@ -86,6 +86,7 @@
 #define E1000_CTRL_EXT_IAME           0x08000000 /* Interrupt acknowledge Auto-mask */
 #define E1000_CTRL_EXT_INT_TIMER_CLR  0x20000000 /* Clear Interrupt timers after IMS clear */
 #define E1000_CTRL_EXT_PBA_CLR        0x80000000 /* PBA Clear */
+#define E1000_CTRL_EXT_LSECCK         0x00001000
 #define E1000_CTRL_EXT_PHYPDEN        0x00100000
 
 /* Receive Descriptor bit definitions */
index 9b434c0cbc9f040143651dcab0322feb0ec93630..ce1dbfdca112e3533ab89ad7779c12665b9fbe8e 100644 (file)
@@ -758,7 +758,13 @@ static s32 e1000_get_variants_ich8lan(struct e1000_adapter *adapter)
        if (rc)
                return rc;
 
-       if (adapter->hw.phy.type == e1000_phy_ife) {
+       /*
+        * Disable Jumbo Frame support on parts with Intel 10/100 PHY or
+        * on parts with MACsec enabled in NVM (reflected in CTRL_EXT).
+        */
+       if ((adapter->hw.phy.type == e1000_phy_ife) ||
+           ((adapter->hw.mac.type >= e1000_pch2lan) &&
+            (!(er32(CTRL_EXT) & E1000_CTRL_EXT_LSECCK)))) {
                adapter->flags &= ~FLAG_HAS_JUMBO_FRAMES;
                adapter->max_hw_frame_size = ETH_FRAME_LEN + ETH_FCS_LEN;
        }