Message ID | 20200820165748.10264-3-khalid.elmously@canonical.com |
---|---|
State | New |
Headers | show |
Series | [SRU,F/Oracle,1/3] bnxt_en: Store the running firmware version code. | expand |
On Thu, Aug 20, 2020 at 12:57:47PM -0400, Khalid Elmously wrote: > From: Michael Chan <michael.chan@broadcom.com> > > BugLink: http://bugs.launchpad.net/bugs/1892397 > > Older firmware may not support legacy TX push properly and may not > be disabling it. So we check certain firmware versions that may > have this problem and disable legacy TX push unconditionally. > > Fixes: c0c050c58d84 ("bnxt_en: New Broadcom ethernet driver.") > 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> > (cherry picked from commit fed7edd18143c68c63ea049999a7e861123de6de) > Signed-off-by: Khalid Elmously <khalid.elmously@canonical.com> Acked-by: William Breathitt Gray <william.gray@canonical.com> > --- > drivers/net/ethernet/broadcom/bnxt/bnxt.c | 3 ++- > drivers/net/ethernet/broadcom/bnxt/bnxt.h | 1 + > 2 files changed, 3 insertions(+), 1 deletion(-) > > diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c > index 3c398c7632c9..93d02e8339c4 100644 > --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c > +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c > @@ -6960,7 +6960,8 @@ static int __bnxt_hwrm_func_qcaps(struct bnxt *bp) > bp->fw_cap |= BNXT_FW_CAP_ERR_RECOVER_RELOAD; > > bp->tx_push_thresh = 0; > - if (flags & FUNC_QCAPS_RESP_FLAGS_PUSH_MODE_SUPPORTED) > + if ((flags & FUNC_QCAPS_RESP_FLAGS_PUSH_MODE_SUPPORTED) && > + BNXT_FW_MAJ(bp) > 217) > bp->tx_push_thresh = BNXT_TX_PUSH_THRESH; > > hw_resc->max_rsscos_ctxs = le16_to_cpu(resp->max_rsscos_ctx); > diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.h b/drivers/net/ethernet/broadcom/bnxt/bnxt.h > index 2f428cb486b8..2e7575b944aa 100644 > --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.h > +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.h > @@ -1702,6 +1702,7 @@ struct bnxt { > u64 fw_ver_code; > #define BNXT_FW_VER_CODE(maj, min, bld, rsv) \ > ((u64)(maj) << 48 | (u64)(min) << 32 | (u64)(bld) << 16 | (rsv)) > +#define BNXT_FW_MAJ(bp) ((bp)->fw_ver_code >> 48) > > __be16 vxlan_port; > u8 vxlan_port_cnt; > -- > 2.17.1 > > > -- > kernel-team mailing list > kernel-team@lists.ubuntu.com > https://lists.ubuntu.com/mailman/listinfo/kernel-team
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c index 3c398c7632c9..93d02e8339c4 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c @@ -6960,7 +6960,8 @@ static int __bnxt_hwrm_func_qcaps(struct bnxt *bp) bp->fw_cap |= BNXT_FW_CAP_ERR_RECOVER_RELOAD; bp->tx_push_thresh = 0; - if (flags & FUNC_QCAPS_RESP_FLAGS_PUSH_MODE_SUPPORTED) + if ((flags & FUNC_QCAPS_RESP_FLAGS_PUSH_MODE_SUPPORTED) && + BNXT_FW_MAJ(bp) > 217) bp->tx_push_thresh = BNXT_TX_PUSH_THRESH; hw_resc->max_rsscos_ctxs = le16_to_cpu(resp->max_rsscos_ctx); diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.h b/drivers/net/ethernet/broadcom/bnxt/bnxt.h index 2f428cb486b8..2e7575b944aa 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.h +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.h @@ -1702,6 +1702,7 @@ struct bnxt { u64 fw_ver_code; #define BNXT_FW_VER_CODE(maj, min, bld, rsv) \ ((u64)(maj) << 48 | (u64)(min) << 32 | (u64)(bld) << 16 | (rsv)) +#define BNXT_FW_MAJ(bp) ((bp)->fw_ver_code >> 48) __be16 vxlan_port; u8 vxlan_port_cnt;