From 36b161379c374d6944181be55e08c065b00717d4 Mon Sep 17 00:00:00 2001 From: Sean Hefty Date: Tue, 2 Feb 2010 16:38:05 -0800 Subject: [PATCH] Refresh of cma-debug --- trunk/ulp/librdmacm/src/cma.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/trunk/ulp/librdmacm/src/cma.cpp b/trunk/ulp/librdmacm/src/cma.cpp index a8875ccf..8305bd61 100644 --- a/trunk/ulp/librdmacm/src/cma.cpp +++ b/trunk/ulp/librdmacm/src/cma.cpp @@ -72,6 +72,7 @@ struct cma_id_private volatile LONG refcnt; struct rdma_cm_id **req_list; int active; +int disc; }; struct cma_device @@ -274,7 +275,6 @@ int rdma_create_id(struct rdma_event_channel *channel, } *id = &id_priv->id; -printf("rdma_create_id %p\n", *id); return 0; err2: @@ -331,7 +331,6 @@ int rdma_destroy_id(struct rdma_cm_id *id) while (id_priv->refcnt) { Sleep(0); } -printf("rdma_destroy_id %p\n", id); delete id_priv; ucma_release(); return 0; @@ -844,11 +843,17 @@ int rdma_disconnect(struct rdma_cm_id *id) HRESULT hr; id_priv = CONTAINING_RECORD(id, struct cma_id_private, id); + EnterCriticalSection(&lock); if (id_priv->state == cma_connected) { id_priv->state = cma_active_disconnect; + } else if (id_priv->state == cma_passive_disconnect) { + id_priv->state = cma_disconnected; } else { + printf("rdma_disconnect (active %d disc %d) state %d\n", id_priv->active, id_priv->disc, id_priv->state); id_priv->state = cma_disconnected; } + LeaveCriticalSection(&lock); +id_priv->disc = 1; hr = id->ep.connect->Disconnect(NULL); if (FAILED(hr)) { return hr; -- 2.46.0