[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