mirror of
https://github.com/torvalds/linux.git
synced 2026-05-28 17:13:52 +02:00
bnxt_en: Enhance stats context reservation logic
When the firmware advertises that the device is capable of supporting port mirroring on RoCE device, reserve one additional stat_ctx. To support port mirroring feature, RDMA driver allocates one stat_ctx for exclusive use in RawEth QP. Signed-off-by: Saravanan Vajravel <saravanan.vajravel@broadcom.com> Reviewed-by: Somnath Kotur <somnath.kotur@broadcom.com> Reviewed-by: Kashyap Desai <kashyap.desai@broadcom.com> Reviewed-by: Selvin Xavier <selvin.xavier@broadcom.com> Reviewed-by: Michael Chan <michael.chan@broadcom.com> Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com> Link: https://patch.msgid.link/20250822040801.776196-2-kalesh-anakkur.purayil@broadcom.com Reviewed-by: Jacob Keller <jacob.e.keller@intel.com> Acked-by: Jakub Kicinski <kuba@kernel.org> Signed-off-by: Leon Romanovsky <leon@kernel.org>
This commit is contained in:
parent
c0da8dc534
commit
217156bb70
|
|
@ -9601,10 +9601,10 @@ static int __bnxt_hwrm_ptp_qcfg(struct bnxt *bp)
|
|||
|
||||
static int __bnxt_hwrm_func_qcaps(struct bnxt *bp)
|
||||
{
|
||||
u32 flags, flags_ext, flags_ext2, flags_ext3;
|
||||
struct bnxt_hw_resc *hw_resc = &bp->hw_resc;
|
||||
struct hwrm_func_qcaps_output *resp;
|
||||
struct hwrm_func_qcaps_input *req;
|
||||
struct bnxt_hw_resc *hw_resc = &bp->hw_resc;
|
||||
u32 flags, flags_ext, flags_ext2;
|
||||
int rc;
|
||||
|
||||
rc = hwrm_req_init(bp, req, HWRM_FUNC_QCAPS);
|
||||
|
|
@ -9671,6 +9671,10 @@ static int __bnxt_hwrm_func_qcaps(struct bnxt *bp)
|
|||
(flags_ext2 & FUNC_QCAPS_RESP_FLAGS_EXT2_ROCE_VF_RESOURCE_MGMT_SUPPORTED))
|
||||
bp->fw_cap |= BNXT_FW_CAP_ROCE_VF_RESC_MGMT_SUPPORTED;
|
||||
|
||||
flags_ext3 = le32_to_cpu(resp->flags_ext3);
|
||||
if (flags_ext3 & FUNC_QCAPS_RESP_FLAGS_EXT3_MIRROR_ON_ROCE_SUPPORTED)
|
||||
bp->fw_cap |= BNXT_FW_CAP_MIRROR_ON_ROCE;
|
||||
|
||||
bp->tx_push_thresh = 0;
|
||||
if ((flags & FUNC_QCAPS_RESP_FLAGS_PUSH_MODE_SUPPORTED) &&
|
||||
BNXT_FW_MAJ(bp) > 217)
|
||||
|
|
|
|||
|
|
@ -2507,6 +2507,7 @@ struct bnxt {
|
|||
#define BNXT_FW_CAP_VNIC_RE_FLUSH BIT_ULL(40)
|
||||
#define BNXT_FW_CAP_SW_MAX_RESOURCE_LIMITS BIT_ULL(41)
|
||||
#define BNXT_FW_CAP_NPAR_1_2 BIT_ULL(42)
|
||||
#define BNXT_FW_CAP_MIRROR_ON_ROCE BIT_ULL(43)
|
||||
|
||||
u32 fw_dbg_cap;
|
||||
|
||||
|
|
@ -2528,6 +2529,8 @@ struct bnxt {
|
|||
((bp)->fw_cap & BNXT_FW_CAP_ROCE_VF_RESC_MGMT_SUPPORTED)
|
||||
#define BNXT_SW_RES_LMT(bp) \
|
||||
((bp)->fw_cap & BNXT_FW_CAP_SW_MAX_RESOURCE_LIMITS)
|
||||
#define BNXT_MIRROR_ON_ROCE_CAP(bp) \
|
||||
((bp)->fw_cap & BNXT_FW_CAP_MIRROR_ON_ROCE)
|
||||
|
||||
u32 hwrm_spec_code;
|
||||
u16 hwrm_cmd_seq;
|
||||
|
|
|
|||
|
|
@ -100,6 +100,12 @@ void bnxt_set_dflt_ulp_stat_ctxs(struct bnxt *bp)
|
|||
if (BNXT_PF(bp) && !bp->pf.port_id &&
|
||||
bp->port_count > 1)
|
||||
bp->edev->ulp_num_ctxs++;
|
||||
|
||||
/* Reserve one additional stat_ctx when the device is capable
|
||||
* of supporting port mirroring on RDMA device.
|
||||
*/
|
||||
if (BNXT_MIRROR_ON_ROCE_CAP(bp))
|
||||
bp->edev->ulp_num_ctxs++;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user