When using CoS classification the number of vnics is capped to avoid unnecessary memzone allocations.
Signed-off-by: Dave Johnson <dav...@cisco.com> --- .mailmap | 1 + drivers/net/bnxt/bnxt.h | 1 + drivers/net/bnxt/bnxt_hwrm.c | 10 ++++++++-- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/.mailmap b/.mailmap index 4018f0fc47..ae52428557 100644 --- a/.mailmap +++ b/.mailmap @@ -271,6 +271,7 @@ Dariusz Stojaczyk <dariuszx.stojac...@intel.com> Darren Edamura <darren.edam...@broadcom.com> Dave Burley <dave.bur...@accelercomm.com> Dave Ertman <david.m.ert...@intel.com> +Dave Johnson <dav...@cisco.com> David Binderman <dcb...@hotmail.com> David Bouyeure <david.bouye...@fraudbuster.mobi> David Christensen <d...@linux.vnet.ibm.com> <david.christen...@broadcom.com> diff --git a/drivers/net/bnxt/bnxt.h b/drivers/net/bnxt/bnxt.h index f6eaaeb470..48bd8f2418 100644 --- a/drivers/net/bnxt/bnxt.h +++ b/drivers/net/bnxt/bnxt.h @@ -811,6 +811,7 @@ struct bnxt { uint16_t max_l2_ctx; uint16_t max_rx_em_flows; uint16_t max_vnics; +#define BNXT_MAX_VNICS_COS_CLASSIFY 8 uint16_t max_stat_ctx; uint16_t max_tpa_v2; uint16_t first_vf_id; diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c index 51e1e2d6b3..d86ac73293 100644 --- a/drivers/net/bnxt/bnxt_hwrm.c +++ b/drivers/net/bnxt/bnxt_hwrm.c @@ -902,7 +902,10 @@ static int __bnxt_hwrm_func_qcaps(struct bnxt *bp) bp->max_l2_ctx = rte_le_to_cpu_16(resp->max_l2_ctxs); if (!BNXT_CHIP_P5(bp) && !bp->pdev->max_vfs) bp->max_l2_ctx += bp->max_rx_em_flows; - bp->max_vnics = rte_le_to_cpu_16(resp->max_vnics); + if (bp->vnic_cap_flags & BNXT_VNIC_CAP_COS_CLASSIFY) + bp->max_vnics = rte_le_to_cpu_16(BNXT_MAX_VNICS_COS_CLASSIFY); + else + bp->max_vnics = rte_le_to_cpu_16(resp->max_vnics); PMD_DRV_LOG(DEBUG, "Max l2_cntxts is %d vnics is %d\n", bp->max_l2_ctx, bp->max_vnics); bp->max_stat_ctx = rte_le_to_cpu_16(resp->max_stat_ctx); @@ -1211,7 +1214,10 @@ int bnxt_hwrm_func_resc_qcaps(struct bnxt *bp) bp->max_l2_ctx = rte_le_to_cpu_16(resp->max_l2_ctxs); if (!BNXT_CHIP_P5(bp) && !bp->pdev->max_vfs) bp->max_l2_ctx += bp->max_rx_em_flows; - bp->max_vnics = rte_le_to_cpu_16(resp->max_vnics); + if (bp->vnic_cap_flags & BNXT_VNIC_CAP_COS_CLASSIFY) + bp->max_vnics = rte_le_to_cpu_16(BNXT_MAX_VNICS_COS_CLASSIFY); + else + bp->max_vnics = rte_le_to_cpu_16(resp->max_vnics); bp->max_stat_ctx = rte_le_to_cpu_16(resp->max_stat_ctx); bp->max_nq_rings = rte_le_to_cpu_16(resp->max_msix); bp->vf_resv_strategy = rte_le_to_cpu_16(resp->vf_reservation_strategy); -- 2.35.6