#define IGC_NVM_RW_REG_START   1    /* Start operation */
 #define IGC_NVM_RW_ADDR_SHIFT  2    /* Shift to the address bits */
 #define IGC_NVM_POLL_READ      0    /* Flag for polling for read complete */
+#define IGC_NVM_DEV_STARTER    5    /* Dev_starter Version */
 
 /* NVM Word Offsets */
 #define NVM_CHECKSUM_REG               0x003F
 
                                    struct ethtool_drvinfo *drvinfo)
 {
        struct igc_adapter *adapter = netdev_priv(netdev);
+       struct igc_hw *hw = &adapter->hw;
+       u16 nvm_version = 0;
+
+       strscpy(drvinfo->driver, igc_driver_name, sizeof(drvinfo->driver));
+
+       /* NVM image version is reported as firmware version for i225 device */
+       hw->nvm.ops.read(hw, IGC_NVM_DEV_STARTER, 1, &nvm_version);
+
+       scnprintf(adapter->fw_version,
+                 sizeof(adapter->fw_version),
+                 "%x",
+                 nvm_version);
 
-       strlcpy(drvinfo->driver,  igc_driver_name, sizeof(drvinfo->driver));
+       strscpy(drvinfo->fw_version, adapter->fw_version,
+               sizeof(drvinfo->fw_version));
 
-       /* add fw_version here */
        strlcpy(drvinfo->bus_info, pci_name(adapter->pdev),
                sizeof(drvinfo->bus_info));