cm_release was incorrectly freeing a client port
assuming it was the server listening port. Move
the listening port cleanup to remove_conn_listner
and only cleanup client ports in cm_release.

Error Messages indicating problem:

  CM_REQ retry 1 [lid, port, qpn]: 9 ff9a 340085 -> 9 6fa 34004e Time(ms) 1999 
> 1600
  DUPLICATE: op REQ st CM_CONNECTED [lid, port, qpn]: 9 6fa 0x0 <- 0x9 ff9a 
0x340085

Signed-off-by: Arlin Davis <[email protected]>
---
 dapl/openib_ucm/cm.c |    5 +----
 1 files changed, 1 insertions(+), 4 deletions(-)

diff --git a/dapl/openib_ucm/cm.c b/dapl/openib_ucm/cm.c
index 806602f..b874c8b 100644
--- a/dapl/openib_ucm/cm.c
+++ b/dapl/openib_ucm/cm.c
@@ -657,10 +657,6 @@ void dapls_cm_release(dp_ib_cm_handle_t cm)
        if (!cm->sp && cm->msg.sport)
                ucm_free_port(&cm->hca->ib_trans, ntohs(cm->msg.sport));
 
-       /* server, release local conn id port */
-       if (cm->sp && cm->msg.dport)
-               ucm_free_port(&cm->hca->ib_trans, ntohs(cm->msg.dport));
-
        /* clean up any UD address handles */
        if (cm->ah) {
                ibv_destroy_ah(cm->ah);
@@ -1753,6 +1749,7 @@ dapls_ib_remove_conn_listener(IN DAPL_IA *ia, IN DAPL_SP 
*sp)
 
                sp->cm_srvc_handle = NULL;
                dapli_dequeue_listen(cm);  
+               ucm_free_port(&cm->hca->ib_trans, ntohs(cm->msg.sport));
                dapls_cm_release(cm);  /* last ref, dealloc */
        }
        return DAT_SUCCESS;
-- 
1.5.2.5

_______________________________________________
ofw mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ofw

Reply via email to