[ofa-general] ***SPAM*** [PATCH v3] RDMA/nes: CM connection setup/teardown rework

Faisal Latif flatif at neteffect.com
Fri Jul 25 14:40:35 PDT 2008


Major rework of CM connection setup/teardown.  We had a number of issues 
with MPI applications not starting/terminating properly over time.  With 
these changes we were able to run longer on larger clusters.

* Removed memory allocation from nes_connect() and nes_cm_connect().
* Fixed mini_cm_dec_refcnt_listen() when destroying listener.
* Removed unnecessary code from schedule_nes_timer() and nes_cm_timer_tick().
* Functionalized mini_cm_recv_pkt() and process_packet().
* Cleaned up cm_node->ref_count usage.
* Reuse skbs if available.

Signed-off-by: Faisal Latif <flatif at neteffect.com>

---
v3 - Delta patch to v2.  Missed two changes to nes_cm.c that caused a BUG_ON in 
nes_destroy_qp().

diff -Nurp a/drivers/infiniband/hw/nes/nes_cm.c b/drivers/infiniband/hw/nes/nes_cm.c
--- a/drivers/infiniband/hw/nes/nes_cm.c	2008-07-24 05:23:57.000000000 -0500
+++ b/drivers/infiniband/hw/nes/nes_cm.c	2008-07-24 05:18:45.000000000 -0500
@@ -2837,6 +2837,7 @@ int nes_connect(struct iw_cm_id *cm_id, 
 	cm_node->apbvt_set = 1;
 	nesqp->cm_node = cm_node;
 	cm_node->nesqp = nesqp;
+	nes_add_ref(&nesqp->ibqp);

 	return 0;
 }
@@ -3167,7 +3168,6 @@ static void cm_event_connect_error(struc
 	if (ret)
 		printk(KERN_ERR "%s[%u] OFA CM event_handler returned, "
 			"ret=%d\n", __func__, __LINE__, ret);
-	nes_rem_ref(&nesqp->ibqp);
 	cm_id->rem_ref(cm_id);

 	rem_ref_cm_node(event->cm_node->cm_core, event->cm_node);



More information about the general mailing list