From: Pankaj Gupta Date: Wed, 25 May 2022 00:40:24 +0000 (-0700) Subject: net/vmxnet3: report HW version on FW version query X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=b1cf566b722baf82c74858d2f5a05c653768894d;p=dpdk.git net/vmxnet3: report HW version on FW version query Support rte_eth_dev_fw_version_get() API. Tested, using testpmd, for different hardware versions on ESXi 7.0 Update 2. Signed-off-by: Pankaj Gupta Reviewed-by: Jochen Behrens Signed-off-by: Andrew Rybchenko --- diff --git a/drivers/net/vmxnet3/vmxnet3_ethdev.c b/drivers/net/vmxnet3/vmxnet3_ethdev.c index e84d304378..62844f3d39 100644 --- a/drivers/net/vmxnet3/vmxnet3_ethdev.c +++ b/drivers/net/vmxnet3/vmxnet3_ethdev.c @@ -85,6 +85,8 @@ static int vmxnet3_dev_xstats_get(struct rte_eth_dev *dev, struct rte_eth_xstat *xstats, unsigned int n); static int vmxnet3_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info); +static int vmxnet3_hw_ver_get(struct rte_eth_dev *dev, + char *fw_version, size_t fw_size); static const uint32_t * vmxnet3_dev_supported_ptypes_get(struct rte_eth_dev *dev); static int vmxnet3_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu); @@ -103,6 +105,7 @@ static int vmxnet3_rss_reta_query(struct rte_eth_dev *dev, struct rte_eth_rss_reta_entry64 *reta_conf, uint16_t reta_size); + static int vmxnet3_dev_rx_queue_intr_enable(struct rte_eth_dev *dev, uint16_t queue_id); static int vmxnet3_dev_rx_queue_intr_disable(struct rte_eth_dev *dev, @@ -136,6 +139,7 @@ static const struct eth_dev_ops vmxnet3_eth_dev_ops = { .xstats_get = vmxnet3_dev_xstats_get, .xstats_get_names = vmxnet3_dev_xstats_get_names, .dev_infos_get = vmxnet3_dev_info_get, + .fw_version_get = vmxnet3_hw_ver_get, .dev_supported_ptypes_get = vmxnet3_dev_supported_ptypes_get, .vlan_filter_set = vmxnet3_dev_vlan_filter_set, .vlan_offload_set = vmxnet3_dev_vlan_offload_set, @@ -1410,6 +1414,22 @@ vmxnet3_dev_info_get(struct rte_eth_dev *dev, return 0; } +static int +vmxnet3_hw_ver_get(struct rte_eth_dev *dev, + char *fw_version, size_t fw_size) +{ + int ret; + struct vmxnet3_hw *hw = dev->data->dev_private; + + ret = snprintf(fw_version, fw_size, "v%d", hw->version); + + ret += 1; /* add the size of '\0' */ + if (fw_size < (uint32_t)ret) + return ret; + else + return 0; +} + static const uint32_t * vmxnet3_dev_supported_ptypes_get(struct rte_eth_dev *dev) {