From nobody Tue Sep 15 14:47:43 2026 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4hklHN2XB0z6sKc0 for ; Tue, 15 Sep 2026 14:47:44 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "YR2" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4hklHN0sh6z4Nmv for ; Tue, 15 Sep 2026 14:47:44 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1789483664; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=3e/4NgzbPvHnyyKaHIUP7B675LwO1CUKmS6mg4J17wA=; b=SRVIJ4qfB7Tb9dIzXFdhwtfcKujr5hC+OLdbLmSXBt2eOtiCV4X1Xc4U9d5QOtbWK/WwYx 793Z95lOAsPqRaRTZWQXavO3OlHOqsR2EQzXUVGn8ej29yNPZ87CgRglrSdM1WYaP2HrRp /fT5tpeyd5k3zL0JUsjuymaccDniWXBFBY1SNxVosiGghIY1K9PMtEe9X9O9s+nB2AOcyg a+qAWjtkvHDbkEhfVPRsHkxFus1pFnQa6t81+katdsbCBQDBFp6kvCmeHDMq0WnUd+K38O EPKYntUyh3hz6PfDItvAnt8eko47SUgzXbwvPvUGyui0wkwIN886ql+7T1YU5Q== ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1789483664; b=uXQU2nlmKsOcDy69l/QvcBDiLBmnNSRkRdqN3tzhpxrn/8jozI1HmwN08DTQwixbOzT7WC hVv56lcwZapofQnjfRI25sf5roN3VYED/RbgbsJUmKV5+60DGKSY6FGTHrXczEmX9ye1fv YRMD+MLSmHyCiEDB+DLfPPiV3vgr6XdAYWoCBDinUgDRw/sgf80umSjYngVHbHyYIZ0tZx RGTLcGaMFniCh6TS22VuTUuYzrt7ycW/hXZFUkONIheBXiqLbExBWqsEIAbsGlDQvvTdFt xe/Mubj4N1OcgO3iTecdXp10onMg7VqdyDAgzNDWSnj5WqYRX1BoRO3+8HNG/w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1789483664; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=3e/4NgzbPvHnyyKaHIUP7B675LwO1CUKmS6mg4J17wA=; b=yEJunoU3YM220DFU7UMQ/6TkjHsaQscvOsQM+w4p9XBDPoj6fX8KvJa1FDQUzbXaMy2BMq unXVZo55dbgZK09F8Rn7oTMD0QGNxISLgAJLOlChX69GtqfIwIn3uk1ygBSyznp1rGAE9R 5lEWjkXLsTsM70W+X9+nYjjxSyEgCdCpwwBwn3Db6wWYdLsicWx3Qj8F6sSQhuF9Qu6cin PIk920daOZR4nLrTClhqrppolf8GS96aWcN5tpfpIjxyQoqufAP/RyW1A73raz7wOIvYMo N7sfGr454urNfvZi+d+6I/QuEPz26Mzewh+OaVYentBXHIXTjqDJ8Y13MjPRFw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hklHM71rzz14dm for ; Tue, 15 Sep 2026 14:47:43 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 36076 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 15 Sep 2026 14:47:43 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Cc: Potnuri Bharat Teja From: John Baldwin Subject: git: 054db357a1a5 - main - libcxgb4: Support for RDMA SEND_WITH_INV requests List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 054db357a1a5282f205cd0d1827fb4cd19833d55 Auto-Submitted: auto-generated Date: Tue, 15 Sep 2026 14:47:43 +0000 Message-Id: <6aa95a8f.36076.4fe96c46@gitrepo.freebsd.org> The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=054db357a1a5282f205cd0d1827fb4cd19833d55 commit 054db357a1a5282f205cd0d1827fb4cd19833d55 Author: Potnuri Bharat Teja AuthorDate: 2018-11-16 10:17:52 +0000 Commit: John Baldwin CommitDate: 2026-09-15 14:22:39 +0000 libcxgb4: Support for RDMA SEND_WITH_INV requests Sponsored by: Chelsio Communications --- contrib/ofed/libcxgb4/cq.c | 25 ++++++++++++++++++++++--- contrib/ofed/libcxgb4/qp.c | 35 +++++++++++++++++++++++++++-------- contrib/ofed/libibverbs/verbs.h | 5 ++++- 3 files changed, 53 insertions(+), 12 deletions(-) diff --git a/contrib/ofed/libcxgb4/cq.c b/contrib/ofed/libcxgb4/cq.c index 4841535f8878..a5ce335d7e60 100644 --- a/contrib/ofed/libcxgb4/cq.c +++ b/contrib/ofed/libcxgb4/cq.c @@ -616,12 +616,28 @@ static int c4iw_poll_cq_one(struct c4iw_cq *chp, struct ibv_wc *wc) wc->byte_len = CQE_LEN(&cqe); else wc->byte_len = 0; - if (CQE_OPCODE(&cqe) == FW_RI_WRITE_IMMEDIATE) { + + switch (CQE_OPCODE(&cqe)) { + case FW_RI_SEND: + wc->opcode = IBV_WC_RECV; + break; + case FW_RI_SEND_WITH_INV: + case FW_RI_SEND_WITH_SE_INV: + wc->opcode = IBV_WC_RECV; + wc->wc_flags |= IBV_WC_WITH_INV; + wc->invalidated_rkey = CQE_WRID_STAG(&cqe); + break; + case FW_RI_WRITE_IMMEDIATE: wc->opcode = IBV_WC_RECV_RDMA_WITH_IMM; wc->imm_data = CQE_IMM_DATA(&cqe); wc->wc_flags |= IBV_WC_WITH_IMM; - } else { - wc->opcode = IBV_WC_RECV; + break; + default: + PDBG("Unexpected opcode %d " + "in the CQE received for QPID=0x%0x\n", + CQE_OPCODE(&cqe), CQE_QPID(&cqe)); + ret = -EINVAL; + goto out; } } else { switch (CQE_OPCODE(&cqe)) { @@ -635,8 +651,11 @@ static int c4iw_poll_cq_one(struct c4iw_cq *chp, struct ibv_wc *wc) break; case FW_RI_SEND: case FW_RI_SEND_WITH_SE: + wc->opcode = IBV_WC_SEND; + break; case FW_RI_SEND_WITH_INV: case FW_RI_SEND_WITH_SE_INV: + wc->wc_flags |= IBV_WC_WITH_INV; wc->opcode = IBV_WC_SEND; break; case FW_RI_BIND_MW: diff --git a/contrib/ofed/libcxgb4/qp.c b/contrib/ofed/libcxgb4/qp.c index 6d899c07ddae..36531af67ae8 100644 --- a/contrib/ofed/libcxgb4/qp.c +++ b/contrib/ofed/libcxgb4/qp.c @@ -164,13 +164,28 @@ static int build_rdma_send(struct t4_sq *sq, union t4_wr *wqe, if (wr->num_sge > T4_MAX_SEND_SGE) return -EINVAL; - if (wr->send_flags & IBV_SEND_SOLICITED) - wqe->send.sendop_pkd = htobe32( - V_FW_RI_SEND_WR_SENDOP(FW_RI_SEND_WITH_SE)); - else - wqe->send.sendop_pkd = htobe32( - V_FW_RI_SEND_WR_SENDOP(FW_RI_SEND)); - wqe->send.stag_inv = 0; + switch (wr->opcode) { + case IBV_WR_SEND: + if (wr->send_flags & IBV_SEND_SOLICITED) + wqe->send.sendop_pkd = htobe32( + V_FW_RI_SEND_WR_SENDOP(FW_RI_SEND_WITH_SE)); + else + wqe->send.sendop_pkd = htobe32( + V_FW_RI_SEND_WR_SENDOP(FW_RI_SEND)); + wqe->send.stag_inv = 0; + break; + case IBV_WR_SEND_WITH_INV: + if (wr->send_flags & IBV_SEND_SOLICITED) + wqe->send.sendop_pkd = htobe32( + V_FW_RI_SEND_WR_SENDOP(FW_RI_SEND_WITH_SE_INV)); + else + wqe->send.sendop_pkd = htobe32( + V_FW_RI_SEND_WR_SENDOP(FW_RI_SEND_WITH_INV)); + wqe->send.stag_inv = htobe32(wr->invalidate_rkey); + break; + default: + return -EINVAL; + } wqe->send.r3 = 0; wqe->send.r4 = 0; @@ -350,12 +365,16 @@ int c4iw_post_send(struct ibv_qp *ibqp, struct ibv_send_wr *wr, fw_flags |= FW_RI_COMPLETION_FLAG; swsqe = &qhp->wq.sq.sw_sq[qhp->wq.sq.pidx]; switch (wr->opcode) { + case IBV_WR_SEND_WITH_INV: case IBV_WR_SEND: INC_STAT(send); if (wr->send_flags & IBV_SEND_FENCE) fw_flags |= FW_RI_READ_FENCE_FLAG; fw_opcode = FW_RI_SEND_WR; - swsqe->opcode = FW_RI_SEND; + if (wr->opcode == IBV_WR_SEND) + swsqe->opcode = FW_RI_SEND; + else + swsqe->opcode = FW_RI_SEND_WITH_INV; err = build_rdma_send(&qhp->wq.sq, wqe, wr, &len16); break; case IBV_WR_RDMA_WRITE_WITH_IMM: diff --git a/contrib/ofed/libibverbs/verbs.h b/contrib/ofed/libibverbs/verbs.h index 63a9ddbb1538..a3eb1826a09a 100644 --- a/contrib/ofed/libibverbs/verbs.h +++ b/contrib/ofed/libibverbs/verbs.h @@ -947,7 +947,10 @@ struct ibv_send_wr { int num_sge; enum ibv_wr_opcode opcode; int send_flags; - __be32 imm_data; + union { + __be32 imm_data; + u32 invalidate_rkey; + }; union { struct { uint64_t remote_addr;