* [PATCH 03/10] opensm: perfmgr fix dump_counters
@ 2012-07-03 23:53 Ira Weiny
0 siblings, 0 replies; only message in thread
From: Ira Weiny @ 2012-07-03 23:53 UTC (permalink / raw)
To: Alex Netes; +Cc: linux-rdma-u79uwXL29TY76Z2rM5mHXA
Mark ports in the DB as invalid until data arrives.
Signed-off-by: Ira Weiny <weiny2-i2BcT+NCU+M@public.gmane.org>
---
include/opensm/osm_perfmgr_db.h | 1 +
opensm/osm_perfmgr_db.c | 18 ++++++++++++++++++
2 files changed, 19 insertions(+), 0 deletions(-)
diff --git a/include/opensm/osm_perfmgr_db.h b/include/opensm/osm_perfmgr_db.h
index 42a47bd..4c7996d 100644
--- a/include/opensm/osm_perfmgr_db.h
+++ b/include/opensm/osm_perfmgr_db.h
@@ -126,6 +126,7 @@ typedef struct db_port {
perfmgr_db_data_cnt_reading_t dc_total;
perfmgr_db_data_cnt_reading_t dc_previous;
time_t last_reset;
+ boolean_t valid;
} db_port_t;
/** =========================================================================
diff --git a/opensm/osm_perfmgr_db.c b/opensm/osm_perfmgr_db.c
index a472287..98bf59c 100644
--- a/opensm/osm_perfmgr_db.c
+++ b/opensm/osm_perfmgr_db.c
@@ -108,6 +108,11 @@ static inline perfmgr_db_err_t bad_node_port(db_node_t * node, uint8_t port)
return PERFMGR_EVENT_DB_SUCCESS;
}
+static inline void mark_port_valid(db_node_t * node, uint8_t port)
+{
+ node->ports[port].valid = TRUE;
+}
+
/** =========================================================================
*/
static db_node_t *malloc_node(uint64_t guid, boolean_t esp0,
@@ -131,6 +136,7 @@ static db_node_t *malloc_node(uint64_t guid, boolean_t esp0,
rc->ports[i].last_reset = cur_time;
rc->ports[i].err_previous.time = cur_time;
rc->ports[i].dc_previous.time = cur_time;
+ rc->ports[i].valid = FALSE;
}
snprintf(rc->node_name, sizeof(rc->node_name), "%s", name);
@@ -271,6 +277,8 @@ perfmgr_db_add_err_reading(perfmgr_db_t * db, uint64_t guid, uint8_t port,
if ((rc = bad_node_port(node, port)) != PERFMGR_EVENT_DB_SUCCESS)
goto Exit;
+ mark_port_valid(node, port);
+
p_port = &(node->ports[port]);
previous = &(node->ports[port].err_previous);
@@ -413,6 +421,8 @@ perfmgr_db_add_dc_reading(perfmgr_db_t * db, uint64_t guid, uint8_t port,
if ((rc = bad_node_port(node, port)) != PERFMGR_EVENT_DB_SUCCESS)
goto Exit;
+ mark_port_valid(node, port);
+
p_port = &node->ports[port];
previous = &node->ports[port].dc_previous;
@@ -579,6 +589,10 @@ static void dump_node_mr(db_node_t * node, FILE * fp)
"multicast_rcv_pkts");
for (i = (node->esp0) ? 0 : 1; i < node->num_ports; i++) {
char *since = ctime(&node->ports[i].last_reset);
+
+ if (!node->ports[i].valid)
+ continue;
+
since[strlen(since) - 1] = '\0'; /* remove \n */
fprintf(fp,
@@ -622,6 +636,10 @@ static void dump_node_hr(db_node_t * node, FILE * fp)
fprintf(fp, "\n");
for (i = (node->esp0) ? 0 : 1; i < node->num_ports; i++) {
char *since = ctime(&node->ports[i].last_reset);
+
+ if (!node->ports[i].valid)
+ continue;
+
since[strlen(since) - 1] = '\0'; /* remove \n */
fprintf(fp, "\"%s\" 0x%" PRIx64 " port %d (Since %s)\n"
--
1.7.1
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2012-07-03 23:53 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-07-03 23:53 [PATCH 03/10] opensm: perfmgr fix dump_counters Ira Weiny
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.