Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f1ca94de authored by Michael Chan's avatar Michael Chan Committed by David S. Miller
Browse files

bnxt_en: Add BNXT_NEW_RM() macro.



The BNXT_FLAG_NEW_RM flag is checked a lot in the code to determine if
the new resource manager is in effect.  Define a macro to perform
this check.

Signed-off-by: default avatarMichael Chan <michael.chan@broadocm.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 6c5657d0
Loading
Loading
Loading
Loading
+13 −14
Original line number Original line Diff line number Diff line
@@ -4579,7 +4579,7 @@ static int bnxt_hwrm_get_rings(struct bnxt *bp)
	}
	}


	hw_resc->resv_tx_rings = le16_to_cpu(resp->alloc_tx_rings);
	hw_resc->resv_tx_rings = le16_to_cpu(resp->alloc_tx_rings);
	if (bp->flags & BNXT_FLAG_NEW_RM) {
	if (BNXT_NEW_RM(bp)) {
		u16 cp, stats;
		u16 cp, stats;


		hw_resc->resv_rx_rings = le16_to_cpu(resp->alloc_rx_rings);
		hw_resc->resv_rx_rings = le16_to_cpu(resp->alloc_rx_rings);
@@ -4625,7 +4625,7 @@ __bnxt_hwrm_reserve_pf_rings(struct bnxt *bp, struct hwrm_func_cfg_input *req,
	req->fid = cpu_to_le16(0xffff);
	req->fid = cpu_to_le16(0xffff);
	enables |= tx_rings ? FUNC_CFG_REQ_ENABLES_NUM_TX_RINGS : 0;
	enables |= tx_rings ? FUNC_CFG_REQ_ENABLES_NUM_TX_RINGS : 0;
	req->num_tx_rings = cpu_to_le16(tx_rings);
	req->num_tx_rings = cpu_to_le16(tx_rings);
	if (bp->flags & BNXT_FLAG_NEW_RM) {
	if (BNXT_NEW_RM(bp)) {
		enables |= rx_rings ? FUNC_CFG_REQ_ENABLES_NUM_RX_RINGS : 0;
		enables |= rx_rings ? FUNC_CFG_REQ_ENABLES_NUM_RX_RINGS : 0;
		enables |= cp_rings ? FUNC_CFG_REQ_ENABLES_NUM_CMPL_RINGS |
		enables |= cp_rings ? FUNC_CFG_REQ_ENABLES_NUM_CMPL_RINGS |
				      FUNC_CFG_REQ_ENABLES_NUM_STAT_CTXS : 0;
				      FUNC_CFG_REQ_ENABLES_NUM_STAT_CTXS : 0;
@@ -4698,7 +4698,7 @@ bnxt_hwrm_reserve_vf_rings(struct bnxt *bp, int tx_rings, int rx_rings,
	struct hwrm_func_vf_cfg_input req = {0};
	struct hwrm_func_vf_cfg_input req = {0};
	int rc;
	int rc;


	if (!(bp->flags & BNXT_FLAG_NEW_RM)) {
	if (!BNXT_NEW_RM(bp)) {
		bp->hw_resc.resv_tx_rings = tx_rings;
		bp->hw_resc.resv_tx_rings = tx_rings;
		return 0;
		return 0;
	}
	}
@@ -4758,7 +4758,7 @@ static bool bnxt_need_reserve_rings(struct bnxt *bp)
		vnic = rx + 1;
		vnic = rx + 1;
	if (bp->flags & BNXT_FLAG_AGG_RINGS)
	if (bp->flags & BNXT_FLAG_AGG_RINGS)
		rx <<= 1;
		rx <<= 1;
	if ((bp->flags & BNXT_FLAG_NEW_RM) &&
	if (BNXT_NEW_RM(bp) &&
	    (hw_resc->resv_rx_rings != rx || hw_resc->resv_cp_rings != cp ||
	    (hw_resc->resv_rx_rings != rx || hw_resc->resv_cp_rings != cp ||
	     hw_resc->resv_hw_ring_grps != grp || hw_resc->resv_vnics != vnic))
	     hw_resc->resv_hw_ring_grps != grp || hw_resc->resv_vnics != vnic))
		return true;
		return true;
@@ -4794,7 +4794,7 @@ static int __bnxt_reserve_rings(struct bnxt *bp)
		return rc;
		return rc;


	tx = hw_resc->resv_tx_rings;
	tx = hw_resc->resv_tx_rings;
	if (bp->flags & BNXT_FLAG_NEW_RM) {
	if (BNXT_NEW_RM(bp)) {
		rx = hw_resc->resv_rx_rings;
		rx = hw_resc->resv_rx_rings;
		cp = hw_resc->resv_cp_rings;
		cp = hw_resc->resv_cp_rings;
		grp = hw_resc->resv_hw_ring_grps;
		grp = hw_resc->resv_hw_ring_grps;
@@ -4838,7 +4838,7 @@ static int bnxt_hwrm_check_vf_rings(struct bnxt *bp, int tx_rings, int rx_rings,
	u32 flags;
	u32 flags;
	int rc;
	int rc;


	if (!(bp->flags & BNXT_FLAG_NEW_RM))
	if (!BNXT_NEW_RM(bp))
		return 0;
		return 0;


	__bnxt_hwrm_reserve_vf_rings(bp, &req, tx_rings, rx_rings, ring_grps,
	__bnxt_hwrm_reserve_vf_rings(bp, &req, tx_rings, rx_rings, ring_grps,
@@ -4867,7 +4867,7 @@ static int bnxt_hwrm_check_pf_rings(struct bnxt *bp, int tx_rings, int rx_rings,
	__bnxt_hwrm_reserve_pf_rings(bp, &req, tx_rings, rx_rings, ring_grps,
	__bnxt_hwrm_reserve_pf_rings(bp, &req, tx_rings, rx_rings, ring_grps,
				     cp_rings, vnics);
				     cp_rings, vnics);
	flags = FUNC_CFG_REQ_FLAGS_TX_ASSETS_TEST;
	flags = FUNC_CFG_REQ_FLAGS_TX_ASSETS_TEST;
	if (bp->flags & BNXT_FLAG_NEW_RM)
	if (BNXT_NEW_RM(bp))
		flags |= FUNC_CFG_REQ_FLAGS_RX_ASSETS_TEST |
		flags |= FUNC_CFG_REQ_FLAGS_RX_ASSETS_TEST |
			 FUNC_CFG_REQ_FLAGS_CMPL_ASSETS_TEST |
			 FUNC_CFG_REQ_FLAGS_CMPL_ASSETS_TEST |
			 FUNC_CFG_REQ_FLAGS_RING_GRP_ASSETS_TEST |
			 FUNC_CFG_REQ_FLAGS_RING_GRP_ASSETS_TEST |
@@ -5921,7 +5921,7 @@ int bnxt_get_avail_msix(struct bnxt *bp, int num)


	max_idx = min_t(int, bp->total_irqs, max_cp);
	max_idx = min_t(int, bp->total_irqs, max_cp);
	avail_msix = max_idx - bp->cp_nr_rings;
	avail_msix = max_idx - bp->cp_nr_rings;
	if (!(bp->flags & BNXT_FLAG_NEW_RM) || avail_msix >= num)
	if (!BNXT_NEW_RM(bp) || avail_msix >= num)
		return avail_msix;
		return avail_msix;


	if (max_irq < total_req) {
	if (max_irq < total_req) {
@@ -5934,7 +5934,7 @@ int bnxt_get_avail_msix(struct bnxt *bp, int num)


static int bnxt_get_num_msix(struct bnxt *bp)
static int bnxt_get_num_msix(struct bnxt *bp)
{
{
	if (!(bp->flags & BNXT_FLAG_NEW_RM))
	if (!BNXT_NEW_RM(bp))
		return bnxt_get_max_func_irqs(bp);
		return bnxt_get_max_func_irqs(bp);


	return bnxt_cp_rings_in_use(bp);
	return bnxt_cp_rings_in_use(bp);
@@ -6057,8 +6057,7 @@ int bnxt_reserve_rings(struct bnxt *bp)
		netdev_err(bp->dev, "ring reservation failure rc: %d\n", rc);
		netdev_err(bp->dev, "ring reservation failure rc: %d\n", rc);
		return rc;
		return rc;
	}
	}
	if ((bp->flags & BNXT_FLAG_NEW_RM) &&
	if (BNXT_NEW_RM(bp) && (bnxt_get_num_msix(bp) != bp->total_irqs)) {
	    (bnxt_get_num_msix(bp) != bp->total_irqs)) {
		bnxt_ulp_irq_stop(bp);
		bnxt_ulp_irq_stop(bp);
		bnxt_clear_int_mode(bp);
		bnxt_clear_int_mode(bp);
		rc = bnxt_init_int_mode(bp);
		rc = bnxt_init_int_mode(bp);
@@ -7306,7 +7305,7 @@ static int bnxt_cfg_rx_mode(struct bnxt *bp)
static bool bnxt_can_reserve_rings(struct bnxt *bp)
static bool bnxt_can_reserve_rings(struct bnxt *bp)
{
{
#ifdef CONFIG_BNXT_SRIOV
#ifdef CONFIG_BNXT_SRIOV
	if ((bp->flags & BNXT_FLAG_NEW_RM) && BNXT_VF(bp)) {
	if (BNXT_NEW_RM(bp) && BNXT_VF(bp)) {
		struct bnxt_hw_resc *hw_resc = &bp->hw_resc;
		struct bnxt_hw_resc *hw_resc = &bp->hw_resc;


		/* No minimum rings were provisioned by the PF.  Don't
		/* No minimum rings were provisioned by the PF.  Don't
@@ -7356,7 +7355,7 @@ static bool bnxt_rfs_capable(struct bnxt *bp)
		return false;
		return false;
	}
	}


	if (!(bp->flags & BNXT_FLAG_NEW_RM))
	if (!BNXT_NEW_RM(bp))
		return true;
		return true;


	if (vnics == bp->hw_resc.resv_vnics)
	if (vnics == bp->hw_resc.resv_vnics)
@@ -7752,7 +7751,7 @@ int bnxt_check_rings(struct bnxt *bp, int tx, int rx, bool sh, int tcs,
	if (bp->flags & BNXT_FLAG_AGG_RINGS)
	if (bp->flags & BNXT_FLAG_AGG_RINGS)
		rx_rings <<= 1;
		rx_rings <<= 1;
	cp = sh ? max_t(int, tx_rings_needed, rx) : tx_rings_needed + rx;
	cp = sh ? max_t(int, tx_rings_needed, rx) : tx_rings_needed + rx;
	if (bp->flags & BNXT_FLAG_NEW_RM)
	if (BNXT_NEW_RM(bp))
		cp += bnxt_get_ulp_msix_num(bp);
		cp += bnxt_get_ulp_msix_num(bp);
	return bnxt_hwrm_check_rings(bp, tx_rings_needed, rx_rings, rx, cp,
	return bnxt_hwrm_check_rings(bp, tx_rings_needed, rx_rings, rx, cp,
				     vnics);
				     vnics);
+1 −0
Original line number Original line Diff line number Diff line
@@ -1195,6 +1195,7 @@ struct bnxt {
#define BNXT_SINGLE_PF(bp)	(BNXT_PF(bp) && !BNXT_NPAR(bp) && !BNXT_MH(bp))
#define BNXT_SINGLE_PF(bp)	(BNXT_PF(bp) && !BNXT_NPAR(bp) && !BNXT_MH(bp))
#define BNXT_CHIP_TYPE_NITRO_A0(bp) ((bp)->flags & BNXT_FLAG_CHIP_NITRO_A0)
#define BNXT_CHIP_TYPE_NITRO_A0(bp) ((bp)->flags & BNXT_FLAG_CHIP_NITRO_A0)
#define BNXT_RX_PAGE_MODE(bp)	((bp)->flags & BNXT_FLAG_RX_PAGE_MODE)
#define BNXT_RX_PAGE_MODE(bp)	((bp)->flags & BNXT_FLAG_RX_PAGE_MODE)
#define BNXT_NEW_RM(bp)		((bp)->flags & BNXT_FLAG_NEW_RM)


/* Chip class phase 4 and later */
/* Chip class phase 4 and later */
#define BNXT_CHIP_P4_PLUS(bp)			\
#define BNXT_CHIP_P4_PLUS(bp)			\
+1 −1
Original line number Original line Diff line number Diff line
@@ -471,7 +471,7 @@ static void bnxt_get_channels(struct net_device *dev,
	int max_tx_sch_inputs;
	int max_tx_sch_inputs;


	/* Get the most up-to-date max_tx_sch_inputs. */
	/* Get the most up-to-date max_tx_sch_inputs. */
	if (bp->flags & BNXT_FLAG_NEW_RM)
	if (BNXT_NEW_RM(bp))
		bnxt_hwrm_func_resc_qcaps(bp, false);
		bnxt_hwrm_func_resc_qcaps(bp, false);
	max_tx_sch_inputs = hw_resc->max_tx_sch_inputs;
	max_tx_sch_inputs = hw_resc->max_tx_sch_inputs;


+1 −1
Original line number Original line Diff line number Diff line
@@ -623,7 +623,7 @@ static int bnxt_hwrm_func_cfg(struct bnxt *bp, int num_vfs)


static int bnxt_func_cfg(struct bnxt *bp, int num_vfs)
static int bnxt_func_cfg(struct bnxt *bp, int num_vfs)
{
{
	if (bp->flags & BNXT_FLAG_NEW_RM)
	if (BNXT_NEW_RM(bp))
		return bnxt_hwrm_func_vf_resc_cfg(bp, num_vfs);
		return bnxt_hwrm_func_vf_resc_cfg(bp, num_vfs);
	else
	else
		return bnxt_hwrm_func_cfg(bp, num_vfs);
		return bnxt_hwrm_func_cfg(bp, num_vfs);
+2 −2
Original line number Original line Diff line number Diff line
@@ -141,7 +141,7 @@ static int bnxt_req_msix_vecs(struct bnxt_en_dev *edev, int ulp_id,
	if (avail_msix > num_msix)
	if (avail_msix > num_msix)
		avail_msix = num_msix;
		avail_msix = num_msix;


	if (bp->flags & BNXT_FLAG_NEW_RM) {
	if (BNXT_NEW_RM(bp)) {
		idx = bp->cp_nr_rings;
		idx = bp->cp_nr_rings;
	} else {
	} else {
		max_idx = min_t(int, bp->total_irqs, max_cp_rings);
		max_idx = min_t(int, bp->total_irqs, max_cp_rings);
@@ -162,7 +162,7 @@ static int bnxt_req_msix_vecs(struct bnxt_en_dev *edev, int ulp_id,
		return -EAGAIN;
		return -EAGAIN;
	}
	}


	if (bp->flags & BNXT_FLAG_NEW_RM) {
	if (BNXT_NEW_RM(bp)) {
		struct bnxt_hw_resc *hw_resc = &bp->hw_resc;
		struct bnxt_hw_resc *hw_resc = &bp->hw_resc;


		avail_msix = hw_resc->resv_cp_rings - bp->cp_nr_rings;
		avail_msix = hw_resc->resv_cp_rings - bp->cp_nr_rings;