bnxt_en: Store the running firmware version code.
We currently only store the firmware version as a string for ethtool and devlink info. Store it also as a version code. The next 2 patches will need to check the firmware major version to determine some workarounds. We also use the 16-bit firmware version fields if the firmware is newer and provides the 16-bit fields. Reviewed-by: Edwin Peer <edwin.peer@broadcom.com> Signed-off-by: Michael Chan <michael.chan@broadcom.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
a83024b95a
commit
d0ad2ea2bc
|
@ -7240,8 +7240,9 @@ 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;
|
||||
u16 fw_maj, fw_min, fw_bld, fw_rsv;
|
||||
u32 dev_caps_cfg, hwrm_ver;
|
||||
int rc;
|
||||
int rc, len;
|
||||
|
||||
bp->hwrm_max_req_len = HWRM_MAX_REQ_LEN;
|
||||
mutex_lock(&bp->hwrm_cmd_lock);
|
||||
|
@ -7273,9 +7274,22 @@ static int bnxt_hwrm_ver_get(struct bnxt *bp)
|
|||
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);
|
||||
fw_maj = le16_to_cpu(resp->hwrm_fw_major);
|
||||
if (bp->hwrm_spec_code > 0x10803 && fw_maj) {
|
||||
fw_min = le16_to_cpu(resp->hwrm_fw_minor);
|
||||
fw_bld = le16_to_cpu(resp->hwrm_fw_build);
|
||||
fw_rsv = le16_to_cpu(resp->hwrm_fw_patch);
|
||||
len = FW_VER_STR_LEN;
|
||||
} else {
|
||||
fw_maj = resp->hwrm_fw_maj_8b;
|
||||
fw_min = resp->hwrm_fw_min_8b;
|
||||
fw_bld = resp->hwrm_fw_bld_8b;
|
||||
fw_rsv = resp->hwrm_fw_rsvd_8b;
|
||||
len = BC_HWRM_STR_LEN;
|
||||
}
|
||||
bp->fw_ver_code = BNXT_FW_VER_CODE(fw_maj, fw_min, fw_bld, fw_rsv);
|
||||
snprintf(bp->fw_ver_str, len, "%d.%d.%d.%d", fw_maj, fw_min, fw_bld,
|
||||
fw_rsv);
|
||||
|
||||
if (strlen(resp->active_pkg_name)) {
|
||||
int fw_ver_len = strlen(bp->fw_ver_str);
|
||||
|
|
|
@ -1746,6 +1746,10 @@ struct bnxt {
|
|||
#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];
|
||||
u64 fw_ver_code;
|
||||
#define BNXT_FW_VER_CODE(maj, min, bld, rsv) \
|
||||
((u64)(maj) << 48 | (u64)(min) << 32 | (u64)(bld) << 16 | (rsv))
|
||||
|
||||
__be16 vxlan_port;
|
||||
u8 vxlan_port_cnt;
|
||||
__le16 vxlan_fw_dst_port_id;
|
||||
|
|
Loading…
Reference in New Issue