Re: [PATCH 1/2] RDMA/uverbs: Don't set rcq if qp_type is IB_QPT_XRC_INI
From: Jason Gunthorpe <jgg@nvidia.com>
Date: 2021-01-15 19:24:37
On Thu, Jan 14, 2021 at 04:58:30PM +0800, Xiao Yang wrote:
On 2021/1/13 4:09, Jason Gunthorpe wrote:quoted
On Wed, Dec 16, 2020 at 03:17:54PM +0800, Xiao Yang wrote:quoted
INI QP doesn't require receive CQ. Signed-off-by: Xiao Yang<redacted> drivers/infiniband/core/uverbs_cmd.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)diff --git a/drivers/infiniband/core/uverbs_cmd.c b/drivers/infiniband/core/uverbs_cmd.c index 418d133a8fb0..d8bc8ea3ad1e 100644 +++ b/drivers/infiniband/core/uverbs_cmd.c@@ -1345,7 +1345,7 @@ static int create_qp(struct uverbs_attr_bundle *attrs, if (has_sq) scq = uobj_get_obj_read(cq, UVERBS_OBJECT_CQ, cmd->send_cq_handle, attrs); - if (!ind_tbl) + if (!ind_tbl&& cmd->qp_type != IB_QPT_XRC_INI) rcq = rcq ?: scq;Hmm, this does make it consistent with the UVERBS_METHOD_QP_CREATE flow which does set attr.recv_cq to NULL if the user didn't specify one. However this has been like this since the beginning - what are you doing that this detail matters?Hi Jason, Thanks for your comment. 1) I didn't get any issue for now. 2) I think it is not meaningful to set rcq for XRC INITIATOR QP, current code has ignores rcq as below: static int create_qp(struct uverbs_attr_bundle *attrs, struct ib_uverbs_ex_create_qp *cmd) ... if (cmd->qp_type == IB_QPT_XRC_INI) { cmd->max_recv_wr = 0; cmd->max_recv_sge = 0; ... By the way, I have a question: Why do we need two kinds of uverbs API?(a: read & write, b: ioctl)
The write APIs can't be modified due to how they were designed. Whenever someone needs to change something they have to move things to ioctl Jason