]> git.openfabrics.org - ~shefty/rdma-win.git/commitdiff
Refresh of ibal-disc
authorSean Hefty <sean.hefty@intel.com>
Mon, 20 Sep 2010 22:03:10 +0000 (15:03 -0700)
committerSean Hefty <sean.hefty@intel.com>
Mon, 20 Sep 2010 22:03:10 +0000 (15:03 -0700)
trunk/ulp/dapl2/dapl/ibal/dapl_ibal_cm.c

index c26c3672a8385c742b50271f088a7432ee5c3dcb..da445e9ae612ef8cfbeb0d4f3da840f2a5bdce09 100644 (file)
@@ -203,7 +203,7 @@ static DAT_RETURN dapli_send_ib_cm_dreq(ib_cm_handle_t h_cm)
 
        cm_dreq.flags = IB_FLAGS_SYNC;
        cm_dreq.qp_type = IB_QPT_RELIABLE_CONN;
-       cm_dreq.h_qp = h_cm->h_qp;
+       cm_dreq.h_qp = h_cm.h_qp;
        cm_dreq.pfn_cm_drep_cb = dapli_ib_cm_drep_cb;
 
        return dapl_ib_status_convert(ib_cm_dreq(&cm_dreq));
@@ -214,7 +214,7 @@ static DAT_RETURN dapli_send_ib_cm_drep(ib_cm_handle_t h_cm)
     ib_cm_drep_t cm_drep;
 
     dapl_os_memzero(&cm_drep, sizeof(ib_cm_drep_t));
-       return dapl_ib_status_convert(ib_cm_drep(&cm_drep));
+       return dapl_ib_status_convert(ib_cm_drep(h_cm, &cm_drep));
 }
 
 /*
@@ -236,25 +236,25 @@ dapli_ib_cm_dreq_cb (
     {
         dapl_dbg_log (DAPL_DBG_TYPE_ERR, 
                       "--> %s: BAD_PTR EP %lx\n", __FUNCTION__, ep_ptr);
-        goto err;
+        goto send_drep;
     }
     if ( ep_ptr->header.magic != DAPL_MAGIC_EP  )
     {
         if ( ep_ptr->header.magic == DAPL_MAGIC_INVALID )
-            goto err;
+            goto send_drep;
 
         dapl_dbg_log (DAPL_DBG_TYPE_ERR,
                       "--> %s: EP %p BAD_EP_MAGIC %x != wanted %x\n",
                       __FUNCTION__, ep_ptr, ep_ptr->header.magic,
                       DAPL_MAGIC_EP );
-        goto err;
+        goto send_drep;
     }
     cm_ptr = dapl_get_cm_from_ep(ep_ptr);
     if (!cm_ptr)
     {
         dapl_dbg_log (DAPL_DBG_TYPE_ERR,
                       "--> %s: !CM_PTR on EP %p\n", __FUNCTION__, ep_ptr);
-        goto err;
+        goto send_drep;
     }
     dapl_os_assert(cm_ptr->ib_cm.h_qp == p_cm_dreq_rec->h_cm_dreq.h_qp);
 
@@ -267,11 +267,10 @@ dapli_ib_cm_dreq_cb (
     dapl_os_lock (&ep_ptr->header.lock);
     if ( ep_ptr->param.ep_state == DAT_EP_STATE_DISCONNECTED )
     {
-        dapl_os_unlock (&ep_ptr->header.lock);
         dapl_dbg_log (DAPL_DBG_TYPE_CM, 
                       "--> DiCDcb: EP %lx QP %lx already Disconnected\n",
                       ep_ptr, ep_ptr->qp_handle);
-        goto err;
+        goto unlock;
     }
 
     ep_ptr->param.ep_state = DAT_EP_STATE_DISCONNECT_PENDING;
@@ -300,7 +299,9 @@ dapli_ib_cm_dreq_cb (
     }
     return;
 
-err:
+unlock:
+       dapl_os_unlock (&ep_ptr->header.lock);
+send_drep:
     dapli_send_ib_cm_drep(p_cm_dreq_rec->h_cm_dreq);
 }