[ofa-general] ***SPAM*** Re: [PATCH] infiniband-diags Add support for PortXmitWait counter
Eli Dorfman (Voltaire)
dorfman.eli at gmail.com
Mon Jan 5 04:47:19 PST 2009
Sasha Khapyorsky wrote:
> Hi Eli,
>
> On 14:58 Tue 23 Dec , Eli Dorfman (Voltaire) wrote:
>> 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);
>> }
>
> Should XMT_WAIT support be added to output_aggregate_perfcounters(),
> reset and other places too?
reset is not supported by the firmware (at the moment).
need to add xmitwait to output_aggregate_perfcounters() as well.
>
>>
>> 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,
>>
>> /*
>
> Basically I'm fine to have two separate patches - one to support
> XMT_WAIT in libibmad and another one for perfquery, this is a minor
> although.
it is all part of the same change.
>
> Sasha
>
>> 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