mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	bnxt_en: Rename some macros for the P5 chips
In preparation to support a new P7 chip which has a lot of similarities with the P5 chip, rename the BNXT_FLAG_CHIP_P5 flag to BNXT_FLAG_CHIP_P5_PLUS. This will make it clear that the flag is for P5 and newer chips. Also, since there are no additional P5 variants in production, rename BNXT_FLAG_CHIP_P5_THOR() to BNXT_FLAG_CHIP_P5() to keep the naming more simple. Reviewed-by: Andy Gospodarek <andrew.gospodarek@broadcom.com> Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com> Signed-off-by: Randy Schacher <stuart.schacher@broadcom.com> Signed-off-by: Michael Chan <michael.chan@broadcom.com> Link: https://lore.kernel.org/r/20231120234405.194542-14-michael.chan@broadcom.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
		
							parent
							
								
									f94471f3ce
								
							
						
					
					
						commit
						1c7fd6ee2f
					
				
					 7 changed files with 116 additions and 114 deletions
				
			
		| 
						 | 
				
			
			@ -269,7 +269,7 @@ static bool bnxt_vf_pciid(enum board_idx idx)
 | 
			
		|||
 | 
			
		||||
static void bnxt_db_nq(struct bnxt *bp, struct bnxt_db_info *db, u32 idx)
 | 
			
		||||
{
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5)
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS)
 | 
			
		||||
		BNXT_DB_NQ_P5(db, idx);
 | 
			
		||||
	else
 | 
			
		||||
		BNXT_DB_CQ(db, idx);
 | 
			
		||||
| 
						 | 
				
			
			@ -277,7 +277,7 @@ static void bnxt_db_nq(struct bnxt *bp, struct bnxt_db_info *db, u32 idx)
 | 
			
		|||
 | 
			
		||||
static void bnxt_db_nq_arm(struct bnxt *bp, struct bnxt_db_info *db, u32 idx)
 | 
			
		||||
{
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5)
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS)
 | 
			
		||||
		BNXT_DB_NQ_ARM_P5(db, idx);
 | 
			
		||||
	else
 | 
			
		||||
		BNXT_DB_CQ_ARM(db, idx);
 | 
			
		||||
| 
						 | 
				
			
			@ -285,7 +285,7 @@ static void bnxt_db_nq_arm(struct bnxt *bp, struct bnxt_db_info *db, u32 idx)
 | 
			
		|||
 | 
			
		||||
static void bnxt_db_cq(struct bnxt *bp, struct bnxt_db_info *db, u32 idx)
 | 
			
		||||
{
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5)
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS)
 | 
			
		||||
		bnxt_writeq(bp, db->db_key64 | DBR_TYPE_CQ_ARMALL |
 | 
			
		||||
			    DB_RING_IDX(db, idx), db->doorbell);
 | 
			
		||||
	else
 | 
			
		||||
