[ewg] rdma_accept and non-rdma QPs
Dries Kimpe
dries at kimpe.be
Thu Aug 21 15:28:03 PDT 2014
Hi,
I've been having some issues in using RDMA CM with QPs created and owned
by the applications, i.e. created with ibv_create_qp as opposed to
rdma_create_qp.
The man pages for both rdma_accept and rdma_connect hint that this is
possible.
In my application, whem I'm using rdma_create_qp, everything works.
If I change to using ibv_create_qp (but everything else the same:
qp_init_attr, PD, ... -- only change is rdma_create_qp -> ibv_create_qp)
the call to rdma_accept fails with 'invalid argument'.
[I do correctly specify the QP number in the accept parameters and
connect parameters in both cases. The documentation states that rdmacm
ignores qp_num in case rdma_create_qp was called]
Some more details:
- RC connection
- Ofed version doesn't seem to matter (tried up to 2.1).
- Using my own protection domain (not created by RDMA CM) but derived
from the same context to which the ID is bound.
- Using outside (i.e. not RDMA CM created) completion queue
Things I've verified/tried:
- verify context for RDMA cm id and QP created by ibv_create_qp is the
same.
- verify protection domains belong to the same context.
- transition QP to INIT on passive side before calling rdma_accept.
(I checked the rdma cm source code and noticed that rdma_create_qp
also does this)
- Checked the kernel code to see where an invaliad argument parameter
could be returned but nothing stood out.
- Verified sequence of calls on both active and passive side
as described in rdma_cm manpage.
I wasn't able to find any example code using rdma cm but not
rdma_create_qp.
It would be very helpful if somebody could list the differences or point
me to some code.
Thanks,
Dries
More information about the ewg
mailing list