]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
ixgbe: change the eeprom version reported by ethtool
authorEmil Tantilov <emil.s.tantilov@intel.com>
Thu, 29 Sep 2011 05:01:29 +0000 (05:01 +0000)
committerJoe Jin <joe.jin@oracle.com>
Thu, 17 May 2012 14:23:22 +0000 (22:23 +0800)
Use 32bit value starting at offset 0x2d for displaying the firmware
version in ethtool. This should work for all current ixgbe HW

(cherry picked from commit 15e5209f1c606e7c3e9b268f5c7b70b414a859cb)
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>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
drivers/net/ixgbe/ixgbe.h
drivers/net/ixgbe/ixgbe_ethtool.c
drivers/net/ixgbe/ixgbe_main.c

index c1f76aaf87744ea444a2eb4554f0cf1b431f537b..5f3471336642be56e49bd19f6a57967700ff99e6 100644 (file)
@@ -495,7 +495,8 @@ struct ixgbe_adapter {
        u64 rsc_total_count;
        u64 rsc_total_flush;
        u32 wol;
-       u16 eeprom_version;
+       u16 eeprom_verh;
+       u16 eeprom_verl;
        u16 eeprom_cap;
 
        int node;
index 05a024cdd678867ad334fcc86b0003b751087dca..a65860592cae63bc35524b859cfa7c649bb191c9 100644 (file)
@@ -888,21 +888,22 @@ static void ixgbe_get_drvinfo(struct net_device *netdev,
 {
        struct ixgbe_adapter *adapter = netdev_priv(netdev);
        char firmware_version[32];
+       u32 nvm_track_id;
 
        strncpy(drvinfo->driver, ixgbe_driver_name,
                sizeof(drvinfo->driver) - 1);
        strncpy(drvinfo->version, ixgbe_driver_version,
                sizeof(drvinfo->version) - 1);
 
-       snprintf(firmware_version, sizeof(firmware_version), "%d.%d-%d",
-                (adapter->eeprom_version & 0xF000) >> 12,
-                (adapter->eeprom_version & 0x0FF0) >> 4,
-                adapter->eeprom_version & 0x000F);
+       nvm_track_id = (adapter->eeprom_verh << 16) |
+                       adapter->eeprom_verl;
+       snprintf(firmware_version, sizeof(firmware_version), "0x%08x",
+                nvm_track_id);
 
        strncpy(drvinfo->fw_version, firmware_version,
-               sizeof(drvinfo->fw_version));
+               sizeof(drvinfo->fw_version) - 1);
        strncpy(drvinfo->bus_info, pci_name(adapter->pdev),
-               sizeof(drvinfo->bus_info));
+               sizeof(drvinfo->bus_info) - 1);
        drvinfo->n_stats = IXGBE_STATS_LEN;
        drvinfo->testinfo_len = IXGBE_TEST_LEN;
        drvinfo->regdump_len = ixgbe_get_regs_len(netdev);
index bc0a2d11df31f0c636457d98faa3084ab52a51c3..3c063bc4f1b6b5dacac73933f21153a562933ab9 100644 (file)
@@ -7634,6 +7634,10 @@ static int __devinit ixgbe_probe(struct pci_dev *pdev,
        }
        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 */
        hw->mac.ops.get_bus_info(hw);
 
@@ -7666,9 +7670,6 @@ static int __devinit ixgbe_probe(struct pci_dev *pdev,
                           "is required.\n");
        }
 
-       /* save off EEPROM version number */
-       hw->eeprom.ops.read(hw, 0x29, &adapter->eeprom_version);
-
        /* reset the hardware with the new settings */
        err = hw->mac.ops.start_hw(hw);