| 
						 | 
				
			
			@ -321,7 +321,7 @@ static void bnxt_sched_reset_rxr(struct bnxt *bp, struct bnxt_rx_ring_info *rxr)
 | 
			
		|||
{
 | 
			
		||||
	if (!rxr->bnapi->in_reset) {
 | 
			
		||||
		rxr->bnapi->in_reset = true;
 | 
			
		||||
		if (bp->flags & BNXT_FLAG_CHIP_P5)
 | 
			
		||||
		if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS)
 | 
			
		||||
			set_bit(BNXT_RESET_TASK_SP_EVENT, &bp->sp_event);
 | 
			
		||||
		else
 | 
			
		||||
			set_bit(BNXT_RST_RING_SP_EVENT, &bp->sp_event);
 | 
			
		||||
| 
						 | 
				
			
			@ -739,7 +739,7 @@ static void __bnxt_tx_int(struct bnxt *bp, struct bnxt_tx_ring_info *txr,
 | 
			
		|||
				DMA_TO_DEVICE);
 | 
			
		||||
		}
 | 
			
		||||
		if (unlikely(skb_shinfo(skb)->tx_flags & SKBTX_IN_PROGRESS)) {
 | 
			
		||||
			if (bp->flags & BNXT_FLAG_CHIP_P5) {
 | 
			
		||||
			if (BNXT_CHIP_P5(bp)) {
 | 
			
		||||
				/* PTP worker takes ownership of the skb */
 | 
			
		||||
				if (!bnxt_get_tx_ts_p5(bp, skb))
 | 
			
		||||
					skb = NULL;
 | 
			
		||||
| 
						 | 
				
			
			@ -946,7 +946,7 @@ static void bnxt_reuse_rx_agg_bufs(struct bnxt_cp_ring_info *cpr, u16 idx,
 | 
			
		|||
	bool p5_tpa = false;
 | 
			
		||||
	u32 i;
 | 
			
		||||
 | 
			
		||||
	if ((bp->flags & BNXT_FLAG_CHIP_P5) && tpa)
 | 
			
		||||
	if ((bp->flags & BNXT_FLAG_CHIP_P5_PLUS) && tpa)
 | 
			
		||||
		p5_tpa = true;
 | 
			
		||||
 | 
			
		||||
	for (i = 0; i < agg_bufs; i++) {
 | 
			
		||||
| 
						 | 
				
			
			@ -1113,7 +1113,7 @@ static u32 __bnxt_rx_agg_pages(struct bnxt *bp,
 | 
			
		|||
	u32 i, total_frag_len = 0;
 | 
			
		||||
	bool p5_tpa = false;
 | 
			
		||||
 | 
			
		||||
	if ((bp->flags & BNXT_FLAG_CHIP_P5) && tpa)
 | 
			
		||||
	if ((bp->flags & BNXT_FLAG_CHIP_P5_PLUS) && tpa)
 | 
			
		||||
		p5_tpa = true;
 | 
			
		||||
 | 
			
		||||
	for (i = 0; i < agg_bufs; i++) {
 | 
			
		||||
| 
						 | 
				
			
			@ -1268,7 +1268,7 @@ static int bnxt_discard_rx(struct bnxt *bp, struct bnxt_cp_ring_info *cpr,
 | 
			
		|||
	} else if (cmp_type == CMP_TYPE_RX_L2_TPA_END_CMP) {
 | 
			
		||||
		struct rx_tpa_end_cmp *tpa_end = cmp;
 | 
			
		||||
 | 
			
		||||
		if (bp->flags & BNXT_FLAG_CHIP_P5)
 | 
			
		||||
		if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS)
 | 
			
		||||
			return 0;
 | 
			
		||||
 | 
			
		||||
		agg_bufs = TPA_END_AGG_BUFS(tpa_end);
 | 
			
		||||
| 
						 | 
				
			
			@ -1319,7 +1319,7 @@ static void bnxt_tpa_start(struct bnxt *bp, struct bnxt_rx_ring_info *rxr,
 | 
			
		|||
	struct rx_bd *prod_bd;
 | 
			
		||||
	dma_addr_t mapping;
 | 
			
		||||
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5) {
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS) {
 | 
			
		||||
		agg_id = TPA_START_AGG_ID_P5(tpa_start);
 | 
			
		||||
		agg_id = bnxt_alloc_agg_idx(rxr, agg_id);
 | 
			
		||||
	} else {
 | 
			
		||||
| 
						 | 
				
			
			@ -1582,7 +1582,7 @@ static inline struct sk_buff *bnxt_gro_skb(struct bnxt *bp,
 | 
			
		|||
	skb_shinfo(skb)->gso_size =
 | 
			
		||||
		le32_to_cpu(tpa_end1->rx_tpa_end_cmp_seg_len);
 | 
			
		||||
	skb_shinfo(skb)->gso_type = tpa_info->gso_type;
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5)
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS)
 | 
			
		||||
		payload_off = TPA_END_PAYLOAD_OFF_P5(tpa_end1);
 | 
			
		||||
	else
 | 
			
		||||
		payload_off = TPA_END_PAYLOAD_OFF(tpa_end);
 | 
			
		||||
| 
						 | 
				
			
			@ -1630,7 +1630,7 @@ static inline struct sk_buff *bnxt_tpa_end(struct bnxt *bp,
 | 
			
		|||
		return NULL;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5) {
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS) {
 | 
			
		||||
		agg_id = TPA_END_AGG_ID_P5(tpa_end);
 | 
			
		||||
		agg_id = bnxt_lookup_agg_idx(rxr, agg_id);
 | 
			
		||||
		agg_bufs = TPA_END_AGG_BUFS_P5(tpa_end1);
 | 
			
		||||
| 
						 | 
				
			
			@ -1895,7 +1895,7 @@ static int bnxt_rx_pkt(struct bnxt *bp, struct bnxt_cp_ring_info *cpr,
 | 
			
		|||
		rc = -EIO;
 | 
			
		||||
		if (rx_err & RX_CMPL_ERRORS_BUFFER_ERROR_MASK) {
 | 
			
		||||
			bnapi->cp_ring.sw_stats.rx.rx_buf_errors++;
 | 
			
		||||
			if (!(bp->flags & BNXT_FLAG_CHIP_P5) &&
 | 
			
		||||
			if (!(bp->flags & BNXT_FLAG_CHIP_P5_PLUS) &&
 | 
			
		||||
			    !(bp->fw_cap & BNXT_FW_CAP_RING_MONITOR)) {
 | 
			
		||||
				netdev_warn_once(bp->dev, "RX buffer error %x\n",
 | 
			
		||||
						 rx_err);
 | 
			
		||||
| 
						 | 
				
			
			@ -2026,7 +2026,7 @@ static int bnxt_rx_pkt(struct bnxt *bp, struct bnxt_cp_ring_info *cpr,
 | 
			
		|||
 | 
			
		||||
	if (unlikely((flags & RX_CMP_FLAGS_ITYPES_MASK) ==
 | 
			
		||||
		     RX_CMP_FLAGS_ITYPE_PTP_W_TS) || bp->ptp_all_rx_tstamp) {
 | 
			
		||||
		if (bp->flags & BNXT_FLAG_CHIP_P5) {
 | 
			
		||||
		if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS) {
 | 
			
		||||
			u32 cmpl_ts = le32_to_cpu(rxcmp1->rx_cmp_timestamp);
 | 
			
		||||
			u64 ns, ts;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -2434,7 +2434,7 @@ static int bnxt_async_event_process(struct bnxt *bp,
 | 
			
		|||
		struct bnxt_rx_ring_info *rxr;
 | 
			
		||||
		u16 grp_idx;
 | 
			
		||||
 | 
			
		||||
		if (bp->flags & BNXT_FLAG_CHIP_P5)
 | 
			
		||||
		if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS)
 | 
			
		||||
			goto async_event_process_exit;
 | 
			
		||||
 | 
			
		||||
		netdev_warn(bp->dev, "Ring monitor event, ring type %lu id 0x%x\n",
 | 
			
		||||
| 
						 | 
				
			
			@ -3258,7 +3258,7 @@ static int bnxt_alloc_tpa_info(struct bnxt *bp)
 | 
			
		|||
	int i, j;
 | 
			
		||||
 | 
			
		||||
	bp->max_tpa = MAX_TPA;
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5) {
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS) {
 | 
			
		||||
		if (!bp->max_tpa_v2)
 | 
			
		||||
			return 0;
 | 
			
		||||
		bp->max_tpa = max_t(u16, bp->max_tpa_v2, MAX_TPA_P5);
 | 
			
		||||
| 
						 | 
				
			
			@ -3273,7 +3273,7 @@ static int bnxt_alloc_tpa_info(struct bnxt *bp)
 | 
			
		|||
		if (!rxr->rx_tpa)
 | 
			
		||||
			return -ENOMEM;
 | 
			
		||||
 | 
			
		||||
		if (!(bp->flags & BNXT_FLAG_CHIP_P5))
 | 
			
		||||
		if (!(bp->flags & BNXT_FLAG_CHIP_P5_PLUS))
 | 
			
		||||
			continue;
 | 
			
		||||
		for (j = 0; j < bp->max_tpa; j++) {
 | 
			
		||||
			agg = kcalloc(MAX_SKB_FRAGS, sizeof(*agg), GFP_KERNEL);
 | 
			
		||||
| 
						 | 
				
			
			@ -3651,7 +3651,7 @@ static int bnxt_alloc_cp_rings(struct bnxt *bp)
 | 
			
		|||
		else
 | 
			
		||||
			ring->map_idx = i;
 | 
			
		||||
 | 
			
		||||
		if (!(bp->flags & BNXT_FLAG_CHIP_P5))
 | 
			
		||||
		if (!(bp->flags & BNXT_FLAG_CHIP_P5_PLUS))
 | 
			
		||||
			continue;
 | 
			
		||||
 | 
			
		||||
		if (i < bp->rx_nr_rings) {
 | 
			
		||||
| 
						 | 
				
			
			@ -3965,7 +3965,7 @@ static int bnxt_alloc_vnics(struct bnxt *bp)
 | 
			
		|||
	int num_vnics = 1;
 | 
			
		||||
 | 
			
		||||
#ifdef CONFIG_RFS_ACCEL
 | 
			
		||||
	if ((bp->flags & (BNXT_FLAG_RFS | BNXT_FLAG_CHIP_P5)) == BNXT_FLAG_RFS)
 | 
			
		||||
	if ((bp->flags & (BNXT_FLAG_RFS | BNXT_FLAG_CHIP_P5_PLUS)) == BNXT_FLAG_RFS)
 | 
			
		||||
		num_vnics += bp->rx_nr_rings;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -4238,7 +4238,7 @@ static int bnxt_alloc_vnic_attributes(struct bnxt *bp)
 | 
			
		|||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if (bp->flags & BNXT_FLAG_CHIP_P5)
 | 
			
		||||
		if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS)
 | 
			
		||||
			goto vnic_skip_grps;
 | 
			
		||||
 | 
			
		||||
		if (vnic->flags & BNXT_VNIC_RSS_FLAG)
 | 
			
		||||
| 
						 | 
				
			
			@ -4258,7 +4258,7 @@ static int bnxt_alloc_vnic_attributes(struct bnxt *bp)
 | 
			
		|||
 | 
			
		||||
		/* Allocate rss table and hash key */
 | 
			
		||||
		size = L1_CACHE_ALIGN(HW_HASH_INDEX_SIZE * sizeof(u16));
 | 
			
		||||
		if (bp->flags & BNXT_FLAG_CHIP_P5)
 | 
			
		||||
		if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS)
 | 
			
		||||
			size = L1_CACHE_ALIGN(BNXT_MAX_RSS_TABLE_SIZE_P5);
 | 
			
		||||
 | 
			
		||||
		vnic->rss_table_size = size + HW_HASH_KEY_SIZE;
 | 
			
		||||
| 
						 | 
				
			
			@ -4368,7 +4368,7 @@ static int bnxt_hwrm_func_qstat_ext(struct bnxt *bp,
 | 
			
		|||
	int rc;
 | 
			
		||||
 | 
			
		||||
	if (!(bp->fw_cap & BNXT_FW_CAP_EXT_HW_STATS_SUPPORTED) ||
 | 
			
		||||
	    !(bp->flags & BNXT_FLAG_CHIP_P5))
 | 
			
		||||
	    !(bp->flags & BNXT_FLAG_CHIP_P5_PLUS))
 | 
			
		||||
		return -EOPNOTSUPP;
 | 
			
		||||
 | 
			
		||||
	rc = hwrm_req_init(bp, req, HWRM_FUNC_QSTATS_EXT);
 | 
			
		||||
| 
						 | 
				
			
			@ -4406,7 +4406,7 @@ static void bnxt_init_stats(struct bnxt *bp)
 | 
			
		|||
	stats = &cpr->stats;
 | 
			
		||||
	rc = bnxt_hwrm_func_qstat_ext(bp, stats);
 | 
			
		||||
	if (rc) {
 | 
			
		||||
		if (bp->flags & BNXT_FLAG_CHIP_P5)
 | 
			
		||||
		if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS)
 | 
			
		||||
			mask = (1ULL << 48) - 1;
 | 
			
		||||
		else
 | 
			
		||||
			mask = -1ULL;
 | 
			
		||||
| 
						 | 
				
			
			@ -4686,7 +4686,7 @@ static int bnxt_alloc_mem(struct bnxt *bp, bool irq_re_init)
 | 
			
		|||
			bp->bnapi[i] = bnapi;
 | 
			
		||||
			bp->bnapi[i]->index = i;
 | 
			
		||||
			bp->bnapi[i]->bp = bp;
 | 
			
		||||
			if (bp->flags & BNXT_FLAG_CHIP_P5) {
 | 
			
		||||
			if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS) {
 | 
			
		||||
				struct bnxt_cp_ring_info *cpr =
 | 
			
		||||
					&bp->bnapi[i]->cp_ring;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -4704,7 +4704,7 @@ static int bnxt_alloc_mem(struct bnxt *bp, bool irq_re_init)
 | 
			
		|||
		for (i = 0; i < bp->rx_nr_rings; i++) {
 | 
			
		||||
			struct bnxt_rx_ring_info *rxr = &bp->rx_ring[i];
 | 
			
		||||
 | 
			
		||||
			if (bp->flags & BNXT_FLAG_CHIP_P5) {
 | 
			
		||||
			if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS) {
 | 
			
		||||
				rxr->rx_ring_struct.ring_mem.flags =
 | 
			
		||||
					BNXT_RMEM_RING_PTE_FLAG;
 | 
			
		||||
				rxr->rx_agg_ring_struct.ring_mem.flags =
 | 
			
		||||
| 
						 | 
				
			
			@ -4737,7 +4737,7 @@ static int bnxt_alloc_mem(struct bnxt *bp, bool irq_re_init)
 | 
			
		|||
			struct bnxt_tx_ring_info *txr = &bp->tx_ring[i];
 | 
			
		||||
			struct bnxt_napi *bnapi2;
 | 
			
		||||
 | 
			
		||||
			if (bp->flags & BNXT_FLAG_CHIP_P5)
 | 
			
		||||
			if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS)
 | 
			
		||||
				txr->tx_ring_struct.ring_mem.flags =
 | 
			
		||||
					BNXT_RMEM_RING_PTE_FLAG;
 | 
			
		||||
			bp->tx_ring_map[i] = bp->tx_nr_rings_xdp + i;
 | 
			
		||||
| 
						 | 
				
			
			@ -4758,7 +4758,7 @@ static int bnxt_alloc_mem(struct bnxt *bp, bool irq_re_init)
 | 
			
		|||
				j++;
 | 
			
		||||
			}
 | 
			
		||||
			txr->bnapi = bnapi2;
 | 
			
		||||
			if (!(bp->flags & BNXT_FLAG_CHIP_P5))
 | 
			
		||||
			if (!(bp->flags & BNXT_FLAG_CHIP_P5_PLUS))
 | 
			
		||||
				txr->tx_cpr = &bnapi2->cp_ring;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -5284,7 +5284,7 @@ static int bnxt_hwrm_vnic_set_tpa(struct bnxt *bp, u16 vnic_id, u32 tpa_flags)
 | 
			
		|||
			nsegs = (MAX_SKB_FRAGS - n) / n;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if (bp->flags & BNXT_FLAG_CHIP_P5) {
 | 
			
		||||
		if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS) {
 | 
			
		||||
			segs = MAX_TPA_SEGS_P5;
 | 
			
		||||
			max_aggs = bp->max_tpa;
 | 
			
		||||
		} else {
 | 
			
		||||
| 
						 | 
				
			
			@ -5310,7 +5310,7 @@ static u16 bnxt_cp_ring_from_grp(struct bnxt *bp, struct bnxt_ring_struct *ring)
 | 
			
		|||
 | 
			
		||||
static u16 bnxt_cp_ring_for_rx(struct bnxt *bp, struct bnxt_rx_ring_info *rxr)
 | 
			
		||||
{
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5)
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS)
 | 
			
		||||
		return rxr->rx_cpr->cp_ring_struct.fw_ring_id;
 | 
			
		||||
	else
 | 
			
		||||
		return bnxt_cp_ring_from_grp(bp, &rxr->rx_ring_struct);
 | 
			
		||||
| 
						 | 
				
			
			@ -5318,7 +5318,7 @@ static u16 bnxt_cp_ring_for_rx(struct bnxt *bp, struct bnxt_rx_ring_info *rxr)
 | 
			
		|||
 | 
			
		||||
static u16 bnxt_cp_ring_for_tx(struct bnxt *bp, struct bnxt_tx_ring_info *txr)
 | 
			
		||||
{
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5)
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS)
 | 
			
		||||
		return txr->tx_cpr->cp_ring_struct.fw_ring_id;
 | 
			
		||||
	else
 | 
			
		||||
		return bnxt_cp_ring_from_grp(bp, &txr->tx_ring_struct);
 | 
			
		||||
| 
						 | 
				
			
			@ -5328,7 +5328,7 @@ static int bnxt_alloc_rss_indir_tbl(struct bnxt *bp)
 | 
			
		|||
{
 | 
			
		||||
	int entries;
 | 
			
		||||
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5)
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS)
 | 
			
		||||
		entries = BNXT_MAX_RSS_TABLE_ENTRIES_P5;
 | 
			
		||||
	else
 | 
			
		||||
		entries = HW_HASH_INDEX_SIZE;
 | 
			
		||||
| 
						 | 
				
			
			@ -5378,7 +5378,7 @@ static u16 bnxt_get_max_rss_ring(struct bnxt *bp)
 | 
			
		|||
 | 
			
		||||
int bnxt_get_nr_rss_ctxs(struct bnxt *bp, int rx_rings)
 | 
			
		||||
{
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5)
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS)
 | 
			
		||||
		return DIV_ROUND_UP(rx_rings, BNXT_RSS_TABLE_ENTRIES_P5);
 | 
			
		||||
	if (BNXT_CHIP_TYPE_NITRO_A0(bp))
 | 
			
		||||
		return 2;
 | 
			
		||||
| 
						 | 
				
			
			@ -5424,7 +5424,7 @@ static void
 | 
			
		|||
__bnxt_hwrm_vnic_set_rss(struct bnxt *bp, struct hwrm_vnic_rss_cfg_input *req,
 | 
			
		||||
			 struct bnxt_vnic_info *vnic)
 | 
			
		||||
{
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5)
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS)
 | 
			
		||||
		bnxt_fill_hw_rss_tbl_p5(bp, vnic);
 | 
			
		||||
	else
 | 
			
		||||
		bnxt_fill_hw_rss_tbl(bp, vnic);
 | 
			
		||||
| 
						 | 
				
			
			@ -5449,7 +5449,7 @@ static int bnxt_hwrm_vnic_set_rss(struct bnxt *bp, u16 vnic_id, bool set_rss)
 | 
			
		|||
	struct hwrm_vnic_rss_cfg_input *req;
 | 
			
		||||
	int rc;
 | 
			
		||||
 | 
			
		||||
	if ((bp->flags & BNXT_FLAG_CHIP_P5) ||
 | 
			
		||||
	if ((bp->flags & BNXT_FLAG_CHIP_P5_PLUS) ||
 | 
			
		||||
	    vnic->fw_rss_cos_lb_ctx[0] == INVALID_HW_RING_ID)
 | 
			
		||||
		return 0;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -5614,7 +5614,7 @@ int bnxt_hwrm_vnic_cfg(struct bnxt *bp, u16 vnic_id)
 | 
			
		|||
	if (rc)
 | 
			
		||||
		return rc;
 | 
			
		||||
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5) {
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS) {
 | 
			
		||||
		struct bnxt_rx_ring_info *rxr = &bp->rx_ring[0];
 | 
			
		||||
 | 
			
		||||
		req->default_rx_ring_id =
 | 
			
		||||
| 
						 | 
				
			
			@ -5714,7 +5714,7 @@ static int bnxt_hwrm_vnic_alloc(struct bnxt *bp, u16 vnic_id,
 | 
			
		|||
	if (rc)
 | 
			
		||||
		return rc;
 | 
			
		||||
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5)
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS)
 | 
			
		||||
		goto vnic_no_ring_grps;
 | 
			
		||||
 | 
			
		||||
	/* map ring groups to this vnic */
 | 
			
		||||
| 
						 | 
				
			
			@ -5762,7 +5762,7 @@ static int bnxt_hwrm_vnic_qcaps(struct bnxt *bp)
 | 
			
		|||
	if (!rc) {
 | 
			
		||||
		u32 flags = le32_to_cpu(resp->flags);
 | 
			
		||||
 | 
			
		||||
		if (!(bp->flags & BNXT_FLAG_CHIP_P5) &&
 | 
			
		||||
		if (!(bp->flags & BNXT_FLAG_CHIP_P5_PLUS) &&
 | 
			
		||||
		    (flags & VNIC_QCAPS_RESP_FLAGS_RSS_DFLT_CR_CAP))
 | 
			
		||||
			bp->flags |= BNXT_FLAG_NEW_RSS_CAP;
 | 
			
		||||
		if (flags &
 | 
			
		||||
| 
						 | 
				
			
			@ -5773,14 +5773,14 @@ static int bnxt_hwrm_vnic_qcaps(struct bnxt *bp)
 | 
			
		|||
		 * VLAN_STRIP_CAP properly.
 | 
			
		||||
		 */
 | 
			
		||||
		if ((flags & VNIC_QCAPS_RESP_FLAGS_VLAN_STRIP_CAP) ||
 | 
			
		||||
		    (BNXT_CHIP_P5_THOR(bp) &&
 | 
			
		||||
		    (BNXT_CHIP_P5(bp) &&
 | 
			
		||||
		     !(bp->fw_cap & BNXT_FW_CAP_EXT_HW_STATS_SUPPORTED)))
 | 
			
		||||
			bp->fw_cap |= BNXT_FW_CAP_VLAN_RX_STRIP;
 | 
			
		||||
		if (flags & VNIC_QCAPS_RESP_FLAGS_RSS_HASH_TYPE_DELTA_CAP)
 | 
			
		||||
			bp->fw_cap |= BNXT_FW_CAP_RSS_HASH_TYPE_DELTA;
 | 
			
		||||
		bp->max_tpa_v2 = le16_to_cpu(resp->max_aggs_supported);
 | 
			
		||||
		if (bp->max_tpa_v2) {
 | 
			
		||||
			if (BNXT_CHIP_P5_THOR(bp))
 | 
			
		||||
			if (BNXT_CHIP_P5(bp))
 | 
			
		||||
				bp->hw_ring_stats_size = BNXT_RING_STATS_SIZE_P5;
 | 
			
		||||
			else
 | 
			
		||||
				bp->hw_ring_stats_size = BNXT_RING_STATS_SIZE_P5_SR2;
 | 
			
		||||
| 
						 | 
				
			
			@ -5797,7 +5797,7 @@ static int bnxt_hwrm_ring_grp_alloc(struct bnxt *bp)
 | 
			
		|||
	int rc;
 | 
			
		||||
	u16 i;
 | 
			
		||||
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5)
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS)
 | 
			
		||||
		return 0;
 | 
			
		||||
 | 
			
		||||
	rc = hwrm_req_init(bp, req, HWRM_RING_GRP_ALLOC);
 | 
			
		||||
| 
						 | 
				
			
			@ -5830,7 +5830,7 @@ static void bnxt_hwrm_ring_grp_free(struct bnxt *bp)
 | 
			
		|||
	struct hwrm_ring_grp_free_input *req;
 | 
			
		||||
	u16 i;
 | 
			
		||||
 | 
			
		||||
	if (!bp->grp_info || (bp->flags & BNXT_FLAG_CHIP_P5))
 | 
			
		||||
	if (!bp->grp_info || (bp->flags & BNXT_FLAG_CHIP_P5_PLUS))
 | 
			
		||||
		return;
 | 
			
		||||
 | 
			
		||||
	if (hwrm_req_init(bp, req, HWRM_RING_GRP_FREE))
 | 
			
		||||
| 
						 | 
				
			
			@ -5895,7 +5895,7 @@ static int hwrm_ring_alloc_send_msg(struct bnxt *bp,
 | 
			
		|||
	case HWRM_RING_ALLOC_RX:
 | 
			
		||||
		req->ring_type = RING_ALLOC_REQ_RING_TYPE_RX;
 | 
			
		||||
		req->length = cpu_to_le32(bp->rx_ring_mask + 1);
 | 
			
		||||
		if (bp->flags & BNXT_FLAG_CHIP_P5) {
 | 
			
		||||
		if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS) {
 | 
			
		||||
			u16 flags = 0;
 | 
			
		||||
 | 
			
		||||
			/* Association of rx ring with stats context */
 | 
			
		||||
| 
						 | 
				
			
			@ -5910,7 +5910,7 @@ static int hwrm_ring_alloc_send_msg(struct bnxt *bp,
 | 
			
		|||
		}
 | 
			
		||||
		break;
 | 
			
		||||
	case HWRM_RING_ALLOC_AGG:
 | 
			
		||||
		if (bp->flags & BNXT_FLAG_CHIP_P5) {
 | 
			
		||||
		if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS) {
 | 
			
		||||
			req->ring_type = RING_ALLOC_REQ_RING_TYPE_RX_AGG;
 | 
			
		||||
			/* Association of agg ring with rx ring */
 | 
			
		||||
			grp_info = &bp->grp_info[ring->grp_idx];
 | 
			
		||||
| 
						 | 
				
			
			@ -5928,7 +5928,7 @@ static int hwrm_ring_alloc_send_msg(struct bnxt *bp,
 | 
			
		|||
	case HWRM_RING_ALLOC_CMPL:
 | 
			
		||||
		req->ring_type = RING_ALLOC_REQ_RING_TYPE_L2_CMPL;
 | 
			
		||||
		req->length = cpu_to_le32(bp->cp_ring_mask + 1);
 | 
			
		||||
		if (bp->flags & BNXT_FLAG_CHIP_P5) {
 | 
			
		||||
		if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS) {
 | 
			
		||||
			/* Association of cp ring with nq */
 | 
			
		||||
			grp_info = &bp->grp_info[map_index];
 | 
			
		||||
			req->nq_ring_id = cpu_to_le16(grp_info->cp_fw_ring_id);
 | 
			
		||||
| 
						 | 
				
			
			@ -6019,7 +6019,7 @@ static void bnxt_set_db_mask(struct bnxt *bp, struct bnxt_db_info *db,
 | 
			
		|||
static void bnxt_set_db(struct bnxt *bp, struct bnxt_db_info *db, u32 ring_type,
 | 
			
		||||
			u32 map_idx, u32 xid)
 | 
			
		||||
{
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5) {
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS) {
 | 
			
		||||
		if (BNXT_PF(bp))
 | 
			
		||||
			db->doorbell = bp->bar1 + DB_PF_OFFSET_P5;
 | 
			
		||||
		else
 | 
			
		||||
| 
						 | 
				
			
			@ -6064,7 +6064,7 @@ static int bnxt_hwrm_ring_alloc(struct bnxt *bp)
 | 
			
		|||
	int i, rc = 0;
 | 
			
		||||
	u32 type;
 | 
			
		||||
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5)
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS)
 | 
			
		||||
		type = HWRM_RING_ALLOC_NQ;
 | 
			
		||||
	else
 | 
			
		||||
		type = HWRM_RING_ALLOC_CMPL;
 | 
			
		||||
| 
						 | 
				
			
			@ -6100,7 +6100,7 @@ static int bnxt_hwrm_ring_alloc(struct bnxt *bp)
 | 
			
		|||
		struct bnxt_ring_struct *ring;
 | 
			
		||||
		u32 map_idx;
 | 
			
		||||
 | 
			
		||||
		if (bp->flags & BNXT_FLAG_CHIP_P5) {
 | 
			
		||||
		if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS) {
 | 
			
		||||
			struct bnxt_cp_ring_info *cpr2 = txr->tx_cpr;
 | 
			
		||||
			struct bnxt_napi *bnapi = txr->bnapi;
 | 
			
		||||
			u32 type2 = HWRM_RING_ALLOC_CMPL;
 | 
			
		||||
| 
						 | 
				
			
			@ -6138,7 +6138,7 @@ static int bnxt_hwrm_ring_alloc(struct bnxt *bp)
 | 
			
		|||
		if (!agg_rings)
 | 
			
		||||
			bnxt_db_write(bp, &rxr->rx_db, rxr->rx_prod);
 | 
			
		||||
		bp->grp_info[map_idx].rx_fw_ring_id = ring->fw_ring_id;
 | 
			
		||||
		if (bp->flags & BNXT_FLAG_CHIP_P5) {
 | 
			
		||||
		if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS) {
 | 
			
		||||
			struct bnxt_cp_ring_info *cpr2 = rxr->rx_cpr;
 | 
			
		||||
			u32 type2 = HWRM_RING_ALLOC_CMPL;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -6251,7 +6251,7 @@ static void bnxt_hwrm_ring_free(struct bnxt *bp, bool close_path)
 | 
			
		|||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5)
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS)
 | 
			
		||||
		type = RING_FREE_REQ_RING_TYPE_RX_AGG;
 | 
			
		||||
	else
 | 
			
		||||
		type = RING_FREE_REQ_RING_TYPE_RX;
 | 
			
		||||
| 
						 | 
				
			
			@ -6278,7 +6278,7 @@ static void bnxt_hwrm_ring_free(struct bnxt *bp, bool close_path)
 | 
			
		|||
	 */
 | 
			
		||||
	bnxt_disable_int_sync(bp);
 | 
			
		||||
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5)
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS)
 | 
			
		||||
		type = RING_FREE_REQ_RING_TYPE_NQ;
 | 
			
		||||
	else
 | 
			
		||||
		type = RING_FREE_REQ_RING_TYPE_L2_CMPL;
 | 
			
		||||
| 
						 | 
				
			
			@ -6345,7 +6345,7 @@ static int bnxt_hwrm_get_rings(struct bnxt *bp)
 | 
			
		|||
		cp = le16_to_cpu(resp->alloc_cmpl_rings);
 | 
			
		||||
		stats = le16_to_cpu(resp->alloc_stat_ctx);
 | 
			
		||||
		hw_resc->resv_irqs = cp;
 | 
			
		||||
		if (bp->flags & BNXT_FLAG_CHIP_P5) {
 | 
			
		||||
		if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS) {
 | 
			
		||||
			int rx = hw_resc->resv_rx_rings;
 | 
			
		||||
			int tx = hw_resc->resv_tx_rings;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -6410,7 +6410,7 @@ __bnxt_hwrm_reserve_pf_rings(struct bnxt *bp, int tx_rings, int rx_rings,
 | 
			
		|||
	if (BNXT_NEW_RM(bp)) {
 | 
			
		||||
		enables |= rx_rings ? FUNC_CFG_REQ_ENABLES_NUM_RX_RINGS : 0;
 | 
			
		||||
		enables |= stats ? FUNC_CFG_REQ_ENABLES_NUM_STAT_CTXS : 0;
 | 
			
		||||
		if (bp->flags & BNXT_FLAG_CHIP_P5) {
 | 
			
		||||
		if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS) {
 | 
			
		||||
			enables |= cp_rings ? FUNC_CFG_REQ_ENABLES_NUM_MSIX : 0;
 | 
			
		||||
			enables |= tx_rings + ring_grps ?
 | 
			
		||||
				   FUNC_CFG_REQ_ENABLES_NUM_CMPL_RINGS : 0;
 | 
			
		||||
| 
						 | 
				
			
			@ -6426,7 +6426,7 @@ __bnxt_hwrm_reserve_pf_rings(struct bnxt *bp, int tx_rings, int rx_rings,
 | 
			
		|||
		enables |= vnics ? FUNC_CFG_REQ_ENABLES_NUM_VNICS : 0;
 | 
			
		||||
 | 
			
		||||
		req->num_rx_rings = cpu_to_le16(rx_rings);
 | 
			
		||||
		if (bp->flags & BNXT_FLAG_CHIP_P5) {
 | 
			
		||||
		if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS) {
 | 
			
		||||
			req->num_cmpl_rings = cpu_to_le16(tx_rings + ring_grps);
 | 
			
		||||
			req->num_msix = cpu_to_le16(cp_rings);
 | 
			
		||||
			req->num_rsscos_ctxs =
 | 
			
		||||
| 
						 | 
				
			
			@ -6461,7 +6461,7 @@ __bnxt_hwrm_reserve_vf_rings(struct bnxt *bp, int tx_rings, int rx_rings,
 | 
			
		|||
	enables |= rx_rings ? FUNC_VF_CFG_REQ_ENABLES_NUM_RX_RINGS |
 | 
			
		||||
			      FUNC_VF_CFG_REQ_ENABLES_NUM_RSSCOS_CTXS : 0;
 | 
			
		||||
	enables |= stats ? FUNC_VF_CFG_REQ_ENABLES_NUM_STAT_CTXS : 0;
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5) {
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS) {
 | 
			
		||||
		enables |= tx_rings + ring_grps ?
 | 
			
		||||
			   FUNC_VF_CFG_REQ_ENABLES_NUM_CMPL_RINGS : 0;
 | 
			
		||||
	} else {
 | 
			
		||||
| 
						 | 
				
			
			@ -6476,7 +6476,7 @@ __bnxt_hwrm_reserve_vf_rings(struct bnxt *bp, int tx_rings, int rx_rings,
 | 
			
		|||
	req->num_l2_ctxs = cpu_to_le16(BNXT_VF_MAX_L2_CTX);
 | 
			
		||||
	req->num_tx_rings = cpu_to_le16(tx_rings);
 | 
			
		||||
	req->num_rx_rings = cpu_to_le16(rx_rings);
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5) {
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS) {
 | 
			
		||||
		req->num_cmpl_rings = cpu_to_le16(tx_rings + ring_grps);
 | 
			
		||||
		req->num_rsscos_ctxs = cpu_to_le16(DIV_ROUND_UP(ring_grps, 64));
 | 
			
		||||
	} else {
 | 
			
		||||
| 
						 | 
				
			
			@ -6572,7 +6572,7 @@ static int bnxt_cp_rings_in_use(struct bnxt *bp)
 | 
			
		|||
{
 | 
			
		||||
	int cp;
 | 
			
		||||
 | 
			
		||||
	if (!(bp->flags & BNXT_FLAG_CHIP_P5))
 | 
			
		||||
	if (!(bp->flags & BNXT_FLAG_CHIP_P5_PLUS))
 | 
			
		||||
		return bnxt_nq_rings_in_use(bp);
 | 
			
		||||
 | 
			
		||||
	cp = bp->tx_nr_rings + bp->rx_nr_rings;
 | 
			
		||||
| 
						 | 
				
			
			@ -6629,7 +6629,8 @@ static bool bnxt_need_reserve_rings(struct bnxt *bp)
 | 
			
		|||
		bnxt_check_rss_tbl_no_rmgr(bp);
 | 
			
		||||
		return false;
 | 
			
		||||
	}
 | 
			
		||||
	if ((bp->flags & BNXT_FLAG_RFS) && !(bp->flags & BNXT_FLAG_CHIP_P5))
 | 
			
		||||
	if ((bp->flags & BNXT_FLAG_RFS) &&
 | 
			
		||||
	    !(bp->flags & BNXT_FLAG_CHIP_P5_PLUS))
 | 
			
		||||
		vnic = rx + 1;
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_AGG_RINGS)
 | 
			
		||||
		rx <<= 1;
 | 
			
		||||
| 
						 | 
				
			
			@ -6637,9 +6638,9 @@ static bool bnxt_need_reserve_rings(struct bnxt *bp)
 | 
			
		|||
	if (hw_resc->resv_rx_rings != rx || hw_resc->resv_cp_rings != cp ||
 | 
			
		||||
	    hw_resc->resv_vnics != vnic || hw_resc->resv_stat_ctxs != stat ||
 | 
			
		||||
	    (hw_resc->resv_hw_ring_grps != grp &&
 | 
			
		||||
	     !(bp->flags & BNXT_FLAG_CHIP_P5)))
 | 
			
		||||
	     !(bp->flags & BNXT_FLAG_CHIP_P5_PLUS)))
 | 
			
		||||
		return true;
 | 
			
		||||
	if ((bp->flags & BNXT_FLAG_CHIP_P5) && BNXT_PF(bp) &&
 | 
			
		||||
	if ((bp->flags & BNXT_FLAG_CHIP_P5_PLUS) && BNXT_PF(bp) &&
 | 
			
		||||
	    hw_resc->resv_irqs != nq)
 | 
			
		||||
		return true;
 | 
			
		||||
	return false;
 | 
			
		||||
| 
						 | 
				
			
			@ -6661,7 +6662,8 @@ static int __bnxt_reserve_rings(struct bnxt *bp)
 | 
			
		|||
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_SHARED_RINGS)
 | 
			
		||||
		sh = true;
 | 
			
		||||
	if ((bp->flags & BNXT_FLAG_RFS) && !(bp->flags & BNXT_FLAG_CHIP_P5))
 | 
			
		||||
	if ((bp->flags & BNXT_FLAG_RFS) &&
 | 
			
		||||
	    !(bp->flags & BNXT_FLAG_CHIP_P5_PLUS))
 | 
			
		||||
		vnic = rx + 1;
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_AGG_RINGS)
 | 
			
		||||
		rx <<= 1;
 | 
			
		||||
| 
						 | 
				
			
			@ -6752,7 +6754,7 @@ static int bnxt_hwrm_check_vf_rings(struct bnxt *bp, int tx_rings, int rx_rings,
 | 
			
		|||
		FUNC_VF_CFG_REQ_FLAGS_STAT_CTX_ASSETS_TEST |
 | 
			
		||||
		FUNC_VF_CFG_REQ_FLAGS_VNIC_ASSETS_TEST |
 | 
			
		||||
		FUNC_VF_CFG_REQ_FLAGS_RSSCOS_CTX_ASSETS_TEST;
 | 
			
		||||
	if (!(bp->flags & BNXT_FLAG_CHIP_P5))
 | 
			
		||||
	if (!(bp->flags & BNXT_FLAG_CHIP_P5_PLUS))
 | 
			
		||||
		flags |= FUNC_VF_CFG_REQ_FLAGS_RING_GRP_ASSETS_TEST;
 | 
			
		||||
 | 
			
		||||
	req->flags = cpu_to_le32(flags);
 | 
			
		||||
| 
						 | 
				
			
			@ -6774,7 +6776,7 @@ static int bnxt_hwrm_check_pf_rings(struct bnxt *bp, int tx_rings, int rx_rings,
 | 
			
		|||
			 FUNC_CFG_REQ_FLAGS_CMPL_ASSETS_TEST |
 | 
			
		||||
			 FUNC_CFG_REQ_FLAGS_STAT_CTX_ASSETS_TEST |
 | 
			
		||||
			 FUNC_CFG_REQ_FLAGS_VNIC_ASSETS_TEST;
 | 
			
		||||
		if (bp->flags & BNXT_FLAG_CHIP_P5)
 | 
			
		||||
		if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS)
 | 
			
		||||
			flags |= FUNC_CFG_REQ_FLAGS_RSSCOS_CTX_ASSETS_TEST |
 | 
			
		||||
				 FUNC_CFG_REQ_FLAGS_NQ_ASSETS_TEST;
 | 
			
		||||
		else
 | 
			
		||||
| 
						 | 
				
			
			@ -6993,7 +6995,7 @@ bnxt_hwrm_set_tx_coal(struct bnxt *bp, struct bnxt_napi *bnapi,
 | 
			
		|||
		rc = hwrm_req_send(bp, req);
 | 
			
		||||
		if (rc)
 | 
			
		||||
			return rc;
 | 
			
		||||
		if (!(bp->flags & BNXT_FLAG_CHIP_P5))
 | 
			
		||||
		if (!(bp->flags & BNXT_FLAG_CHIP_P5_PLUS))
 | 
			
		||||
			return 0;
 | 
			
		||||
	}
 | 
			
		||||
	return 0;
 | 
			
		||||
| 
						 | 
				
			
			@ -7030,7 +7032,7 @@ int bnxt_hwrm_set_coal(struct bnxt *bp)
 | 
			
		|||
		if (rc)
 | 
			
		||||
			break;
 | 
			
		||||
 | 
			
		||||
		if (!(bp->flags & BNXT_FLAG_CHIP_P5))
 | 
			
		||||
		if (!(bp->flags & BNXT_FLAG_CHIP_P5_PLUS))
 | 
			
		||||
			continue;
 | 
			
		||||
 | 
			
		||||
		if (bnapi->rx_ring && bnapi->tx_ring[0]) {
 | 
			
		||||
| 
						 | 
				
			
			@ -7188,7 +7190,7 @@ static int bnxt_hwrm_func_qcfg(struct bnxt *bp)
 | 
			
		|||
	if (bp->db_size)
 | 
			
		||||
		goto func_qcfg_exit;
 | 
			
		||||
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5) {
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS) {
 | 
			
		||||
		if (BNXT_PF(bp))
 | 
			
		||||
			min_db_offset = DB_PF_OFFSET_P5;
 | 
			
		||||
		else
 | 
			
		||||
| 
						 | 
				
			
			@ -7951,7 +7953,7 @@ int bnxt_hwrm_func_resc_qcaps(struct bnxt *bp, bool all)
 | 
			
		|||
	hw_resc->min_stat_ctxs = le16_to_cpu(resp->min_stat_ctx);
 | 
			
		||||
	hw_resc->max_stat_ctxs = le16_to_cpu(resp->max_stat_ctx);
 | 
			
		||||
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5) {
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS) {
 | 
			
		||||
		u16 max_msix = le16_to_cpu(resp->max_msix);
 | 
			
		||||
 | 
			
		||||
		hw_resc->max_nqs = max_msix;
 | 
			
		||||
| 
						 | 
				
			
			@ -7980,7 +7982,7 @@ static int __bnxt_hwrm_ptp_qcfg(struct bnxt *bp)
 | 
			
		|||
	u8 flags;
 | 
			
		||||
	int rc;
 | 
			
		||||
 | 
			
		||||
	if (bp->hwrm_spec_code < 0x10801 || !BNXT_CHIP_P5_THOR(bp)) {
 | 
			
		||||
	if (bp->hwrm_spec_code < 0x10801 || !BNXT_CHIP_P5(bp)) {
 | 
			
		||||
		rc = -ENODEV;
 | 
			
		||||
		goto no_ptp;
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			@ -8012,7 +8014,7 @@ static int __bnxt_hwrm_ptp_qcfg(struct bnxt *bp)
 | 
			
		|||
	if (flags & PORT_MAC_PTP_QCFG_RESP_FLAGS_PARTIAL_DIRECT_ACCESS_REF_CLOCK) {
 | 
			
		||||
		ptp->refclk_regs[0] = le32_to_cpu(resp->ts_ref_clock_reg_lower);
 | 
			
		||||
		ptp->refclk_regs[1] = le32_to_cpu(resp->ts_ref_clock_reg_upper);
 | 
			
		||||
	} else if (bp->flags & BNXT_FLAG_CHIP_P5) {
 | 
			
		||||
	} else if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS) {
 | 
			
		||||
		ptp->refclk_regs[0] = BNXT_TS_REG_TIMESYNC_TS0_LOWER;
 | 
			
		||||
		ptp->refclk_regs[1] = BNXT_TS_REG_TIMESYNC_TS0_UPPER;
 | 
			
		||||
	} else {
 | 
			
		||||
| 
						 | 
				
			
			@ -8721,7 +8723,7 @@ static void bnxt_accumulate_all_stats(struct bnxt *bp)
 | 
			
		|||
	int i;
 | 
			
		||||
 | 
			
		||||
	/* Chip bug.  Counter intermittently becomes 0. */
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5)
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS)
 | 
			
		||||
		ignore_zero = true;
 | 
			
		||||
 | 
			
		||||
	for (i = 0; i < bp->cp_nr_rings; i++) {
 | 
			
		||||
| 
						 | 
				
			
			@ -8915,7 +8917,7 @@ static void bnxt_clear_vnic(struct bnxt *bp)
 | 
			
		|||
		return;
 | 
			
		||||
 | 
			
		||||
	bnxt_hwrm_clear_vnic_filter(bp);
 | 
			
		||||
	if (!(bp->flags & BNXT_FLAG_CHIP_P5)) {
 | 
			
		||||
	if (!(bp->flags & BNXT_FLAG_CHIP_P5_PLUS)) {
 | 
			
		||||
		/* clear all RSS setting before free vnic ctx */
 | 
			
		||||
		bnxt_hwrm_clear_vnic_rss(bp);
 | 
			
		||||
		bnxt_hwrm_vnic_ctx_free(bp);
 | 
			
		||||
| 
						 | 
				
			
			@ -8924,7 +8926,7 @@ static void bnxt_clear_vnic(struct bnxt *bp)
 | 
			
		|||
	if (bp->flags & BNXT_FLAG_TPA)
 | 
			
		||||
		bnxt_set_tpa(bp, false);
 | 
			
		||||
	bnxt_hwrm_vnic_free(bp);
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5)
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS)
 | 
			
		||||
		bnxt_hwrm_vnic_ctx_free(bp);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -9081,7 +9083,7 @@ static int __bnxt_setup_vnic_p5(struct bnxt *bp, u16 vnic_id)
 | 
			
		|||
 | 
			
		||||
static int bnxt_setup_vnic(struct bnxt *bp, u16 vnic_id)
 | 
			
		||||
{
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5)
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS)
 | 
			
		||||
		return __bnxt_setup_vnic_p5(bp, vnic_id);
 | 
			
		||||
	else
 | 
			
		||||
		return __bnxt_setup_vnic(bp, vnic_id);
 | 
			
		||||
| 
						 | 
				
			
			@ -9092,7 +9094,7 @@ static int bnxt_alloc_rfs_vnics(struct bnxt *bp)
 | 
			
		|||
#ifdef CONFIG_RFS_ACCEL
 | 
			
		||||
	int i, rc = 0;
 | 
			
		||||
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5)
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS)
 | 
			
		||||
		return 0;
 | 
			
		||||
 | 
			
		||||
	for (i = 0; i < bp->rx_nr_rings; i++) {
 | 
			
		||||
| 
						 | 
				
			
			@ -9474,7 +9476,7 @@ static unsigned int bnxt_get_max_func_cp_rings_for_en(struct bnxt *bp)
 | 
			
		|||
{
 | 
			
		||||
	unsigned int cp = bp->hw_resc.max_cp_rings;
 | 
			
		||||
 | 
			
		||||
	if (!(bp->flags & BNXT_FLAG_CHIP_P5))
 | 
			
		||||
	if (!(bp->flags & BNXT_FLAG_CHIP_P5_PLUS))
 | 
			
		||||
		cp -= bnxt_get_ulp_msix_num(bp);
 | 
			
		||||
 | 
			
		||||
	return cp;
 | 
			
		||||
| 
						 | 
				
			
			@ -9484,7 +9486,7 @@ static unsigned int bnxt_get_max_func_irqs(struct bnxt *bp)
 | 
			
		|||
{
 | 
			
		||||
	struct bnxt_hw_resc *hw_resc = &bp->hw_resc;
 | 
			
		||||
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5)
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS)
 | 
			
		||||
		return min_t(unsigned int, hw_resc->max_irqs, hw_resc->max_nqs);
 | 
			
		||||
 | 
			
		||||
	return min_t(unsigned int, hw_resc->max_irqs, hw_resc->max_cp_rings);
 | 
			
		||||
| 
						 | 
				
			
			@ -9500,7 +9502,7 @@ unsigned int bnxt_get_avail_cp_rings_for_en(struct bnxt *bp)
 | 
			
		|||
	unsigned int cp;
 | 
			
		||||
 | 
			
		||||
	cp = bnxt_get_max_func_cp_rings_for_en(bp);
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5)
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS)
 | 
			
		||||
		return cp - bp->rx_nr_rings - bp->tx_nr_rings;
 | 
			
		||||
	else
 | 
			
		||||
		return cp - bp->cp_nr_rings;
 | 
			
		||||
| 
						 | 
				
			
			@ -9519,7 +9521,7 @@ int bnxt_get_avail_msix(struct bnxt *bp, int num)
 | 
			
		|||
	int max_idx, avail_msix;
 | 
			
		||||
 | 
			
		||||
	max_idx = bp->total_irqs;
 | 
			
		||||
	if (!(bp->flags & BNXT_FLAG_CHIP_P5))
 | 
			
		||||
	if (!(bp->flags & BNXT_FLAG_CHIP_P5_PLUS))
 | 
			
		||||
		max_idx = min_t(int, bp->total_irqs, max_cp);
 | 
			
		||||
	avail_msix = max_idx - bp->cp_nr_rings;
 | 
			
		||||
	if (!BNXT_NEW_RM(bp) || avail_msix >= num)
 | 
			
		||||
| 
						 | 
				
			
			@ -9798,7 +9800,7 @@ static void bnxt_init_napi(struct bnxt *bp)
 | 
			
		|||
	if (bp->flags & BNXT_FLAG_USING_MSIX) {
 | 
			
		||||
		int (*poll_fn)(struct napi_struct *, int) = bnxt_poll;
 | 
			
		||||
 | 
			
		||||
		if (bp->flags & BNXT_FLAG_CHIP_P5)
 | 
			
		||||
		if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS)
 | 
			
		||||
			poll_fn = bnxt_poll_p5;
 | 
			
		||||
		else if (BNXT_CHIP_TYPE_NITRO_A0(bp))
 | 
			
		||||
			cp_nr_rings--;
 | 
			
		||||
| 
						 | 
				
			
			@ -11517,7 +11519,7 @@ static bool bnxt_can_reserve_rings(struct bnxt *bp)
 | 
			
		|||
/* If the chip and firmware supports RFS */
 | 
			
		||||
static bool bnxt_rfs_supported(struct bnxt *bp)
 | 
			
		||||
{
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5) {
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS) {
 | 
			
		||||
		if (bp->fw_cap & BNXT_FW_CAP_CFA_RFS_RING_TBL_IDX_V2)
 | 
			
		||||
			return true;
 | 
			
		||||
		return false;
 | 
			
		||||
| 
						 | 
				
			
			@ -11538,7 +11540,7 @@ static bool bnxt_rfs_capable(struct bnxt *bp)
 | 
			
		|||
#ifdef CONFIG_RFS_ACCEL
 | 
			
		||||
	int vnics, max_vnics, max_rss_ctxs;
 | 
			
		||||
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5)
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS)
 | 
			
		||||
		return bnxt_rfs_supported(bp);
 | 
			
		||||
	if (!(bp->flags & BNXT_FLAG_MSIX_CAP) || !bnxt_can_reserve_rings(bp) || !bp->rx_nr_rings)
 | 
			
		||||
		return false;
 | 
			
		||||
| 
						 | 
				
			
			@ -11640,7 +11642,7 @@ static int bnxt_set_features(struct net_device *dev, netdev_features_t features)
 | 
			
		|||
		update_tpa = true;
 | 
			
		||||
		if ((bp->flags & BNXT_FLAG_TPA) == 0 ||
 | 
			
		||||
		    (flags & BNXT_FLAG_TPA) == 0 ||
 | 
			
		||||
		    (bp->flags & BNXT_FLAG_CHIP_P5))
 | 
			
		||||
		    (bp->flags & BNXT_FLAG_CHIP_P5_PLUS))
 | 
			
		||||
			re_init = true;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -12051,8 +12053,7 @@ static void bnxt_timer(struct timer_list *t)
 | 
			
		|||
	if (test_bit(BNXT_STATE_L2_FILTER_RETRY, &bp->state))
 | 
			
		||||
		bnxt_queue_sp_work(bp, BNXT_RX_MASK_SP_EVENT);
 | 
			
		||||
 | 
			
		||||
	if ((bp->flags & BNXT_FLAG_CHIP_P5) && !bp->chip_rev &&
 | 
			
		||||
	    netif_carrier_ok(dev))
 | 
			
		||||
	if ((BNXT_CHIP_P5(bp)) && !bp->chip_rev && netif_carrier_ok(dev))
 | 
			
		||||
		bnxt_queue_sp_work(bp, BNXT_RING_COAL_NOW_SP_EVENT);
 | 
			
		||||
 | 
			
		||||
bnxt_restart_timer:
 | 
			
		||||
| 
						 | 
				
			
			@ -12303,7 +12304,7 @@ static void bnxt_chk_missed_irq(struct bnxt *bp)
 | 
			
		|||
{
 | 
			
		||||
	int i;
 | 
			
		||||
 | 
			
		||||
	if (!(bp->flags & BNXT_FLAG_CHIP_P5))
 | 
			
		||||
	if (!(bp->flags & BNXT_FLAG_CHIP_P5_PLUS))
 | 
			
		||||
		return;
 | 
			
		||||
 | 
			
		||||
	for (i = 0; i < bp->cp_nr_rings; i++) {
 | 
			
		||||
| 
						 | 
				
			
			@ -12507,7 +12508,8 @@ int bnxt_check_rings(struct bnxt *bp, int tx, int rx, bool sh, int tcs,
 | 
			
		|||
		return -ENOMEM;
 | 
			
		||||
 | 
			
		||||
	vnics = 1;
 | 
			
		||||
	if ((bp->flags & (BNXT_FLAG_RFS | BNXT_FLAG_CHIP_P5)) == BNXT_FLAG_RFS)
 | 
			
		||||
	if ((bp->flags & (BNXT_FLAG_RFS | BNXT_FLAG_CHIP_P5_PLUS)) ==
 | 
			
		||||
	    BNXT_FLAG_RFS)
 | 
			
		||||
		vnics += rx;
 | 
			
		||||
 | 
			
		||||
	tx_cp = __bnxt_num_tx_to_cp(bp, tx_rings_needed, tx_sets, tx_xdp);
 | 
			
		||||
| 
						 | 
				
			
			@ -12588,10 +12590,10 @@ static bool bnxt_fw_pre_resv_vnics(struct bnxt *bp)
 | 
			
		|||
{
 | 
			
		||||
	u16 fw_maj = BNXT_FW_MAJ(bp), fw_bld = BNXT_FW_BLD(bp);
 | 
			
		||||
 | 
			
		||||
	if (!(bp->flags & BNXT_FLAG_CHIP_P5) &&
 | 
			
		||||
	if (!(bp->flags & BNXT_FLAG_CHIP_P5_PLUS) &&
 | 
			
		||||
	    (fw_maj > 218 || (fw_maj == 218 && fw_bld >= 18)))
 | 
			
		||||
		return true;
 | 
			
		||||
	if ((bp->flags & BNXT_FLAG_CHIP_P5) &&
 | 
			
		||||
	if ((bp->flags & BNXT_FLAG_CHIP_P5_PLUS) &&
 | 
			
		||||
	    (fw_maj > 216 || (fw_maj == 216 && fw_bld >= 172)))
 | 
			
		||||
		return true;
 | 
			
		||||
	return false;
 | 
			
		||||
| 
						 | 
				
			
			@ -13647,7 +13649,7 @@ static void _bnxt_get_max_rings(struct bnxt *bp, int *max_rx, int *max_tx,
 | 
			
		|||
	max_irq = min_t(int, bnxt_get_max_func_irqs(bp) -
 | 
			
		||||
			bnxt_get_ulp_msix_num(bp),
 | 
			
		||||
			hw_resc->max_stat_ctxs - bnxt_get_ulp_stat_ctxs(bp));
 | 
			
		||||
	if (!(bp->flags & BNXT_FLAG_CHIP_P5))
 | 
			
		||||
	if (!(bp->flags & BNXT_FLAG_CHIP_P5_PLUS))
 | 
			
		||||
		*max_cp = min_t(int, *max_cp, max_irq);
 | 
			
		||||
	max_ring_grps = hw_resc->max_hw_ring_grps;
 | 
			
		||||
	if (BNXT_CHIP_TYPE_NITRO_A0(bp) && BNXT_PF(bp)) {
 | 
			
		||||
| 
						 | 
				
			
			@ -13656,7 +13658,7 @@ static void _bnxt_get_max_rings(struct bnxt *bp, int *max_rx, int *max_tx,
 | 
			
		|||
	}
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_AGG_RINGS)
 | 
			
		||||
		*max_rx >>= 1;
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5) {
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS) {
 | 
			
		||||
		if (*max_cp < (*max_rx + *max_tx)) {
 | 
			
		||||
			*max_rx = *max_cp / 2;
 | 
			
		||||
			*max_tx = *max_rx;
 | 
			
		||||
| 
						 | 
				
			
			@ -14004,8 +14006,8 @@ static int bnxt_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
 | 
			
		|||
	if (BNXT_PF(bp))
 | 
			
		||||
		bnxt_vpd_read_info(bp);
 | 
			
		||||
 | 
			
		||||
	if (BNXT_CHIP_P5(bp)) {
 | 
			
		||||
		bp->flags |= BNXT_FLAG_CHIP_P5;
 | 
			
		||||
	if (BNXT_CHIP_P5_PLUS(bp)) {
 | 
			
		||||
		bp->flags |= BNXT_FLAG_CHIP_P5_PLUS;
 | 
			
		||||
		if (BNXT_CHIP_SR2(bp))
 | 
			
		||||
			bp->flags |= BNXT_FLAG_CHIP_SR2;
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			@ -14070,7 +14072,7 @@ static int bnxt_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
 | 
			
		|||
		bp->gro_func = bnxt_gro_func_5730x;
 | 
			
		||||
		if (BNXT_CHIP_P4(bp))
 | 
			
		||||
			bp->gro_func = bnxt_gro_func_5731x;
 | 
			
		||||
		else if (BNXT_CHIP_P5(bp))
 | 
			
		||||
		else if (BNXT_CHIP_P5_PLUS(bp))
 | 
			
		||||
			bp->gro_func = bnxt_gro_func_5750x;
 | 
			
		||||
	}
 | 
			
		||||
	if (!BNXT_CHIP_P4_PLUS(bp))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1430,7 +1430,7 @@ struct bnxt_test_info {
 | 
			
		|||
};
 | 
			
		||||
 | 
			
		||||
#define CHIMP_REG_VIEW_ADDR				\
 | 
			
		||||
	((bp->flags & BNXT_FLAG_CHIP_P5) ? 0x80000000 : 0xb1000000)
 | 
			
		||||
	((bp->flags & BNXT_FLAG_CHIP_P5_PLUS) ? 0x80000000 : 0xb1000000)
 | 
			
		||||
 | 
			
		||||
#define BNXT_GRCPF_REG_CHIMP_COMM		0x0
 | 
			
		||||
#define BNXT_GRCPF_REG_CHIMP_COMM_TRIGGER	0x100
 | 
			
		||||
| 
						 | 
				
			
			@ -1859,7 +1859,7 @@ struct bnxt {
 | 
			
		|||
	atomic_t		intr_sem;
 | 
			
		||||
 | 
			
		||||
	u32			flags;
 | 
			
		||||
	#define BNXT_FLAG_CHIP_P5	0x1
 | 
			
		||||
	#define BNXT_FLAG_CHIP_P5_PLUS	0x1
 | 
			
		||||
	#define BNXT_FLAG_VF		0x2
 | 
			
		||||
	#define BNXT_FLAG_LRO		0x4
 | 
			
		||||
#ifdef CONFIG_INET
 | 
			
		||||
| 
						 | 
				
			
			@ -1913,21 +1913,21 @@ struct bnxt {
 | 
			
		|||
#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_SUPPORTS_TPA(bp)	(!BNXT_CHIP_TYPE_NITRO_A0(bp) &&	\
 | 
			
		||||
				 (!((bp)->flags & BNXT_FLAG_CHIP_P5) ||	\
 | 
			
		||||
				 (!((bp)->flags & BNXT_FLAG_CHIP_P5_PLUS) ||\
 | 
			
		||||
				  (bp)->max_tpa_v2) && !is_kdump_kernel())
 | 
			
		||||
#define BNXT_RX_JUMBO_MODE(bp)	((bp)->flags & BNXT_FLAG_JUMBO)
 | 
			
		||||
 | 
			
		||||
#define BNXT_CHIP_SR2(bp)			\
 | 
			
		||||
	((bp)->chip_num == CHIP_NUM_58818)
 | 
			
		||||
 | 
			
		||||
#define BNXT_CHIP_P5_THOR(bp)			\
 | 
			
		||||
#define BNXT_CHIP_P5(bp)			\
 | 
			
		||||
	((bp)->chip_num == CHIP_NUM_57508 ||	\
 | 
			
		||||
	 (bp)->chip_num == CHIP_NUM_57504 ||	\
 | 
			
		||||
	 (bp)->chip_num == CHIP_NUM_57502)
 | 
			
		||||
 | 
			
		||||
/* Chip class phase 5 */
 | 
			
		||||
#define BNXT_CHIP_P5(bp)			\
 | 
			
		||||
	(BNXT_CHIP_P5_THOR(bp) || BNXT_CHIP_SR2(bp))
 | 
			
		||||
#define BNXT_CHIP_P5_PLUS(bp)			\
 | 
			
		||||
	(BNXT_CHIP_P5(bp) || BNXT_CHIP_SR2(bp))
 | 
			
		||||
 | 
			
		||||
/* Chip class phase 4.x */
 | 
			
		||||
#define BNXT_CHIP_P4(bp)			\
 | 
			
		||||
| 
						 | 
				
			
			@ -1938,7 +1938,7 @@ struct bnxt {
 | 
			
		|||
	  !BNXT_CHIP_TYPE_NITRO_A0(bp)))
 | 
			
		||||
 | 
			
		||||
#define BNXT_CHIP_P4_PLUS(bp)			\
 | 
			
		||||
	(BNXT_CHIP_P4(bp) || BNXT_CHIP_P5(bp))
 | 
			
		||||
	(BNXT_CHIP_P4(bp) || BNXT_CHIP_P5_PLUS(bp))
 | 
			
		||||
 | 
			
		||||
	struct bnxt_aux_priv	*aux_priv;
 | 
			
		||||
	struct bnxt_en_dev	*edev;
 | 
			
		||||
| 
						 | 
				
			
			@ -2362,7 +2362,7 @@ static inline void bnxt_writeq_relaxed(struct bnxt *bp, u64 val,
 | 
			
		|||
static inline void bnxt_db_write_relaxed(struct bnxt *bp,
 | 
			
		||||
					 struct bnxt_db_info *db, u32 idx)
 | 
			
		||||
{
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5) {
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS) {
 | 
			
		||||
		bnxt_writeq_relaxed(bp, db->db_key64 | DB_RING_IDX(db, idx),
 | 
			
		||||
				    db->doorbell);
 | 
			
		||||
	} else {
 | 
			
		||||
| 
						 | 
				
			
			@ -2378,7 +2378,7 @@ static inline void bnxt_db_write_relaxed(struct bnxt *bp,
 | 
			
		|||
static inline void bnxt_db_write(struct bnxt *bp, struct bnxt_db_info *db,
 | 
			
		||||
				 u32 idx)
 | 
			
		||||
{
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5) {
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS) {
 | 
			
		||||
		bnxt_writeq(bp, db->db_key64 | DB_RING_IDX(db, idx),
 | 
			
		||||
			    db->doorbell);
 | 
			
		||||
	} else {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -739,7 +739,7 @@ static int bnxt_hwrm_get_nvm_cfg_ver(struct bnxt *bp, u32 *nvm_cfg_ver)
 | 
			
		|||
	}
 | 
			
		||||
 | 
			
		||||
	/* earlier devices present as an array of raw bytes */
 | 
			
		||||
	if (!BNXT_CHIP_P5(bp)) {
 | 
			
		||||
	if (!BNXT_CHIP_P5_PLUS(bp)) {
 | 
			
		||||
		dim = 0;
 | 
			
		||||
		i = 0;
 | 
			
		||||
		bits *= 3;  /* array of 3 version components */
 | 
			
		||||
| 
						 | 
				
			
			@ -759,7 +759,7 @@ static int bnxt_hwrm_get_nvm_cfg_ver(struct bnxt *bp, u32 *nvm_cfg_ver)
 | 
			
		|||
			goto exit;
 | 
			
		||||
		bnxt_copy_from_nvm_data(&ver, data, bits, bytes);
 | 
			
		||||
 | 
			
		||||
		if (BNXT_CHIP_P5(bp)) {
 | 
			
		||||
		if (BNXT_CHIP_P5_PLUS(bp)) {
 | 
			
		||||
			*nvm_cfg_ver <<= 8;
 | 
			
		||||
			*nvm_cfg_ver |= ver.vu8;
 | 
			
		||||
		} else {
 | 
			
		||||
| 
						 | 
				
			
			@ -779,7 +779,7 @@ static int bnxt_dl_info_put(struct bnxt *bp, struct devlink_info_req *req,
 | 
			
		|||
	if (!strlen(buf))
 | 
			
		||||
		return 0;
 | 
			
		||||
 | 
			
		||||
	if ((bp->flags & BNXT_FLAG_CHIP_P5) &&
 | 
			
		||||
	if ((bp->flags & BNXT_FLAG_CHIP_P5_PLUS) &&
 | 
			
		||||
	    (!strcmp(key, DEVLINK_INFO_VERSION_GENERIC_FW_NCSI) ||
 | 
			
		||||
	     !strcmp(key, DEVLINK_INFO_VERSION_GENERIC_FW_ROCE)))
 | 
			
		||||
		return 0;
 | 
			
		||||
| 
						 | 
				
			
			@ -1005,7 +1005,7 @@ static int bnxt_dl_info_get(struct devlink *dl, struct devlink_info_req *req,
 | 
			
		|||
	if (rc)
 | 
			
		||||
		return rc;
 | 
			
		||||
 | 
			
		||||
	if (BNXT_CHIP_P5(bp)) {
 | 
			
		||||
	if (BNXT_CHIP_P5_PLUS(bp)) {
 | 
			
		||||
		rc = bnxt_dl_livepatch_info_put(bp, req, BNXT_FW_SRT_PATCH);
 | 
			
		||||
		if (rc)
 | 
			
		||||
			return rc;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -511,7 +511,7 @@ static int bnxt_get_num_tpa_ring_stats(struct bnxt *bp)
 | 
			
		|||
{
 | 
			
		||||
	if (BNXT_SUPPORTS_TPA(bp)) {
 | 
			
		||||
		if (bp->max_tpa_v2) {
 | 
			
		||||
			if (BNXT_CHIP_P5_THOR(bp))
 | 
			
		||||
			if (BNXT_CHIP_P5(bp))
 | 
			
		||||
				return BNXT_NUM_TPA_RING_STATS_P5;
 | 
			
		||||
			return BNXT_NUM_TPA_RING_STATS_P5_SR2;
 | 
			
		||||
		}
 | 
			
		||||
| 
						 | 
				
			
			@ -1322,7 +1322,7 @@ u32 bnxt_get_rxfh_indir_size(struct net_device *dev)
 | 
			
		|||
{
 | 
			
		||||
	struct bnxt *bp = netdev_priv(dev);
 | 
			
		||||
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5)
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS)
 | 
			
		||||
		return ALIGN(bp->rx_nr_rings, BNXT_RSS_TABLE_ENTRIES_P5);
 | 
			
		||||
	return HW_HASH_INDEX_SIZE;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -3943,7 +3943,7 @@ static int bnxt_run_loopback(struct bnxt *bp)
 | 
			
		|||
	int rc;
 | 
			
		||||
 | 
			
		||||
	cpr = &rxr->bnapi->cp_ring;
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5)
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS)
 | 
			
		||||
		cpr = rxr->rx_cpr;
 | 
			
		||||
	pkt_size = min(bp->dev->mtu + ETH_HLEN, bp->rx_copy_thresh);
 | 
			
		||||
	skb = netdev_alloc_skb(bp->dev, pkt_size);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -650,7 +650,7 @@ static int bnxt_map_ptp_regs(struct bnxt *bp)
 | 
			
		|||
	int rc, i;
 | 
			
		||||
 | 
			
		||||
	reg_arr = ptp->refclk_regs;
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5) {
 | 
			
		||||
	if (BNXT_CHIP_P5(bp)) {
 | 
			
		||||
		rc = bnxt_map_regs(bp, reg_arr, 2, BNXT_PTP_GRC_WIN);
 | 
			
		||||
		if (rc)
 | 
			
		||||
			return rc;
 | 
			
		||||
| 
						 | 
				
			
			@ -967,7 +967,7 @@ int bnxt_ptp_init(struct bnxt *bp, bool phc_cfg)
 | 
			
		|||
		rc = err;
 | 
			
		||||
		goto out;
 | 
			
		||||
	}
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5) {
 | 
			
		||||
	if (BNXT_CHIP_P5(bp)) {
 | 
			
		||||
		spin_lock_bh(&ptp->ptp_lock);
 | 
			
		||||
		bnxt_refclk_read(bp, NULL, &ptp->current_time);
 | 
			
		||||
		WRITE_ONCE(ptp->old_time, ptp->current_time);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -536,7 +536,7 @@ static int bnxt_hwrm_func_vf_resc_cfg(struct bnxt *bp, int num_vfs, bool reset)
 | 
			
		|||
	if (rc)
 | 
			
		||||
		return rc;
 | 
			
		||||
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5) {
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS) {
 | 
			
		||||
		vf_msix = hw_resc->max_nqs - bnxt_nq_rings_in_use(bp);
 | 
			
		||||
		vf_ring_grps = 0;
 | 
			
		||||
	} else {
 | 
			
		||||
| 
						 | 
				
			
			@ -565,7 +565,7 @@ static int bnxt_hwrm_func_vf_resc_cfg(struct bnxt *bp, int num_vfs, bool reset)
 | 
			
		|||
		req->min_l2_ctxs = cpu_to_le16(min);
 | 
			
		||||
		req->min_vnics = cpu_to_le16(min);
 | 
			
		||||
		req->min_stat_ctx = cpu_to_le16(min);
 | 
			
		||||
		if (!(bp->flags & BNXT_FLAG_CHIP_P5))
 | 
			
		||||
		if (!(bp->flags & BNXT_FLAG_CHIP_P5_PLUS))
 | 
			
		||||
			req->min_hw_ring_grps = cpu_to_le16(min);
 | 
			
		||||
	} else {
 | 
			
		||||
		vf_cp_rings /= num_vfs;
 | 
			
		||||
| 
						 | 
				
			
			@ -602,7 +602,7 @@ static int bnxt_hwrm_func_vf_resc_cfg(struct bnxt *bp, int num_vfs, bool reset)
 | 
			
		|||
	req->max_stat_ctx = cpu_to_le16(vf_stat_ctx);
 | 
			
		||||
	req->max_hw_ring_grps = cpu_to_le16(vf_ring_grps);
 | 
			
		||||
	req->max_rsscos_ctx = cpu_to_le16(vf_rss);
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5)
 | 
			
		||||
	if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS)
 | 
			
		||||
		req->max_msix = cpu_to_le16(vf_msix / num_vfs);
 | 
			
		||||
 | 
			
		||||
	hwrm_req_hold(bp, req);
 | 
			
		||||
| 
						 | 
				
			
			@ -630,7 +630,7 @@ static int bnxt_hwrm_func_vf_resc_cfg(struct bnxt *bp, int num_vfs, bool reset)
 | 
			
		|||
			le16_to_cpu(req->min_rsscos_ctx) * n;
 | 
			
		||||
		hw_resc->max_stat_ctxs -= le16_to_cpu(req->min_stat_ctx) * n;
 | 
			
		||||
		hw_resc->max_vnics -= le16_to_cpu(req->min_vnics) * n;
 | 
			
		||||
		if (bp->flags & BNXT_FLAG_CHIP_P5)
 | 
			
		||||
		if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS)
 | 
			
		||||
			hw_resc->max_nqs -= vf_msix;
 | 
			
		||||
 | 
			
		||||
		rc = pf->active_vfs;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -42,7 +42,7 @@ static void bnxt_fill_msix_vecs(struct bnxt *bp, struct bnxt_msix_entry *ent)
 | 
			
		|||
	for (i = 0; i < num_msix; i++) {
 | 
			
		||||
		ent[i].vector = bp->irq_tbl[idx + i].vector;
 | 
			
		||||
		ent[i].ring_idx = idx + i;
 | 
			
		||||
		if (bp->flags & BNXT_FLAG_CHIP_P5) {
 | 
			
		||||
		if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS) {
 | 
			
		||||
			ent[i].db_offset = DB_PF_OFFSET_P5;
 | 
			
		||||
			if (BNXT_VF(bp))
 | 
			
		||||
				ent[i].db_offset = DB_VF_OFFSET_P5;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue