mirror of https://gitee.com/openkylin/linux.git
bnxt_en: Add the new firmware API to query hardware resources.
The new API HWRM_FUNC_RESOURCE_QCAPS provides min and max hardware resources. Use the new API when it is supported by firmware. Signed-off-by: Michael Chan <michael.chan@broadcom.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
6a4f294705
commit
be0dd9c410
|
@ -4791,7 +4791,46 @@ static int bnxt_hwrm_func_qcfg(struct bnxt *bp)
|
|||
return rc;
|
||||
}
|
||||
|
||||
static int bnxt_hwrm_func_qcaps(struct bnxt *bp)
|
||||
static int bnxt_hwrm_func_resc_qcaps(struct bnxt *bp)
|
||||
{
|
||||
struct hwrm_func_resource_qcaps_output *resp = bp->hwrm_cmd_resp_addr;
|
||||
struct hwrm_func_resource_qcaps_input req = {0};
|
||||
struct bnxt_hw_resc *hw_resc = &bp->hw_resc;
|
||||
int rc;
|
||||
|
||||
bnxt_hwrm_cmd_hdr_init(bp, &req, HWRM_FUNC_RESOURCE_QCAPS, -1, -1);
|
||||
req.fid = cpu_to_le16(0xffff);
|
||||
|
||||
mutex_lock(&bp->hwrm_cmd_lock);
|
||||
rc = _hwrm_send_message(bp, &req, sizeof(req), HWRM_CMD_TIMEOUT);
|
||||
if (rc) {
|
||||
rc = -EIO;
|
||||
goto hwrm_func_resc_qcaps_exit;
|
||||
}
|
||||
|
||||
hw_resc->min_rsscos_ctxs = le16_to_cpu(resp->min_rsscos_ctx);
|
||||
hw_resc->max_rsscos_ctxs = le16_to_cpu(resp->max_rsscos_ctx);
|
||||
hw_resc->min_cp_rings = le16_to_cpu(resp->min_cmpl_rings);
|
||||
hw_resc->max_cp_rings = le16_to_cpu(resp->max_cmpl_rings);
|
||||
hw_resc->min_tx_rings = le16_to_cpu(resp->min_tx_rings);
|
||||
hw_resc->max_tx_rings = le16_to_cpu(resp->max_tx_rings);
|
||||
hw_resc->min_rx_rings = le16_to_cpu(resp->min_rx_rings);
|
||||
hw_resc->max_rx_rings = le16_to_cpu(resp->max_rx_rings);
|
||||
hw_resc->min_hw_ring_grps = le16_to_cpu(resp->min_hw_ring_grps);
|
||||
hw_resc->max_hw_ring_grps = le16_to_cpu(resp->max_hw_ring_grps);
|
||||
hw_resc->min_l2_ctxs = le16_to_cpu(resp->min_l2_ctxs);
|
||||
hw_resc->max_l2_ctxs = le16_to_cpu(resp->max_l2_ctxs);
|
||||
hw_resc->min_vnics = le16_to_cpu(resp->min_vnics);
|
||||
hw_resc->max_vnics = le16_to_cpu(resp->max_vnics);
|
||||
hw_resc->min_stat_ctxs = le16_to_cpu(resp->min_stat_ctx);
|
||||
hw_resc->max_stat_ctxs = le16_to_cpu(resp->max_stat_ctx);
|
||||
|
||||
hwrm_func_resc_qcaps_exit:
|
||||
mutex_unlock(&bp->hwrm_cmd_lock);
|
||||
return rc;
|
||||
}
|
||||
|
||||
static int __bnxt_hwrm_func_qcaps(struct bnxt *bp)
|
||||
{
|
||||
int rc = 0;
|
||||
struct hwrm_func_qcaps_input req = {0};
|
||||
|
@ -4859,6 +4898,21 @@ static int bnxt_hwrm_func_qcaps(struct bnxt *bp)
|
|||
return rc;
|
||||
}
|
||||
|
||||
static int bnxt_hwrm_func_qcaps(struct bnxt *bp)
|
||||
{
|
||||
int rc;
|
||||
|
||||
rc = __bnxt_hwrm_func_qcaps(bp);
|
||||
if (rc)
|
||||
return rc;
|
||||
if (bp->hwrm_spec_code >= 0x10803) {
|
||||
rc = bnxt_hwrm_func_resc_qcaps(bp);
|
||||
if (!rc)
|
||||
bp->flags |= BNXT_FLAG_NEW_RM;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int bnxt_hwrm_func_reset(struct bnxt *bp)
|
||||
{
|
||||
struct hwrm_func_reset_input req = {0};
|
||||
|
|
|
@ -1144,6 +1144,7 @@ struct bnxt {
|
|||
#define BNXT_FLAG_FW_DCBX_AGENT 0x800000
|
||||
#define BNXT_FLAG_CHIP_NITRO_A0 0x1000000
|
||||
#define BNXT_FLAG_DIM 0x2000000
|
||||
#define BNXT_FLAG_NEW_RM 0x8000000
|
||||
|
||||
#define BNXT_FLAG_ALL_CONFIG_FEATS (BNXT_FLAG_TPA | \
|
||||
BNXT_FLAG_RFS | \
|
||||
|
|
Loading…
Reference in New Issue