]> git.openfabrics.org - ~shefty/rdma-win.git/commitdiff
debug cma
authorSean Hefty <sean.hefty@intel.com>
Tue, 2 Feb 2010 23:46:32 +0000 (15:46 -0800)
committerSean Hefty <sean.hefty@intel.com>
Wed, 3 Feb 2010 00:39:15 +0000 (16:39 -0800)
trunk/ulp/librdmacm/src/cma.cpp

index cde309b881321206bbbb73204bd544d8d9989991..0fdebabbc540b5cb46c262387ff843c295a4a168 100644 (file)
@@ -71,6 +71,7 @@ struct cma_id_private
        int                                                     index;\r
        volatile LONG                           refcnt;\r
        struct rdma_cm_id                       **req_list;\r
+int active;\r
 };\r
 \r
 struct cma_device\r
@@ -672,6 +673,7 @@ int rdma_connect(struct rdma_cm_id *id, struct rdma_conn_param *conn_param)
                RtlCopyMemory(attr.Data, conn_param->private_data, attr.DataLength);\r
        }\r
 \r
+id_priv->active = 1;\r
        id_priv->state = cma_active_connect;\r
        id_priv->refcnt++;\r
        id->comp_entry.Busy = 1;\r
@@ -840,11 +842,13 @@ int rdma_disconnect(struct rdma_cm_id *id)
        HRESULT hr;\r
 \r
        id_priv = CONTAINING_RECORD(id, struct cma_id_private, id);\r
+       EnterCriticalSection(&lock);\r
        if (id_priv->state == cma_connected) {\r
                id_priv->state = cma_active_disconnect;\r
-       } else {\r
+       } else if (id_priv->state == cma_passive_disconnect) {\r
                id_priv->state = cma_disconnected;\r
        }\r
+       LeaveCriticalSection(&lock);\r
        hr = id->ep.connect->Disconnect(NULL);\r
        if (FAILED(hr)) {\r
                return hr;\r