[ofa-general] ***SPAM*** [PATCH] opensm/osm_console.c: Add list of SMs to status command

hnrose at comcast.net hnrose at comcast.net
Sat Feb 14 05:54:09 PST 2009


>From debc6e1f5bd225449ca897264948b08ccf69de38 Mon Sep 17 00:00:00 2001
From: Hal Rosenstock <hal.rosenstock at gmail.com>
Date: Fri, 13 Feb 2009 09:49:36 -0500
Subject: [PATCH] opensm/osm_console.c: Add list of SMs to status command

Also, add SM priority into status command

Signed-off-by: Hal Rosenstock <hal.rosenstock at gmail.com>
---
 opensm/opensm/osm_console.c |   38 ++++++++++++++++++++++++++++++++++----
 1 files changed, 34 insertions(+), 4 deletions(-)

diff --git a/opensm/opensm/osm_console.c b/opensm/opensm/osm_console.c
index 5bc1079..f06eb52 100644
--- a/opensm/opensm/osm_console.c
+++ b/opensm/opensm/osm_console.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2005-2008 Voltaire, Inc. All rights reserved.
+ * Copyright (c) 2009 HNR Consulting. All rights reserved.
  *
  * This software is available to you under a choice of one of two
  * licenses.  You may choose to be licensed under the terms of the GNU
@@ -303,13 +304,13 @@ static char *sm_state_str(int state)
 	case IB_SMINFO_STATE_DISCOVERING:
 		return ("Discovering");
 	case IB_SMINFO_STATE_STANDBY:
-		return ("Standby");
+		return ("Standby    ");
 	case IB_SMINFO_STATE_NOTACTIVE:
-		return ("Not Active");
+		return ("Not Active ");
 	case IB_SMINFO_STATE_MASTER:
-		return ("Master");
+		return ("Master     ");
 	}
-	return ("UNKNOWN");
+	return ("UNKNOWN    ");
 }
 
 static char *sa_state_str(osm_sa_state_t state)
@@ -323,6 +324,32 @@ static char *sa_state_str(osm_sa_state_t state)
 	return ("UNKNOWN");
 }
 
+static void dump_sms(osm_opensm_t * p_osm, FILE * out)
+{
+	osm_subn_t *p_subn = &p_osm->subn;
+	osm_remote_sm_t *p_rsm;
+
+	fprintf(out, "\n   Known SMs\n"
+		     "   ---------\n");
+	fprintf(out, "   Port GUID       SM State    Priority\n");
+	fprintf(out, "   ---------       --------    --------\n");
+	fprintf(out, "   0x%" PRIx64 " %s %d        SELF\n",
+		cl_ntoh64(p_subn->sm_port_guid),
+		sm_state_str(p_subn->sm_state),
+		p_subn->opt.sm_priority);
+
+	CL_PLOCK_ACQUIRE(p_osm->sm.p_lock);
+	p_rsm = (osm_remote_sm_t *) cl_qmap_head(&p_subn->sm_guid_tbl);
+	while (p_rsm != (osm_remote_sm_t *) cl_qmap_end(&p_subn->sm_guid_tbl)) {
+		fprintf(out, "   0x%" PRIx64 " %s %d\n",
+			cl_ntoh64(p_rsm->smi.guid),
+			sm_state_str(ib_sminfo_get_state(&p_rsm->smi)),
+			ib_sminfo_get_priority(&p_rsm->smi));
+		p_rsm = (osm_remote_sm_t *) cl_qmap_next(&p_rsm->map_item);
+	}
+	CL_PLOCK_RELEASE(p_osm->sm.p_lock);
+}
+
 static void print_status(osm_opensm_t * p_osm, FILE * out)
 {
 	cl_list_item_t *item;
@@ -332,6 +359,8 @@ static void print_status(osm_opensm_t * p_osm, FILE * out)
 		fprintf(out, "   OpenSM Version       : %s\n", p_osm->osm_version);
 		fprintf(out, "   SM State             : %s\n",
 			sm_state_str(p_osm->subn.sm_state));
+		fprintf(out, "   SM Priority          : %d\n",
+			p_osm->subn.opt.sm_priority);
 		fprintf(out, "   SA State             : %s\n",
 			sa_state_str(p_osm->sa.state));
 		fprintf(out, "   Routing Engine       : %s\n",
@@ -391,6 +420,7 @@ static void print_status(osm_opensm_t * p_osm, FILE * out)
 			p_osm->subn.in_sweep_hop_0,
 			p_osm->subn.first_time_master_sweep,
 			p_osm->subn.coming_out_of_standby);
+		dump_sms(p_osm, out);
 		fprintf(out, "\n");
 		cl_plock_release(&p_osm->lock);
 	}
-- 
1.5.6.4




More information about the general mailing list