RDMA/uverbs: Don't set rcq for a QP if qp_type is IB_QPT_XRC_INI
authorXiao Yang <yangx.jy@cn.fujitsu.com>
Wed, 16 Dec 2020 07:17:54 +0000 (15:17 +0800)
committerJason Gunthorpe <jgg@nvidia.com>
Thu, 21 Jan 2021 14:26:15 +0000 (10:26 -0400)
An INI QP doesn't require receive CQ, the creation flow sets the recv counts
to zero:

if (cmd->qp_type == IB_QPT_XRC_INI) {
cmd->max_recv_wr = 0;
cmd->max_recv_sge = 0;

The new IOCTL path also does not set the rcq, so make things the same.

Link: https://lore.kernel.org/r/20201216071755.149449-1-yangx.jy@cn.fujitsu.com
Signed-off-by: Xiao Yang <yangx.jy@cn.fujitsu.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
drivers/infiniband/core/uverbs_cmd.c

index 98a5d36813ff78608a67b5041f1be1033accdf6c..f5b8be3bedde949ae9f949f384f50f4a76d8c6d2 100644 (file)
@@ -1382,7 +1382,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;
                pd = uobj_get_obj_read(pd, UVERBS_OBJECT_PD, cmd->pd_handle,
                                       attrs);