ixgbe: change the eeprom version reported by ethtool
Use 32bit value starting at offset 0x2d for displaying the firmware version in ethtool. This should work for all current ixgbe HW Signed-off-by: Emil Tantilov <emil.s.tantilov@intel.com> Tested-by: Stephen Ko <stephen.s.ko@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
This commit is contained in:
Родитель
2fa5eef4d1
Коммит
15e5209f1c
|
@ -497,7 +497,8 @@ struct ixgbe_adapter {
|
||||||
u64 rsc_total_count;
|
u64 rsc_total_count;
|
||||||
u64 rsc_total_flush;
|
u64 rsc_total_flush;
|
||||||
u32 wol;
|
u32 wol;
|
||||||
u16 eeprom_version;
|
u16 eeprom_verh;
|
||||||
|
u16 eeprom_verl;
|
||||||
u16 eeprom_cap;
|
u16 eeprom_cap;
|
||||||
|
|
||||||
int node;
|
int node;
|
||||||
|
|
|
@ -889,21 +889,22 @@ static void ixgbe_get_drvinfo(struct net_device *netdev,
|
||||||
{
|
{
|
||||||
struct ixgbe_adapter *adapter = netdev_priv(netdev);
|
struct ixgbe_adapter *adapter = netdev_priv(netdev);
|
||||||
char firmware_version[32];
|
char firmware_version[32];
|
||||||
|
u32 nvm_track_id;
|
||||||
|
|
||||||
strncpy(drvinfo->driver, ixgbe_driver_name,
|
strncpy(drvinfo->driver, ixgbe_driver_name,
|
||||||
sizeof(drvinfo->driver) - 1);
|
sizeof(drvinfo->driver) - 1);
|
||||||
strncpy(drvinfo->version, ixgbe_driver_version,
|
strncpy(drvinfo->version, ixgbe_driver_version,
|
||||||
sizeof(drvinfo->version) - 1);
|
sizeof(drvinfo->version) - 1);
|
||||||
|
|
||||||
snprintf(firmware_version, sizeof(firmware_version), "%d.%d-%d",
|
nvm_track_id = (adapter->eeprom_verh << 16) |
|
||||||
(adapter->eeprom_version & 0xF000) >> 12,
|
adapter->eeprom_verl;
|
||||||
(adapter->eeprom_version & 0x0FF0) >> 4,
|
snprintf(firmware_version, sizeof(firmware_version), "0x%08x",
|
||||||
adapter->eeprom_version & 0x000F);
|
nvm_track_id);
|
||||||
|
|
||||||
strncpy(drvinfo->fw_version, firmware_version,
|
strncpy(drvinfo->fw_version, firmware_version,
|
||||||
sizeof(drvinfo->fw_version));
|
sizeof(drvinfo->fw_version) - 1);
|
||||||
strncpy(drvinfo->bus_info, pci_name(adapter->pdev),
|
strncpy(drvinfo->bus_info, pci_name(adapter->pdev),
|
||||||
sizeof(drvinfo->bus_info));
|
sizeof(drvinfo->bus_info) - 1);
|
||||||
drvinfo->n_stats = IXGBE_STATS_LEN;
|
drvinfo->n_stats = IXGBE_STATS_LEN;
|
||||||
drvinfo->testinfo_len = IXGBE_TEST_LEN;
|
drvinfo->testinfo_len = IXGBE_TEST_LEN;
|
||||||
drvinfo->regdump_len = ixgbe_get_regs_len(netdev);
|
drvinfo->regdump_len = ixgbe_get_regs_len(netdev);
|
||||||
|
|
|
@ -7640,6 +7640,10 @@ static int __devinit ixgbe_probe(struct pci_dev *pdev,
|
||||||
}
|
}
|
||||||
device_set_wakeup_enable(&adapter->pdev->dev, adapter->wol);
|
device_set_wakeup_enable(&adapter->pdev->dev, adapter->wol);
|
||||||
|
|
||||||
|
/* save off EEPROM version number */
|
||||||
|
hw->eeprom.ops.read(hw, 0x2e, &adapter->eeprom_verh);
|
||||||
|
hw->eeprom.ops.read(hw, 0x2d, &adapter->eeprom_verl);
|
||||||
|
|
||||||
/* pick up the PCI bus settings for reporting later */
|
/* pick up the PCI bus settings for reporting later */
|
||||||
hw->mac.ops.get_bus_info(hw);
|
hw->mac.ops.get_bus_info(hw);
|
||||||
|
|
||||||
|
@ -7672,9 +7676,6 @@ static int __devinit ixgbe_probe(struct pci_dev *pdev,
|
||||||
"is required.\n");
|
"is required.\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
/* save off EEPROM version number */
|
|
||||||
hw->eeprom.ops.read(hw, 0x29, &adapter->eeprom_version);
|
|
||||||
|
|
||||||
/* reset the hardware with the new settings */
|
/* reset the hardware with the new settings */
|
||||||
err = hw->mac.ops.start_hw(hw);
|
err = hw->mac.ops.start_hw(hw);
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче