From: Konstantin Taranov <kotaranov@linux.microsoft.com>
To: kotaranov@microsoft.com, snsanghvi@microsoft.com,
longli@microsoft.com, jgg@ziepe.ca, leon@kernel.org
Cc: linux-rdma@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [PATCH rdma-next v2 05/10] RDMA/mana_ib: Post receive WRs on kernel RC QPs
Date: Fri, 2 Oct 2026 23:40:32 -0700 [thread overview]
Message-ID: <20261003064037.2092669-6-kotaranov@linux.microsoft.com> (raw)
In-Reply-To: <20261003064037.2092669-1-kotaranov@linux.microsoft.com>
From: Konstantin Taranov <kotaranov@microsoft.com>
Implement receive request posting for RC QPs. When posting a batch of
WRs, ring the doorbell periodically to prevent the u8 counter from
overflowing.
Signed-off-by: Konstantin Taranov <kotaranov@microsoft.com>
---
drivers/infiniband/hw/mana/wr.c | 37 +++++++++++++++++++++++++++++++++
1 file changed, 37 insertions(+)
diff --git a/drivers/infiniband/hw/mana/wr.c b/drivers/infiniband/hw/mana/wr.c
index 250d673f58f2..5d42af91fce4 100644
--- a/drivers/infiniband/hw/mana/wr.c
+++ b/drivers/infiniband/hw/mana/wr.c
@@ -70,6 +70,41 @@ static int mana_ib_post_recv_ud(struct mana_ib_qp *qp, const struct ib_recv_wr *
return err;
}
+static int mana_ib_post_recv_rc(struct mana_ib_qp *qp, const struct ib_recv_wr *wr,
+ const struct ib_recv_wr **bad_wr)
+{
+ struct mana_ib_dev *mdev = container_of(qp->ibqp.device, struct mana_ib_dev, ib_dev);
+ struct mana_ib_queue *ib_rq = mana_qp_get_rq(qp);
+ unsigned long flags;
+ u8 wqe_cnt = 0;
+ int err = 0;
+
+ spin_lock_irqsave(&qp->rq_lock, flags);
+
+ for (; wr; wr = wr->next) {
+ err = mana_ib_post_rq(qp, wr);
+ if (unlikely(err)) {
+ *bad_wr = wr;
+ break;
+ }
+ wqe_cnt++;
+ if (wqe_cnt == 0xFF) {
+ mana_gd_wq_ring_doorbell_ext(mdev_to_gc(mdev), ib_rq->kmem,
+ ib_rq->kmem->head * GDMA_WQE_BU_SIZE,
+ wqe_cnt, 0);
+ wqe_cnt = 0;
+ }
+ }
+
+ if (wqe_cnt)
+ mana_gd_wq_ring_doorbell_ext(mdev_to_gc(mdev), ib_rq->kmem,
+ ib_rq->kmem->head * GDMA_WQE_BU_SIZE,
+ wqe_cnt, 0);
+
+ spin_unlock_irqrestore(&qp->rq_lock, flags);
+ return err;
+}
+
int mana_ib_post_recv(struct ib_qp *ibqp, const struct ib_recv_wr *wr,
const struct ib_recv_wr **bad_wr)
{
@@ -79,6 +114,8 @@ int mana_ib_post_recv(struct ib_qp *ibqp, const struct ib_recv_wr *wr,
case IB_QPT_UD:
case IB_QPT_GSI:
return mana_ib_post_recv_ud(qp, wr, bad_wr);
+ case IB_QPT_RC:
+ return mana_ib_post_recv_rc(qp, wr, bad_wr);
default:
/* Unsupported QP type */
*bad_wr = wr;
--
2.43.0
next prev parent reply other threads:[~2026-10-03 6:41 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-03 6:40 [PATCH rdma-next v2 00/10] RDMA/mana_ib: Add kernel RC and fast registration support Konstantin Taranov
2026-10-03 6:40 ` [PATCH rdma-next v2 01/10] RDMA/mana_ib: Allocate and map fast-registration MRs Konstantin Taranov
2026-10-03 6:40 ` [PATCH rdma-next v2 02/10] RDMA/mana: Create and destroy kernel RC QPs Konstantin Taranov
2026-10-03 6:40 ` [PATCH rdma-next v2 03/10] net/mana: Extend GDMA encoding for new RDMA WQEs Konstantin Taranov
2026-10-03 6:40 ` [PATCH rdma-next v2 04/10] RDMA/mana_ib: Maintain kernel RC QP state Konstantin Taranov
2026-10-03 6:40 ` Konstantin Taranov [this message]
2026-10-03 6:40 ` [PATCH rdma-next v2 06/10] RDMA/mana_ib: Post send and memory-management WRs on RC QPs Konstantin Taranov
2026-10-03 6:40 ` [PATCH rdma-next v2 07/10] RDMA/mana_ib: Poll RC completions using PSN and FSN progress Konstantin Taranov
2026-10-03 6:40 ` [PATCH rdma-next v2 08/10] RDMA/mana_ib: Flush and notify CQs when kernel QPs enter ERR Konstantin Taranov
2026-10-03 6:40 ` [PATCH rdma-next v2 09/10] RDMA/mana_ib: Handle error CQEs for RC QPs Konstantin Taranov
2026-10-03 6:40 ` [PATCH rdma-next v2 10/10] RDMA/mana_ib: Drain kernel receive and send queues Konstantin Taranov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20261003064037.2092669-6-kotaranov@linux.microsoft.com \
--to=kotaranov@linux.microsoft.com \
--cc=jgg@ziepe.ca \
--cc=kotaranov@microsoft.com \
--cc=leon@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-rdma@vger.kernel.org \
--cc=longli@microsoft.com \
--cc=snsanghvi@microsoft.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®