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

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
...@@ -4579,7 +4579,7 @@ static int bnxt_hwrm_get_rings(struct bnxt *bp) ...@@ -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, ...@@ -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, ...@@ -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) ...@@ -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) ...@@ -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, ...@@ -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, ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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, ...@@ -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);
......
...@@ -1195,6 +1195,7 @@ struct bnxt { ...@@ -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) \
......
...@@ -471,7 +471,7 @@ static void bnxt_get_channels(struct net_device *dev, ...@@ -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;
......
...@@ -623,7 +623,7 @@ static int bnxt_hwrm_func_cfg(struct bnxt *bp, int num_vfs) ...@@ -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);
......
...@@ -141,7 +141,7 @@ static int bnxt_req_msix_vecs(struct bnxt_en_dev *edev, int ulp_id, ...@@ -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, ...@@ -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;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment