diff options
Diffstat (limited to 'drivers/net/ethernet/intel/igb/igb_main.c')
-rw-r--r-- | drivers/net/ethernet/intel/igb/igb_main.c | 76 |
1 files changed, 26 insertions, 50 deletions
diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c index b07d679b46f2..df1e7907bbaf 100644 --- a/drivers/net/ethernet/intel/igb/igb_main.c +++ b/drivers/net/ethernet/intel/igb/igb_main.c | |||
@@ -1785,58 +1785,34 @@ static const struct net_device_ops igb_netdev_ops = { | |||
1785 | void igb_set_fw_version(struct igb_adapter *adapter) | 1785 | void igb_set_fw_version(struct igb_adapter *adapter) |
1786 | { | 1786 | { |
1787 | struct e1000_hw *hw = &adapter->hw; | 1787 | struct e1000_hw *hw = &adapter->hw; |
1788 | u16 eeprom_verh, eeprom_verl, comb_verh, comb_verl, comb_offset; | 1788 | struct e1000_fw_version fw; |
1789 | u16 major, build, patch, fw_version; | 1789 | |
1790 | u32 etrack_id; | 1790 | igb_get_fw_version(hw, &fw); |
1791 | 1791 | ||
1792 | hw->nvm.ops.read(hw, 5, 1, &fw_version); | 1792 | switch (hw->mac.type) { |
1793 | if (adapter->hw.mac.type != e1000_i211) { | 1793 | case e1000_i211: |
1794 | hw->nvm.ops.read(hw, NVM_ETRACK_WORD, 1, &eeprom_verh); | ||
1795 | hw->nvm.ops.read(hw, (NVM_ETRACK_WORD + 1), 1, &eeprom_verl); | ||
1796 | etrack_id = (eeprom_verh << IGB_ETRACK_SHIFT) | eeprom_verl; | ||
1797 | |||
1798 | /* combo image version needs to be found */ | ||
1799 | hw->nvm.ops.read(hw, NVM_COMB_VER_PTR, 1, &comb_offset); | ||
1800 | if ((comb_offset != 0x0) && | ||
1801 | (comb_offset != IGB_NVM_VER_INVALID)) { | ||
1802 | hw->nvm.ops.read(hw, (NVM_COMB_VER_OFF + comb_offset | ||
1803 | + 1), 1, &comb_verh); | ||
1804 | hw->nvm.ops.read(hw, (NVM_COMB_VER_OFF + comb_offset), | ||
1805 | 1, &comb_verl); | ||
1806 | |||
1807 | /* Only display Option Rom if it exists and is valid */ | ||
1808 | if ((comb_verh && comb_verl) && | ||
1809 | ((comb_verh != IGB_NVM_VER_INVALID) && | ||
1810 | (comb_verl != IGB_NVM_VER_INVALID))) { | ||
1811 | major = comb_verl >> IGB_COMB_VER_SHFT; | ||
1812 | build = (comb_verl << IGB_COMB_VER_SHFT) | | ||
1813 | (comb_verh >> IGB_COMB_VER_SHFT); | ||
1814 | patch = comb_verh & IGB_COMB_VER_MASK; | ||
1815 | snprintf(adapter->fw_version, | ||
1816 | sizeof(adapter->fw_version), | ||
1817 | "%d.%d%d, 0x%08x, %d.%d.%d", | ||
1818 | (fw_version & IGB_MAJOR_MASK) >> | ||
1819 | IGB_MAJOR_SHIFT, | ||
1820 | (fw_version & IGB_MINOR_MASK) >> | ||
1821 | IGB_MINOR_SHIFT, | ||
1822 | (fw_version & IGB_BUILD_MASK), | ||
1823 | etrack_id, major, build, patch); | ||
1824 | goto out; | ||
1825 | } | ||
1826 | } | ||
1827 | snprintf(adapter->fw_version, sizeof(adapter->fw_version), | ||
1828 | "%d.%d%d, 0x%08x", | ||
1829 | (fw_version & IGB_MAJOR_MASK) >> IGB_MAJOR_SHIFT, | ||
1830 | (fw_version & IGB_MINOR_MASK) >> IGB_MINOR_SHIFT, | ||
1831 | (fw_version & IGB_BUILD_MASK), etrack_id); | ||
1832 | } else { | ||
1833 | snprintf(adapter->fw_version, sizeof(adapter->fw_version), | 1794 | snprintf(adapter->fw_version, sizeof(adapter->fw_version), |
1834 | "%d.%d%d", | 1795 | "%2d.%2d-%d", |
1835 | (fw_version & IGB_MAJOR_MASK) >> IGB_MAJOR_SHIFT, | 1796 | fw.invm_major, fw.invm_minor, fw.invm_img_type); |
1836 | (fw_version & IGB_MINOR_MASK) >> IGB_MINOR_SHIFT, | 1797 | break; |
1837 | (fw_version & IGB_BUILD_MASK)); | 1798 | |
1799 | default: | ||
1800 | /* if option is rom valid, display its version too */ | ||
1801 | if (fw.or_valid) { | ||
1802 | snprintf(adapter->fw_version, | ||
1803 | sizeof(adapter->fw_version), | ||
1804 | "%d.%d, 0x%08x, %d.%d.%d", | ||
1805 | fw.eep_major, fw.eep_minor, fw.etrack_id, | ||
1806 | fw.or_major, fw.or_build, fw.or_patch); | ||
1807 | /* no option rom */ | ||
1808 | } else { | ||
1809 | snprintf(adapter->fw_version, | ||
1810 | sizeof(adapter->fw_version), | ||
1811 | "%d.%d, 0x%08x", | ||
1812 | fw.eep_major, fw.eep_minor, fw.etrack_id); | ||
1813 | } | ||
1814 | break; | ||
1838 | } | 1815 | } |
1839 | out: | ||
1840 | return; | 1816 | return; |
1841 | } | 1817 | } |
1842 | 1818 | ||