bnxt_en: Add fw.mgmt.api version to devlink info_get cb.
authorVasundhara Volam <vasundhara-v.volam@broadcom.com>
Fri, 27 Mar 2020 09:34:52 +0000 (15:04 +0530)
committerDavid S. Miller <davem@davemloft.net>
Fri, 27 Mar 2020 22:34:42 +0000 (15:34 -0700)
Display the minimum version of firmware interface spec supported
between driver and firmware. Also update bnxt.rst documentation file.

Signed-off-by: Vasundhara Volam <vasundhara-v.volam@broadcom.com>
Signed-off-by: Michael Chan <michael.chan@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Documentation/networking/devlink/bnxt.rst
drivers/net/ethernet/broadcom/bnxt/bnxt.c
drivers/net/ethernet/broadcom/bnxt/bnxt.h
drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c

index 82ef9ec..7ab34c9 100644 (file)
@@ -66,6 +66,9 @@ The ``bnxt_en`` driver reports the following versions
    * - ``fw.app``
      - stored, running
      - Data path firmware version
+   * - ``fw.mgmt.api``
+     - running
+     - Minimum firmware interface spec version supported between driver and firmware
    * - ``fw.mgmt``
      - stored, running
      - Management firmware version
index 1ea8028..3861dff 100644 (file)
@@ -7223,7 +7223,7 @@ static int __bnxt_hwrm_ver_get(struct bnxt *bp, bool silent)
 static int bnxt_hwrm_ver_get(struct bnxt *bp)
 {
        struct hwrm_ver_get_output *resp = bp->hwrm_cmd_resp_addr;
-       u32 dev_caps_cfg;
+       u32 dev_caps_cfg, hwrm_ver;
        int rc;
 
        bp->hwrm_max_req_len = HWRM_MAX_REQ_LEN;
@@ -7243,6 +7243,19 @@ static int bnxt_hwrm_ver_get(struct bnxt *bp)
                            resp->hwrm_intf_upd_8b);
                netdev_warn(bp->dev, "Please update firmware with HWRM interface 1.0.0 or newer.\n");
        }
+
+       hwrm_ver = HWRM_VERSION_MAJOR << 16 | HWRM_VERSION_MINOR << 8 |
+                       HWRM_VERSION_UPDATE;
+
+       if (bp->hwrm_spec_code > hwrm_ver)
+               snprintf(bp->hwrm_ver_supp, FW_VER_STR_LEN, "%d.%d.%d",
+                        HWRM_VERSION_MAJOR, HWRM_VERSION_MINOR,
+                        HWRM_VERSION_UPDATE);
+       else
+               snprintf(bp->hwrm_ver_supp, FW_VER_STR_LEN, "%d.%d.%d",
+                        resp->hwrm_intf_maj_8b, resp->hwrm_intf_min_8b,
+                        resp->hwrm_intf_upd_8b);
+
        snprintf(bp->fw_ver_str, BC_HWRM_STR_LEN, "%d.%d.%d.%d",
                 resp->hwrm_fw_maj_8b, resp->hwrm_fw_min_8b,
                 resp->hwrm_fw_bld_8b, resp->hwrm_fw_rsvd_8b);
index eaf20e3..a1e9d33 100644 (file)
@@ -1730,6 +1730,7 @@ struct bnxt {
 #define BC_HWRM_STR_LEN                21
 #define PHY_VER_STR_LEN         (FW_VER_STR_LEN - BC_HWRM_STR_LEN)
        char                    fw_ver_str[FW_VER_STR_LEN];
+       char                    hwrm_ver_supp[FW_VER_STR_LEN];
        __be16                  vxlan_port;
        u8                      vxlan_port_cnt;
        __le16                  vxlan_fw_dst_port_id;
index d3c93cc..39c2ac4 100644 (file)
@@ -475,6 +475,12 @@ static int bnxt_dl_info_get(struct devlink *dl, struct devlink_info_req *req,
        if (rc)
                return rc;
 
+       rc = devlink_info_version_running_put(req,
+                               DEVLINK_INFO_VERSION_GENERIC_FW_MGMT_API,
+                               bp->hwrm_ver_supp);
+       if (rc)
+               return rc;
+
        if (!(bp->flags & BNXT_FLAG_CHIP_P5)) {
                rc = devlink_info_version_running_put(req,
                        DEVLINK_INFO_VERSION_GENERIC_FW_MGMT, mgmt_ver);