"__osm_sm_mad_ctrl_retire_trans_mad: ERR 3120: "
"Trying to dec qp0_mads_outstanding=0. "
"Problem with transaction mgr!\n");
+ outstanding = 0;
}
else
{
- cl_atomic_dec( &p_ctrl->p_stats->qp0_mads_outstanding );
+ outstanding = cl_atomic_dec( &p_ctrl->p_stats->qp0_mads_outstanding );
}
if( osm_log_is_active( p_ctrl->p_log, OSM_LOG_DEBUG ) )
p_ctrl->p_stats->qp0_mads_outstanding );
}
- /*
- Acquire the lock non-exclusively.
- Other modules that send MADs grab this lock exclusively.
- These modules that are in the process of sending MADs
- will hold the lock until they finish posting all the MADs
- they plan to send. While the other module is sending MADs
- the outstanding count may temporarily go to zero.
- Thus, by grabbing the lock ourselves, we get an accurate
- view of whether or not the number of outstanding MADs is
- really zero.
- */
- CL_PLOCK_ACQUIRE( p_ctrl->p_lock );
- outstanding = p_ctrl->p_stats->qp0_mads_outstanding;
- CL_PLOCK_RELEASE( p_ctrl->p_lock );
-
if( outstanding == 0 )
{
/*
the cl_disp_post with OSM_SIGNAL_NO_PENDING_TRANSACTION (in order
to wake up the state mgr).
*/
- cl_atomic_dec( &p_vl->p_stats->qp0_mads_outstanding );
+ outstanding = cl_atomic_dec( &p_vl->p_stats->qp0_mads_outstanding );
osm_log( p_vl->p_log, OSM_LOG_DEBUG,
"__osm_vl15_poller: "
"%u QP0 MADs outstanding.\n",
p_vl->p_stats->qp0_mads_outstanding );
- /*
- Acquire the lock non-exclusively.
- Other modules that send MADs grab this lock exclusively.
- These modules that are in the process of sending MADs
- will hold the lock until they finish posting all the MADs
- they plan to send. While the other module is sending MADs
- the outstanding count may temporarily go to zero.
- Thus, by grabbing the lock ourselves, we get an accurate
- view of whether or not the number of outstanding MADs is
- really zero.
- */
- CL_PLOCK_ACQUIRE( p_vl->p_lock );
- outstanding = p_vl->p_stats->qp0_mads_outstanding;
- CL_PLOCK_RELEASE( p_vl->p_lock );
-
if( outstanding == 0 )
{
/*