Browse Source

[PATCH] e1000: Included proposals to false late collisions due to H/W latencies

Included proposals to false late collisions due to H/W latencies

Signed-off-by: Mallikarjuna R Chilakala <mallikarjuna.chilakala@intel.com>
Signed-off-by: Ganesh Venkatesan <ganesh.venkatesan@intel.com>
Signed-off-by: John Ronciak <john.ronciak@intel.com>
Malli Chilakala 20 years ago
parent
commit
3893d54731
2 changed files with 15 additions and 5 deletions
  1. 14 5
      drivers/net/e1000/e1000_hw.c
  2. 1 0
      drivers/net/e1000/e1000_hw.h

+ 14 - 5
drivers/net/e1000/e1000_hw.c

@@ -354,18 +354,27 @@ e1000_set_media_type(struct e1000_hw *hw)
         hw->media_type = e1000_media_type_internal_serdes;
         hw->media_type = e1000_media_type_internal_serdes;
         break;
         break;
     default:
     default:
-        if(hw->mac_type >= e1000_82543) {
+        switch (hw->mac_type) {
+        case e1000_82542_rev2_0:
+        case e1000_82542_rev2_1:
+            hw->media_type = e1000_media_type_fiber;
+            break;
+        case e1000_82573:
+            /* The STATUS_TBIMODE bit is reserved or reused for the this
+             * device.
+             */
+            hw->media_type = e1000_media_type_copper;
+            break;
+        default:
             status = E1000_READ_REG(hw, STATUS);
             status = E1000_READ_REG(hw, STATUS);
-            if(status & E1000_STATUS_TBIMODE) {
+            if (status & E1000_STATUS_TBIMODE) {
                 hw->media_type = e1000_media_type_fiber;
                 hw->media_type = e1000_media_type_fiber;
                 /* tbi_compatibility not valid on fiber */
                 /* tbi_compatibility not valid on fiber */
                 hw->tbi_compatibility_en = FALSE;
                 hw->tbi_compatibility_en = FALSE;
             } else {
             } else {
                 hw->media_type = e1000_media_type_copper;
                 hw->media_type = e1000_media_type_copper;
             }
             }
-        } else {
-            /* This is an 82542 (fiber only) */
-            hw->media_type = e1000_media_type_fiber;
+            break;
         }
         }
     }
     }
 }
 }

+ 1 - 0
drivers/net/e1000/e1000_hw.h

@@ -66,6 +66,7 @@ typedef enum {
     e1000_eeprom_spi,
     e1000_eeprom_spi,
     e1000_eeprom_microwire,
     e1000_eeprom_microwire,
     e1000_eeprom_flash,
     e1000_eeprom_flash,
+    e1000_eeprom_none, /* No NVM support */
     e1000_num_eeprom_types
     e1000_num_eeprom_types
 } e1000_eeprom_type;
 } e1000_eeprom_type;