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 <[EMAIL PROTECTED]>
---
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.


_______________________________________________
openib-general mailing list
openib-general@openib.org
http://openib.org/mailman/listinfo/openib-general

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

Reply via email to