[openib-general] Re[PATCH] Opensm - osm_vl15intf.c fix
Yael Kalka
yael at mellanox.co.il
Thu Jan 5 05:25:41 PST 2006
Hi Hal,
Attached is a fix for the qp0_mads_outstanding handling, according to
what I've described in the previous mail.
Thanks,
Yael
Signed-off-by: Yael Kalka <yael at mellanox.co.il>
Index: opensm/osm_vl15intf.c
===================================================================
--- opensm/osm_vl15intf.c (revision 4760)
+++ opensm/osm_vl15intf.c (working copy)
@@ -182,7 +182,15 @@ __osm_vl15_poller(
qp0_mads_outstanding counter, and if we reached 0 - need to call
the cl_disp_post with OSM_SIGNAL_NO_PENDING_TRANSACTION (in order
to wake up the state mgr).
+ There is one difference from the code in __osm_sm_mad_ctrl_retire_trans_mad.
+ This code is called on all mads, if osm_vendor_send() failed, unlike
+ __osm_sm_mad_ctrl_retire_trans_mad which is called only on mads where
+ resp_expected == TRUE. As a result, the qp0_mads_outstanding counter
+ should be decremented and handled accordingly only if this is a mad
+ with resp_expected == TRUE.
*/
+ if ( p_madw->resp_expected == TRUE )
+ {
outstanding = cl_atomic_dec( &p_vl->p_stats->qp0_mads_outstanding );
osm_log( p_vl->p_log, OSM_LOG_DEBUG,
@@ -219,6 +227,7 @@ __osm_vl15_poller(
}
}
}
+ }
else
{
if( osm_log_is_active( p_vl->p_log, OSM_LOG_DEBUG ) )
@@ -514,7 +523,6 @@ osm_vl15_shutdown(
}
osm_mad_pool_put( p_mad_pool, p_madw );
- cl_atomic_dec( &p_vl->p_stats->qp0_mads_outstanding );
p_madw = (osm_madw_t*)cl_qlist_remove_head( &p_vl->ufifo );
}
More information about the general
mailing list