git: 7781529f31b6 - main - if_bnxt: Never ARM Tx CQ as they are not interrupt-driven

From: Sumit Saxena <ssaxena_at_FreeBSD.org>
Date: Fri, 09 Oct 2026 10:12:52 UTC
The branch main has been updated by ssaxena:

URL: https://cgit.FreeBSD.org/src/commit/?id=7781529f31b62a3071995b9f0446b8ded4ec8cf9

commit 7781529f31b62a3071995b9f0446b8ded4ec8cf9
Author:     Sumit Saxena <sumit.saxena@broadcom.com>
AuthorDate: 2026-07-31 16:04:34 +0000
Commit:     Sumit Saxena <ssaxena@FreeBSD.org>
CommitDate: 2026-10-09 08:24:44 +0000

    if_bnxt: Never ARM Tx CQ as they are not interrupt-driven
    
    Tx completion rings are not interrupt-driven, so there is no need to
    ring the doorbell with CQ_ARMALL and toggle bits set for them. Stop
    arming the Tx CQ doorbell on P5+, which makes tx_cp_rings[]->toggle
    dead, so drop the now-unnecessary toggle bookkeeping for it in
    process_nq() too.
    
    Reviewed by:    gallatin
    MFC after:      2 weeks
    Sponsored by:   Broadcom Inc.
    Differential Revision:  https://reviews.freebsd.org/D58616
---
 sys/dev/bnxt/bnxt_en/if_bnxt.c | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/sys/dev/bnxt/bnxt_en/if_bnxt.c b/sys/dev/bnxt/bnxt_en/if_bnxt.c
index e0e606189fdb..2d996d80a0f5 100644
--- a/sys/dev/bnxt/bnxt_en/if_bnxt.c
+++ b/sys/dev/bnxt/bnxt_en/if_bnxt.c
@@ -3758,7 +3758,7 @@ skip_def_cp_ring:
 			goto fail;
 
 		if (BNXT_CHIP_P5_PLUS(softc))
-			softc->db_ops.bnxt_db_tx_cq(&softc->tx_cp_rings[i], 1);
+			softc->db_ops.bnxt_db_tx_cq(&softc->tx_cp_rings[i], 0);
 
 		/* Allocate the TX ring */
 		rc = bnxt_hwrm_ring_alloc(softc,
@@ -4405,7 +4405,6 @@ process_nq(struct bnxt_softc *softc, uint16_t nqid)
 {
 	struct bnxt_cp_ring *cpr = &softc->nq_rings[nqid];
 	nq_cn_t *cmp = (nq_cn_t *) cpr->ring.vaddr;
-	struct bnxt_cp_ring *tx_cpr = &softc->tx_cp_rings[nqid];
 	struct bnxt_cp_ring *rx_cpr = &softc->rx_cp_rings[nqid];
 	bool v_bit = cpr->v_bit;
 	uint32_t cons = cpr->cons;
@@ -4423,7 +4422,6 @@ process_nq(struct bnxt_softc *softc, uint16_t nqid)
 		if (NQE_CN_TYPE(nq_type) != NQ_CN_TYPE_CQ_NOTIFICATION) {
 			 bnxt_process_async_msg(cpr, (tx_cmpl_t *)&cmp[cons]);
 		} else {
-			tx_cpr->toggle = NQE_CN_TOGGLE(cmp[cons].type);
 			rx_cpr->toggle = NQE_CN_TOGGLE(cmp[cons].type);
 			rx_cqe = true;
 		}