max_recv_wr must also be non-zero for QPs which are not
associated with an SRQ.
    
Signed-off-by: Jack Morgenstein <[EMAIL PROTECTED]>

---
Roland,
Without this patch, if the userspace caller specifies max_recv_wr = 0 for a 
non-srq
QP, the creation will be rejected in kernel space in file
infiniband/hw/mlx4/qp.c, procedure set_rq_size:

        } else {
                /* HW requires >= 1 RQ entry with >= 1 gather entry */
==> NOTE:       if (is_user && (!cap->max_recv_wr || !cap->max_recv_sge))
                        return -EINVAL;

You've set max_recv_sge size to 1, but not max_recv_wr.

Jack

diff --git a/src/verbs.c b/src/verbs.c
index 4e7beff..ec4c6a5 100644
--- a/src/verbs.c
+++ b/src/verbs.c
@@ -367,8 +367,12 @@ struct ibv_qp *mlx4_create_qp(struct ibv_pd *pd, struct 
ibv_qp_init_attr *attr)
 
        if (attr->srq)
                attr->cap.max_recv_wr = qp->rq.wqe_cnt = 0;
-       else if (attr->cap.max_recv_sge < 1)
-               attr->cap.max_recv_sge = 1;
+       else {
+               if (attr->cap.max_recv_sge < 1)
+                       attr->cap.max_recv_sge = 1;
+               if (attr->cap.max_recv_wr < 1)
+                       attr->cap.max_recv_wr = 1;
+       }
 
        if (mlx4_alloc_qp_buf(pd, &attr->cap, attr->qp_type, qp))
                goto err;
_______________________________________________
general mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

Reply via email to