[ofa-general] [PATCH v2] opensm: set IS_SM bit during opensm init
Eli Dorfman (Voltaire)
dorfman.eli at gmail.com
Thu Mar 12 07:15:10 PDT 2009
Set IS_SM bit during opensm init
Set IS_SM bit during opensm initalization.
This fixes a problem of SM that enters to standby and has
mismatch between local capability (IS_SM off) and the SMA.
Signed-off-by: Eli Dorfman <elid at voltaire.com>
---
opensm/opensm/osm_opensm.c | 5 +++++
opensm/opensm/osm_port_info_rcv.c | 35 +----------------------------------
2 files changed, 6 insertions(+), 34 deletions(-)
diff --git a/opensm/opensm/osm_opensm.c b/opensm/opensm/osm_opensm.c
index 7de2e5b..cfe6474 100644
--- a/opensm/opensm/osm_opensm.c
+++ b/opensm/opensm/osm_opensm.c
@@ -475,6 +475,11 @@ osm_opensm_bind(IN osm_opensm_t * const p_osm, IN const ib_net64_t guid)
goto Exit;
#endif /* ENABLE_OSM_PERF_MGR */
+ /* setting IS_SM in capability mask */
+ OSM_LOG(&p_osm->log, OSM_LOG_INFO, "Setting IS_SM on port 0x%016" PRIx64 "\n",
+ cl_ntoh64(guid));
+ osm_vendor_set_sm(p_osm->sm.mad_ctrl.h_bind, TRUE);
+
Exit:
OSM_LOG_EXIT(&p_osm->log);
return (status);
diff --git a/opensm/opensm/osm_port_info_rcv.c b/opensm/opensm/osm_port_info_rcv.c
index 3e39dff..7a3e487 100644
--- a/opensm/opensm/osm_port_info_rcv.c
+++ b/opensm/opensm/osm_port_info_rcv.c
@@ -62,30 +62,6 @@
#include <opensm/osm_opensm.h>
#include <opensm/osm_ucast_mgr.h>
-/**********************************************************************
- **********************************************************************/
-static void
-__osm_pi_rcv_set_sm(IN osm_sm_t * sm,
- IN osm_physp_t * const p_physp)
-{
- osm_bind_handle_t h_bind;
- osm_dr_path_t *p_dr_path;
-
- OSM_LOG_ENTER(sm->p_log);
-
- OSM_LOG(sm->p_log, OSM_LOG_DEBUG,
- "Setting IS_SM bit in port attributes\n");
-
- p_dr_path = osm_physp_get_dr_path_ptr(p_physp);
- h_bind = osm_dr_path_get_bind_handle(p_dr_path);
-
- /*
- The 'IS_SM' bit isn't already set, so set it.
- */
- osm_vendor_set_sm(h_bind, TRUE);
-
- OSM_LOG_EXIT(sm->p_log);
-}
/**********************************************************************
**********************************************************************/
@@ -139,16 +115,7 @@ __osm_pi_rcv_process_endport(IN osm_sm_t * sm,
}
}
- if (port_guid == sm->p_subn->sm_port_guid) {
- /*
- We received the PortInfo for our own port.
- */
- if (!(p_pi->capability_mask & IB_PORT_CAP_IS_SM))
- /*
- Set the IS_SM bit to indicate our port hosts an SM.
- */
- __osm_pi_rcv_set_sm(sm, p_physp);
- } else {
+ if (port_guid != sm->p_subn->sm_port_guid) {
p_sm_tbl = &sm->p_subn->sm_guid_tbl;
if (p_pi->capability_mask & IB_PORT_CAP_IS_SM) {
/*
--
1.5.5
More information about the general
mailing list