net/bnxt: fix PF resource query
This cmd should be called by every driver after 'hwrm_func_cfg'
to get the actual number of resources allocated by the HWRM.
The values returned in the cmd are the max values for that PF.
Also, now that the max values for the PF are computed in probe itself,
no need to invoke FUNC_QCAPs or any other cmd in dev_configure_op()
as that would just override the actual max values obtained above.
Fixes: f8168ca0e6
("net/bnxt: support thor controller")
Cc: stable@dpdk.org
Signed-off-by: Somnath Kotur <somnath.kotur@broadcom.com>
Reviewed-by: Venkat Duvvuru <venkatkumar.duvvuru@broadcom.com>
Reviewed-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
This commit is contained in:
parent
5f0f9a45ac
commit
70517a3a8f
@ -1071,13 +1071,6 @@ static int bnxt_dev_configure_op(struct rte_eth_dev *eth_dev)
|
||||
}
|
||||
|
||||
pthread_mutex_unlock(&bp->def_cp_lock);
|
||||
} else {
|
||||
/* legacy driver needs to get updated values */
|
||||
rc = bnxt_hwrm_func_qcaps(bp);
|
||||
if (rc) {
|
||||
PMD_DRV_LOG(ERR, "hwrm func qcaps fail:%d\n", rc);
|
||||
return rc;
|
||||
}
|
||||
}
|
||||
|
||||
/* Inherit new configurations */
|
||||
|
@ -3456,6 +3456,35 @@ static int bnxt_update_max_resources(struct bnxt *bp,
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Update the PF resource values based on how many resources
|
||||
* got allocated to it.
|
||||
*/
|
||||
static int bnxt_update_max_resources_pf_only(struct bnxt *bp)
|
||||
{
|
||||
struct hwrm_func_qcfg_input req = {0};
|
||||
struct hwrm_func_qcfg_output *resp = bp->hwrm_cmd_resp_addr;
|
||||
int rc;
|
||||
|
||||
/* Get the actual allocated values now */
|
||||
HWRM_PREP(&req, HWRM_FUNC_QCFG, BNXT_USE_CHIMP_MB);
|
||||
req.fid = rte_cpu_to_le_16(0xffff);
|
||||
rc = bnxt_hwrm_send_message(bp, &req, sizeof(req), BNXT_USE_CHIMP_MB);
|
||||
HWRM_CHECK_RESULT();
|
||||
|
||||
bp->max_rsscos_ctx = rte_le_to_cpu_16(resp->alloc_rsscos_ctx);
|
||||
bp->max_stat_ctx = rte_le_to_cpu_16(resp->alloc_stat_ctx);
|
||||
bp->max_cp_rings = rte_le_to_cpu_16(resp->alloc_cmpl_rings);
|
||||
bp->max_tx_rings = rte_le_to_cpu_16(resp->alloc_tx_rings);
|
||||
bp->max_rx_rings = rte_le_to_cpu_16(resp->alloc_rx_rings);
|
||||
bp->max_l2_ctx = rte_le_to_cpu_16(resp->alloc_l2_ctx);
|
||||
bp->max_ring_grps = rte_le_to_cpu_16(resp->alloc_hw_ring_grps);
|
||||
bp->max_vnics = rte_le_to_cpu_16(resp->alloc_vnics);
|
||||
|
||||
HWRM_UNLOCK();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int bnxt_hwrm_func_qcfg_current_vf_vlan(struct bnxt *bp, int vf)
|
||||
{
|
||||
struct hwrm_func_qcfg_input req = {0};
|
||||
@ -3555,8 +3584,13 @@ int bnxt_hwrm_allocate_pf_only(struct bnxt *bp)
|
||||
HWRM_FUNC_CFG_INPUT_FLAGS_STD_TX_RING_MODE_DISABLE);
|
||||
bp->pf->func_cfg_flags |=
|
||||
HWRM_FUNC_CFG_INPUT_FLAGS_STD_TX_RING_MODE_DISABLE;
|
||||
|
||||
rc = bnxt_hwrm_pf_func_cfg(bp, &pf_resc);
|
||||
rc = __bnxt_hwrm_func_qcaps(bp);
|
||||
if (rc)
|
||||
return rc;
|
||||
|
||||
rc = bnxt_update_max_resources_pf_only(bp);
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user