[openib-general] [PATCH] OpenSM - Clear IsSM bit when shutting down

Jan Daley jdaley at systemfabricworks.com
Fri Aug 6 14:08:41 PDT 2004


Hi,

This patch is to clear the PortInfo:CapabilityMask:IsSM bit on shutdown.
A SM that is brought up on a different node later on will do repeated
SubnGet(SMInfo) that will just timeout.



Index: opensm/osm_vendor_mlx.c
===================================================================
--- opensm/osm_vendor_mlx.c	(revision 590)
+++ opensm/osm_vendor_mlx.c	(working copy)
@@ -674,6 +674,43 @@
 }
 
 /*
+ *  NAME            __osm_vendor_clear_sm
+ *
+ *  DESCRIPTION     Modifies the port info for the bound port to clear
the "IS_SM" bit.
+ */
+static void
+__osm_vendor_clear_sm( IN osm_bind_handle_t h_bind )
+{
+  osmv_bind_obj_t *p_bo = ( osmv_bind_obj_t * ) h_bind;
+  osm_vendor_t const *p_vend = p_bo->p_vendor;
+  VAPI_ret_t status;
+  VAPI_hca_attr_t attr_mod;
+  VAPI_hca_attr_mask_t attr_mask;
+
+  OSM_LOG_ENTER( p_vend->p_log, osm_vendor_set_sm );
+
+  cl_memclr( &attr_mod, sizeof( attr_mod ) );
+  cl_memclr( &attr_mask, sizeof( attr_mask ) );
+
+  attr_mod.is_sm = FALSE;
+  attr_mask = HCA_ATTR_IS_SM;
+
+  status =
+    VAPI_modify_hca_attr( p_bo->hca_hndl, p_bo->port_num, &attr_mod,
+                          &attr_mask );
+  if ( status != VAPI_OK )
+  {
+    osm_log( p_vend->p_log, OSM_LOG_ERROR,
+             "osm_vendor_set_sm: ERR 5012: "
+             "Unable to clear 'IS_SM' bit in port attributes (%d).\n",
+             status );
+  }
+
+  OSM_LOG_EXIT( p_vend->p_log );
+}
+
+
+/*
  *  NAME            __osm_vendor_internal_unbind
  *
  *  DESCRIPTION     Destroying a bind:
@@ -689,6 +726,8 @@
 
   OSM_LOG_ENTER(p_log,__osm_vendor_internal_unbind);
 
+   __osm_vendor_clear_sm(h_bind);
+
   /* "notifying" all that from now on no new sends can be done */
   osmv_txn_lock(p_bo);
   p_bo->is_closing = TRUE;



Jan Daley
System Fabric Works
(512) 343-6101 x 13







More information about the general mailing list