From e2652b0a20a0194f2eb0d13ae058ce5624a70904 Mon Sep 17 00:00:00 2001 From: Ajit Khaparde Date: Thu, 1 Jun 2017 12:07:08 -0500 Subject: [PATCH] net/bnxt: support get FW version This patch adds support for fw_version_get dev_op Signed-off-by: Ajit Khaparde --- doc/guides/nics/features/bnxt.ini | 1 + drivers/net/bnxt/bnxt_ethdev.c | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/doc/guides/nics/features/bnxt.ini b/doc/guides/nics/features/bnxt.ini index df632506a5..457d79d0ba 100644 --- a/doc/guides/nics/features/bnxt.ini +++ b/doc/guides/nics/features/bnxt.ini @@ -16,6 +16,7 @@ VLAN filter = Y VLAN offload = Y Basic stats = Y Extended stats = Y +FW version = Y Linux UIO = Y Linux VFIO = Y x86-64 = Y diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c index c2d46827fb..ec6b6b63b4 100644 --- a/drivers/net/bnxt/bnxt_ethdev.c +++ b/drivers/net/bnxt/bnxt_ethdev.c @@ -1356,6 +1356,25 @@ allmulti: return bnxt_hwrm_cfa_l2_set_rx_mask(bp, vnic); } +static int +bnxt_fw_version_get(struct rte_eth_dev *dev, char *fw_version, size_t fw_size) +{ + struct bnxt *bp = (struct bnxt *)dev->data->dev_private; + uint8_t fw_major = (bp->fw_ver >> 24) & 0xff; + uint8_t fw_minor = (bp->fw_ver >> 16) & 0xff; + uint8_t fw_updt = (bp->fw_ver >> 8) & 0xff; + int ret; + + ret = snprintf(fw_version, fw_size, "%d.%d.%d", + fw_major, fw_minor, fw_updt); + + ret += 1; /* add the size of '\0' */ + if (fw_size < (uint32_t)ret) + return ret; + else + return 0; +} + /* * Initialization */ @@ -1395,6 +1414,7 @@ static const struct eth_dev_ops bnxt_dev_ops = { .xstats_get = bnxt_dev_xstats_get_op, .xstats_get_names = bnxt_dev_xstats_get_names_op, .xstats_reset = bnxt_dev_xstats_reset_op, + .fw_version_get = bnxt_fw_version_get, .set_mc_addr_list = bnxt_dev_set_mc_addr_list_op, }; -- 2.20.1