[ofa-general] ***SPAM*** [PATCH] infiniband-diags Add support for PortXmitWait counter

Eli Dorfman (Voltaire) dorfman.eli at gmail.com
Tue Dec 23 04:58:39 PST 2008


 Add support for PortXmitWait counter
 Show PortCounters::PortXmitWait when this capability is supported by the firmware.
 If not supported show this counter as 0.

Signed-off-by: Eli Dorfman <elid at voltaire.com>
---
 infiniband-diags/src/perfquery.c  |   10 +++++++++-
 libibmad/include/infiniband/mad.h |    1 +
 libibmad/src/fields.c             |    1 +
 3 files changed, 11 insertions(+), 1 deletions(-)

diff --git a/infiniband-diags/src/perfquery.c b/infiniband-diags/src/perfquery.c
index 7a53e92..4166fff 100644
--- a/infiniband-diags/src/perfquery.c
+++ b/infiniband-diags/src/perfquery.c
@@ -68,6 +68,7 @@ struct perf_count {
 	uint32_t rcvdata;
 	uint32_t xmtpkts;
 	uint32_t rcvpkts;
+	uint32_t xmtwait;
 };
 
 struct perf_count_ext {
@@ -210,6 +211,8 @@ static void aggregate_perfcounters(void)
 	aggregate_32bit(&perf_count.xmtpkts, val);
         mad_decode_field(pc, IB_PC_RCV_PKTS_F, &val);
 	aggregate_32bit(&perf_count.rcvpkts, val);
+        mad_decode_field(pc, IB_PC_XMT_WAIT_F, &val);
+	aggregate_32bit(&perf_count.xmtwait, val);
 }
 
 static void output_aggregate_perfcounters(ib_portid_t *portid)
@@ -299,9 +302,14 @@ static void dump_perfcounters(int extended, int timeout, uint16_t cap_mask, ib_p
 	if (extended != 1) {
 		if (!port_performance_query(pc, portid, port, timeout))
 			IBERROR("perfquery");
+		if (!(cap_mask & 0x1000)) {
+			/* if PortCounters:PortXmitWait not suppported clear this counter */
+			perf_count.xmtwait = 0;
+			mad_encode_field(pc, IB_PC_XMT_WAIT_F, &perf_count.xmtwait);
+		}
 		if (aggregate)
 			aggregate_perfcounters();
-		else
+		else 
 			mad_dump_perfcounters(buf, sizeof buf, pc, sizeof pc);
 	} else {
 		if (!(cap_mask & 0x200)) /* 1.2 errata: bit 9 is extended counter support */
diff --git a/libibmad/include/infiniband/mad.h b/libibmad/include/infiniband/mad.h
index c2ad148..6c313f9 100644
--- a/libibmad/include/infiniband/mad.h
+++ b/libibmad/include/infiniband/mad.h
@@ -413,6 +413,7 @@ enum MAD_FIELDS {
 	IB_PC_RCV_BYTES_F,
 	IB_PC_XMT_PKTS_F,
 	IB_PC_RCV_PKTS_F,
+	IB_PC_XMT_WAIT_F,
 	IB_PC_LAST_F,
 
 	/*
diff --git a/libibmad/src/fields.c b/libibmad/src/fields.c
index 6942e85..116e432 100644
--- a/libibmad/src/fields.c
+++ b/libibmad/src/fields.c
@@ -247,6 +247,7 @@ ib_field_t ib_mad_f [] = {
 	[IB_PC_RCV_BYTES_F] 		{224, 32, "RcvData", mad_dump_uint},
 	[IB_PC_XMT_PKTS_F] 		{256, 32, "XmtPkts", mad_dump_uint},
 	[IB_PC_RCV_PKTS_F] 		{288, 32, "RcvPkts", mad_dump_uint},
+	[IB_PC_XMT_WAIT_F] 		{320, 32, "XmtWait", mad_dump_uint},
 
 	/*
 	 * SMInfo
-- 
1.5.5




More information about the general mailing list