igb: Add device support for flashless SKU of i210 device
authorCarolyn Wyborny <carolyn.wyborny@intel.com>
Tue, 16 Jul 2013 19:18:36 +0000 (19:18 +0000)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Thu, 22 Aug 2013 09:26:06 +0000 (02:26 -0700)
This patch adds the specific device id support for versions of i210 that do
not have flash installed.

Signed-off-by: Carolyn Wyborny <carolyn.wyborny@intel.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/igb/e1000_82575.c
drivers/net/ethernet/intel/igb/e1000_hw.h
drivers/net/ethernet/intel/igb/igb_ethtool.c
drivers/net/ethernet/intel/igb/igb_main.c

index 8d79face07173a9cee599335340d53de04ac7955..d398fad6eedc78d2a8f080f7dd0ec32182548979 100644 (file)
@@ -483,6 +483,8 @@ static s32 igb_get_invariants_82575(struct e1000_hw *hw)
        case E1000_DEV_ID_I210_FIBER:
        case E1000_DEV_ID_I210_SERDES:
        case E1000_DEV_ID_I210_SGMII:
+       case E1000_DEV_ID_I210_COPPER_FLASHLESS:
+       case E1000_DEV_ID_I210_SERDES_FLASHLESS:
                mac->type = e1000_i210;
                break;
        case E1000_DEV_ID_I211_COPPER:
index 4329e8c17b332ad286d9c5b5af353d9c55cbdc42..37a9c06a6c6816bf3f87c82986851504d79d7b71 100644 (file)
@@ -67,6 +67,8 @@ struct e1000_hw;
 #define E1000_DEV_ID_I210_FIBER                        0x1536
 #define E1000_DEV_ID_I210_SERDES               0x1537
 #define E1000_DEV_ID_I210_SGMII                        0x1538
+#define E1000_DEV_ID_I210_COPPER_FLASHLESS     0x157B
+#define E1000_DEV_ID_I210_SERDES_FLASHLESS     0x157C
 #define E1000_DEV_ID_I211_COPPER               0x1539
 #define E1000_DEV_ID_I354_BACKPLANE_1GBPS      0x1F40
 #define E1000_DEV_ID_I354_SGMII                        0x1F41
index 6d861a5c729a984f684f93c6bb3ad6b4995b5964..03137e21551dff68644c66ab5309cfb0324b1ceb 100644 (file)
@@ -1335,12 +1335,23 @@ static int igb_reg_test(struct igb_adapter *adapter, u64 *data)
 
 static int igb_eeprom_test(struct igb_adapter *adapter, u64 *data)
 {
+       struct e1000_hw *hw = &adapter->hw;
+
        *data = 0;
 
-       /* Validate eeprom on all parts but i211 */
-       if (adapter->hw.mac.type != e1000_i211) {
+       /* Validate eeprom on all parts but flashless */
+       switch (hw->mac.type) {
+       case e1000_i210:
+       case e1000_i211:
+               if (igb_get_flash_presence_i210(hw)) {
+                       if (adapter->hw.nvm.ops.validate(&adapter->hw) < 0)
+                               *data = 2;
+               }
+               break;
+       default:
                if (adapter->hw.nvm.ops.validate(&adapter->hw) < 0)
                        *data = 2;
+               break;
        }
 
        return *data;
index 387864db72595c5f06585e30a264359ef65a17b9..a53c77b5aa8d21219bedfdc87591cd6f091f6d0d 100644 (file)
@@ -85,6 +85,8 @@ static DEFINE_PCI_DEVICE_TABLE(igb_pci_tbl) = {
        { PCI_VDEVICE(INTEL, E1000_DEV_ID_I210_FIBER), board_82575 },
        { PCI_VDEVICE(INTEL, E1000_DEV_ID_I210_SERDES), board_82575 },
        { PCI_VDEVICE(INTEL, E1000_DEV_ID_I210_SGMII), board_82575 },
+       { PCI_VDEVICE(INTEL, E1000_DEV_ID_I210_COPPER_FLASHLESS), board_82575 },
+       { PCI_VDEVICE(INTEL, E1000_DEV_ID_I210_SERDES_FLASHLESS), board_82575 },
        { PCI_VDEVICE(INTEL, E1000_DEV_ID_I350_COPPER), board_82575 },
        { PCI_VDEVICE(INTEL, E1000_DEV_ID_I350_FIBER), board_82575 },
        { PCI_VDEVICE(INTEL, E1000_DEV_ID_I350_SERDES), board_82575 },