[openib-general] CMA: compliancy issue?
Or Gerlitz
ogerlitz at voltaire.com
Mon May 8 06:20:36 PDT 2006
Michael S. Tsirkin wrote:
> Quoting r. Or Gerlitz <ogerlitz at voltaire.com>:
>> The design of the CMA say that if the ULP wants the CMA to do the QP
>> states transitions it should call rdma_create_qp and later the CMA will
>> not deliver up event of REP but instead modify the QP state to RTR, RTS
>> and send an RTU. And vise versa, if the ULP want to get a callback on
>> REP it should ***not*** call rdma_create_qp and rather do the state
>> changes by itself.
>
> I think you are mistaken. Here's code from cma.c
>
> case IB_CM_REP_RECEIVED:
> if (id_priv->id.qp) {
> status = cma_rep_recv(id_priv);
> event = status ? RDMA_CM_EVENT_CONNECT_ERROR :
> RDMA_CM_EVENT_ESTABLISHED;
> } else
> event = RDMA_CM_EVENT_CONNECT_RESPONSE;
>
> So CMA passes the REP to the ULP as inside RDMA_CM_EVENT_ESTABLISHED event.
no no, see the code or my parsing of it for you below.
If the ULP has created a QP via the CMA then the CMA will send RTU and
deliver up ESTABLISHED event, else the CMA will deliver up
CONNECT_RESPONSE event and only later when the ULP calls rdma_accept the
CMA will send the RTU.
Or.
More information about the general
mailing list