[ofa-general] ***SPAM*** Re: [PATCH] infiniband-diags Add support for PortXmitWait counter
Eli Dorfman (Voltaire)
dorfman.eli at gmail.com
Mon Jan 5 23:46:15 PST 2009
Hal Rosenstock wrote:
> Eli,
>
> On Mon, Jan 5, 2009 at 7:47 AM, Eli Dorfman (Voltaire)
> <dorfman.eli at gmail.com> wrote:
>> 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).
>
> What is the firmware response to a reset ?
i didn't try this since mellanox say they don't support this.
>
> -- Hal
>
>> 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
>>>>
>> _______________________________________________
>> general mailing list
>> general at lists.openfabrics.org
>> http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general
>>
>> To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general
>>
More information about the general
mailing list