[openib-general] Re: [PATCH] RE: compliancy issue?

Or Gerlitz ogerlitz at voltaire.com
Wed May 10 00:48:25 PDT 2006


Michael S. Tsirkin wrote:
>>> Can you try this simple patch and see if it fixes your problem?  You will
>>> need to call rdma_accept() or rdma_reject() after receiving a CONNECT_RESPONSE
>>> event.  The conn_param to rdma_accept() should be NULL.
>>>
>>> Signed-off-by: Sean Hefty <sean.hefty at intel.com>
>>> ---
>>> Index: cma.c
>>> ===================================================================
>>> --- cma.c	(revision 6948)
>>> +++ cma.c	(working copy)
>>> @@ -778,7 +778,7 @@ static int cma_ib_handler(struct ib_cm_i
>>>  		status = cma_verify_rep(id_priv, ib_event->private_data);
>>>  		if (status)
>>>  			event = RDMA_CM_EVENT_CONNECT_ERROR;
>>> -		else if (id_priv->id.qp) {
>>> +		else if (id_priv->id.qp && id_priv->id.ps != RDMA_PS_SDP) {
>>>  			status = cma_rep_recv(id_priv);
>>>  			event = status ? RDMA_CM_EVENT_CONNECT_ERROR :
>>>  					 RDMA_CM_EVENT_ESTABLISHED;
>>>
>> Would not cma_rep_recv be required to modify the QP?
>> Anyway, I'll try.
> 
> Hmm, it seems that QP will get modified to RTS on RTU only.
> That's bad - I want to move it to RTS on REP, since receive completion
> might cross RTU and I want to be able to respond to each send immediately.

No, looking in the code shows that qp will be changed to rtr and then 
rts ***before*** sending the RTU since you will call rdma_accept which 
in turn will call cma_rep_recv

Or.





More information about the general mailing list