Yes, etrack_id is an unique value. But not all NICs have this value. I didn't find any value about fw version in fm10k. I40e is 8 bit too. firmware-version: 5.04 0x800024ca
-----Original Message----- From: Yigit, Ferruh Sent: Wednesday, January 4, 2017 5:06 PM To: Yang, Qiming <qiming.y...@intel.com>; dev@dpdk.org; thomas.monja...@6wind.com Cc: Horton, Remy <remy.hor...@intel.com> Subject: Re: [PATCH v3 3/4] net/ixgbe: add firmware version get On 1/4/2017 2:44 AM, Yang, Qiming wrote: > You can see the kernel version ethtool, use command 'ethtool -i <ixgbe NIC > name>' > driver: ixgbe > version: 4.2.1-k > firmware-version: 0x61bf0001 > > Ixgbe's FW version do not have the major and minor number, and the original > purpose of this function is get FW version, so I think it's enough. Is etrack_id a unique value that defines the FW version on its own? And is above definition true for all NICs (or at least Intel ones)? Because I can see i40e is using 4 bit value for etrack_id ? > > -----Original Message----- > From: Yigit, Ferruh > Sent: Tuesday, January 3, 2017 11:04 PM > To: Yang, Qiming <qiming.y...@intel.com>; dev@dpdk.org; > thomas.monja...@6wind.com > Cc: Horton, Remy <remy.hor...@intel.com> > Subject: Re: [PATCH v3 3/4] net/ixgbe: add firmware version get > > On 12/27/2016 12:30 PM, Qiming Yang wrote: >> This patch add a new function ixgbe_fw_version_get. >> >> Signed-off-by: Qiming Yang <qiming.y...@intel.com> > > <...> > >> >> static void >> +ixgbe_fw_version_get(struct rte_eth_dev *dev, __rte_unused u32 *fw_major, >> + __rte_unused u32 *fw_minor, __rte_unused u32 *fw_patch, u32 >> +*etrack_id) > > This API at least provide major and minor fw versions I think. Isn't there > any kind of FW version information for ixgbe? Just providing etrack_id is not > looking good. > >> +{ >> + struct ixgbe_hw *hw = IXGBE_DEV_PRIVATE_TO_HW(dev->data->dev_private); >> + u16 eeprom_verh, eeprom_verl; >> + >> + ixgbe_read_eeprom(hw, 0x2e, &eeprom_verh); >> + ixgbe_read_eeprom(hw, 0x2d, &eeprom_verl); >> + >> + *etrack_id = (eeprom_verh << 16) | eeprom_verl; } >> + >> +static void >> ixgbe_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info >> *dev_info) { >> struct rte_pci_device *pci_dev = IXGBE_DEV_TO_PCI(dev); >> >