git: 0d635085b8e7 - main - cxgbe: Enable RDMA WRITE_CMPL work requests if the firmware supports them

From: John Baldwin <jhb_at_FreeBSD.org>
Date: Tue, 15 Sep 2026 14:47:45 UTC
The branch main has been updated by jhb:

URL: https://cgit.FreeBSD.org/src/commit/?id=0d635085b8e7d70beaa7a0fe3a1c865c26da2d2f

commit 0d635085b8e7d70beaa7a0fe3a1c865c26da2d2f
Author:     John Baldwin <jhb@FreeBSD.org>
AuthorDate: 2026-09-14 15:37:47 +0000
Commit:     John Baldwin <jhb@FreeBSD.org>
CommitDate: 2026-09-15 14:22:39 +0000

    cxgbe: Enable RDMA WRITE_CMPL work requests if the firmware supports them
    
    This work request permits combining RDMA WRITE and SEND_INV commands
    into a single work request.
    
    Sponsored by:   Chelsio Communications
---
 sys/dev/cxgbe/common/common.h | 2 ++
 sys/dev/cxgbe/t4_main.c       | 5 +++++
 2 files changed, 7 insertions(+)

diff --git a/sys/dev/cxgbe/common/common.h b/sys/dev/cxgbe/common/common.h
index 4833678ceff1..9e92f5448db7 100644
--- a/sys/dev/cxgbe/common/common.h
+++ b/sys/dev/cxgbe/common/common.h
@@ -471,6 +471,8 @@ struct adapter_params {
 	bool dev_512sgl_mr;		/* FW support for 512 SGL per FR MR */
 	bool viid_smt_extn_support;	/* FW returns vin, vfvld & smt index? */
 	bool write_w_imm_support;	/* FW supports WRITE_WITH_IMMEDIATE */
+	bool write_cmpl_support;	/* FW supports WRITE_CMPL WR */
+
 	unsigned int max_pkts_per_eth_tx_pkts_wr;
 	uint8_t nsched_cls;		/* # of usable sched classes per port */
 
diff --git a/sys/dev/cxgbe/t4_main.c b/sys/dev/cxgbe/t4_main.c
index fb3be3d1e71d..4aca284415df 100644
--- a/sys/dev/cxgbe/t4_main.c
+++ b/sys/dev/cxgbe/t4_main.c
@@ -5978,6 +5978,11 @@ get_params__post_init(struct adapter *sc)
 		rc = -t4_query_params(sc, sc->mbox, sc->pf, 0, 1, param, val);
 		if (rc == 0 && val[0] != 0)
 			sc->params.write_w_imm_support = true;
+
+		param[0] = FW_PARAM_DEV(RI_WRITE_CMPL_WR);
+		rc = -t4_query_params(sc, sc->mbox, sc->pf, 0, 1, param, val);
+		if (rc == 0 && val[0] != 0)
+			sc->params.write_cmpl_support = true;
 	}
 	if (sc->iscsicaps) {
 		param[0] = FW_PARAM_PFVF(ISCSI_START);