[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