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 <[EMAIL PROTECTED]> 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 ); } _______________________________________________ openib-general mailing list openib-general@openib.org http://openib.org/mailman/listinfo/openib-general To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general