From: Abhijit Gangurde <abhijit.gangurde@amd.com>
To: Leon Romanovsky <leon@kernel.org>
Cc: jgg@ziepe.ca, brett.creeley@amd.com, andrew+netdev@lunn.ch,
davem@davemloft.net, edumazet@google.com, kuba@kernel.org,
pabeni@redhat.com, allen.hubbe@amd.com, nikhil.agarwal@amd.com,
linux-rdma@vger.kernel.org, netdev@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 3/3] RDMA/ionic: Support QP transport mode selection in create and modify
Date: Thu, 21 May 2026 16:29:06 +0530 [thread overview]
Message-ID: <4c3aafd7-128b-a32d-d1b7-53372d530c24@amd.com> (raw)
In-Reply-To: <20260511125028.GJ15586@unreal>
On 5/11/26 18:20, Leon Romanovsky wrote:
> On Thu, Apr 30, 2026 at 06:09:31PM +0530, Abhijit Gangurde wrote:
>> Allow userspace to specify the QP transport mode and number of
>> reorder completion queue paths during QP creation and modification.
>>
>> Extend ionic_qp_req with transport_mode, num_rcq_paths, and
>> ionic_flags fields. The transport mode selects the firmware QP type,
>> ionic_flags are forwarded in the upper bits of priv_flags during
>> QP creation, and num_rcq_paths is passed to firmware during QP
>> modify.
>>
>> Co-developed-by: Allen Hubbe <allen.hubbe@amd.com>
>> Signed-off-by: Allen Hubbe <allen.hubbe@amd.com>
>> Signed-off-by: Abhijit Gangurde <abhijit.gangurde@amd.com>
>> ---
>> .../infiniband/hw/ionic/ionic_controlpath.c | 16 +++++++++++-----
>> drivers/infiniband/hw/ionic/ionic_fw.h | 18 +++++++++++++++---
>> drivers/infiniband/hw/ionic/ionic_ibdev.h | 1 +
>> include/uapi/rdma/ionic-abi.h | 5 ++++-
>> 4 files changed, 31 insertions(+), 9 deletions(-)
> <...>
>
>> +enum ionic_qp_transport_mode {
>> + IONIC_QPT_TRANSPORT_ROCE_V2 = BIT(0),
>> + IONIC_QPT_TRANSPORT_MRC = BIT(1),
>> +};
>> +
>> /* admin queue qp type */
>> enum ionic_qp_type {
>> IONIC_QPT_RC,
>> @@ -228,16 +235,21 @@ enum ionic_qp_type {
>> IONIC_QPT_XRC_INI,
>> IONIC_QPT_XRC_TGT,
>> IONIC_QPT_XRC_SRQ,
>> + IONIC_QPT_MRC,
>> };
>>
>> -static inline int to_ionic_qp_type(enum ib_qp_type type)
>> +static inline int to_ionic_qp_type(enum ib_qp_type type,
>> + enum ionic_qp_transport_mode tm)
>> {
>> switch (type) {
>> case IB_QPT_GSI:
>> case IB_QPT_UD:
>> return IONIC_QPT_UD;
>> case IB_QPT_RC:
>> - return IONIC_QPT_RC;
>> + if (tm == IONIC_QPT_TRANSPORT_MRC)
>> + return IONIC_QPT_MRC;
>> + else
>> + return IONIC_QPT_RC;
> We have historically treated vendor-specific QP types as special cases and
> routed them through IB_QPT_DRIVER.
>
> IB_QPT_RC represents a standard RC QP and is expected to follow the
> specification.
>
> Thanks
Thank you for the feedback.
I agree that IB_QPT_RC should represent a standard RC QP and follow the
specification. The reorder completion queue in our firmware is
essentially an extension of the RC transport -- it follows the same
state machine and connection semantics as RC.
Instead of distinguishing it as a separate QP type at the IB level, I
can rework this so that the QP is created as a regular IB_QPT_RC and the
use of a reorder completion queue with the given QP is conveyed to the
firmware as a flag in the create QP command. This way, the IB core
continues to treat it as a standard RC QP, and all the existing state
machine validation and DMAC resolution in the core path work as expected
without any special casing.
Thanks
next prev parent reply other threads:[~2026-05-21 10:59 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-30 12:39 [PATCH 0/3] Add Reorder Completion Queue (RCQ) support Abhijit Gangurde
2026-04-30 12:39 ` [PATCH 1/3] net: ionic: Fetch default QP transport mode and RCQ capabilities from firmware Abhijit Gangurde
2026-04-30 12:39 ` [PATCH 2/3] RDMA/ionic: Expose QP transport mode and RCQ sign bit to userspace Abhijit Gangurde
2026-04-30 12:39 ` [PATCH 3/3] RDMA/ionic: Support QP transport mode selection in create and modify Abhijit Gangurde
2026-05-11 12:50 ` Leon Romanovsky
2026-05-21 10:59 ` Abhijit Gangurde [this message]
2026-05-23 19:16 ` Jason Gunthorpe
2026-06-10 15:25 ` Abhijit Gangurde
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=4c3aafd7-128b-a32d-d1b7-53372d530c24@amd.com \
--to=abhijit.gangurde@amd.com \
--cc=allen.hubbe@amd.com \
--cc=andrew+netdev@lunn.ch \
--cc=brett.creeley@amd.com \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=jgg@ziepe.ca \
--cc=kuba@kernel.org \
--cc=leon@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-rdma@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=nikhil.agarwal@amd.com \
--cc=pabeni@redhat.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®