net/ice: fix firmware version result of ethtool
[dpdk.git] / drivers / net / e1000 / base / e1000_nvm.c
index 966a34c..75c2282 100644 (file)
@@ -585,6 +585,9 @@ s32 e1000_read_nvm_eerd(struct e1000_hw *hw, u16 offset, u16 words, u16 *data)
                           E1000_NVM_RW_REG_DATA);
        }
 
+       if (ret_val)
+               DEBUGOUT1("NVM read error: %d\n", ret_val);
+
        return ret_val;
 }
 
@@ -1292,6 +1295,7 @@ void e1000_get_fw_version(struct e1000_hw *hw, struct e1000_fw_version *fw_vers)
        case e1000_82575:
        case e1000_82576:
        case e1000_82580:
+       case e1000_i354:
                hw->nvm.ops.read(hw, NVM_ETRACK_HIWORD, 1, &etrack_test);
                /* Use this format, unless EETRACK ID exists,
                 * then use alternate format
@@ -1370,8 +1374,12 @@ etrack_id:
                hw->nvm.ops.read(hw, (NVM_ETRACK_WORD + 1), 1, &eeprom_verh);
                fw_vers->etrack_id = (eeprom_verh << NVM_ETRACK_SHIFT)
                        | eeprom_verl;
+       } else if ((etrack_test & NVM_ETRACK_VALID) == 0) {
+               hw->nvm.ops.read(hw, NVM_ETRACK_WORD, 1, &eeprom_verh);
+               hw->nvm.ops.read(hw, (NVM_ETRACK_WORD + 1), 1, &eeprom_verl);
+               fw_vers->etrack_id = (eeprom_verh << NVM_ETRACK_SHIFT) |
+                                    eeprom_verl;
        }
-       return;
 }