[ofa-general] Re: [PATCH 2/2] opensm: OpenSM state machine rework

Sasha Khapyorsky sashak at voltaire.com
Fri Feb 1 09:46:46 PST 2008


On 18:56 Wed 30 Jan     , Sasha Khapyorsky wrote:
> 
> Instead of tricky state machine it implements plain flow do_sweep()
> function which uses wait_for_pending_transaction() blocker.
> 
> One of the goals of this patch is to preserve the original OpenSM
> behavior.

Small bug is here.

OpenSM queries NodeInfo only during discovery and finding a new nodes is
expected. If so we don't need to request new discovery in this case. It
is addition:


diff --git a/opensm/opensm/osm_node_info_rcv.c b/opensm/opensm/osm_node_info_rcv.c
index 2106aa2..844dfcf 100644
--- a/opensm/opensm/osm_node_info_rcv.c
+++ b/opensm/opensm/osm_node_info_rcv.c
@@ -853,10 +853,9 @@ void osm_ni_rcv_process(IN void *context, IN void *data)
 
 	osm_dump_node_info(sm->p_log, p_ni, OSM_LOG_DEBUG);
 
-	if (!p_node) {
+	if (!p_node)
 		__osm_ni_rcv_process_new(sm, p_madw);
-		sm->p_subn->force_heavy_sweep = 1;
-	} else
+	else
 		__osm_ni_rcv_process_existing(sm, p_node, p_madw);
 
 	CL_PLOCK_RELEASE(sm->p_lock);



Since CHANGE_DETECTED signal was ignored during subnet discovery phase
by old OpenSM state machine it was useless event but worked.

Sasha



More information about the general mailing list