igb: Add check for invalid size to igb_get_invariants_82575()
authorCarolyn Wyborny <carolyn.wyborny@intel.com>
Wed, 4 May 2011 04:29:51 +0000 (04:29 +0000)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Wed, 4 May 2011 19:09:53 +0000 (12:09 -0700)
Recent commits have changed how EEPROM size is checked and if the size
word is misconfigured, the driver will fail to load.  This patch adds a
check for invalid size word in the EEPROM and uses default size instead
for 82576 parts.

Reported-by: Stefan Assmann <sassmann@redhat.com>
Signed-off-by: Carolyn Wyborny <carolyn.wyborny@intel.com>
Tested-by: Jeff Pieper <jeffrey.e.pieper@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/igb/e1000_82575.c

index 0cd41c49bc17d2d871ece8b3e0d0eefbb75c71c7..0f563c8c5ffcfbeef9939dad90eb8cb1cf2a1405 100644 (file)
@@ -244,6 +244,14 @@ static s32 igb_get_invariants_82575(struct e1000_hw *hw)
         */
        size += NVM_WORD_SIZE_BASE_SHIFT;
 
+       /*
+        * Check for invalid size
+        */
+       if ((hw->mac.type == e1000_82576) && (size > 15)) {
+               printk("igb: The NVM size is not valid, "
+                       "defaulting to 32K.\n");
+               size = 15;
+       }
        nvm->word_size = 1 << size;
        if (nvm->word_size == (1 << 15))
                nvm->page_size = 128;