|
@@ -1438,7 +1438,7 @@ static int create_qp(struct ib_uverbs_file *file,
|
|
|
if (cmd->is_srq) {
|
|
|
srq = uobj_get_obj_read(srq, cmd->srq_handle,
|
|
|
file->ucontext);
|
|
|
- if (!srq || srq->srq_type != IB_SRQT_BASIC) {
|
|
|
+ if (!srq || srq->srq_type == IB_SRQT_XRC) {
|
|
|
ret = -EINVAL;
|
|
|
goto err_put;
|
|
|
}
|
|
@@ -3481,6 +3481,9 @@ static int __uverbs_create_xsrq(struct ib_uverbs_file *file,
|
|
|
if (IS_ERR(obj))
|
|
|
return PTR_ERR(obj);
|
|
|
|
|
|
+ if (cmd->srq_type == IB_SRQT_TM)
|
|
|
+ attr.ext.tag_matching.max_num_tags = cmd->max_num_tags;
|
|
|
+
|
|
|
if (cmd->srq_type == IB_SRQT_XRC) {
|
|
|
xrcd_uobj = uobj_get_read(uobj_get_type(xrcd), cmd->xrcd_handle,
|
|
|
file->ucontext);
|
|
@@ -3615,6 +3618,7 @@ ssize_t ib_uverbs_create_srq(struct ib_uverbs_file *file,
|
|
|
if (copy_from_user(&cmd, buf, sizeof cmd))
|
|
|
return -EFAULT;
|
|
|
|
|
|
+ memset(&xcmd, 0, sizeof(xcmd));
|
|
|
xcmd.response = cmd.response;
|
|
|
xcmd.user_handle = cmd.user_handle;
|
|
|
xcmd.srq_type = IB_SRQT_BASIC;
|