Sasha Khapyorsky wrote:
> On 10:09 Sun 01 Nov , Eli Dorfman (Voltaire) wrote:
>> Report SA MAD Class specific status.
>>
>> Fixes wrong error report for SA query status.
>
> I agree with patch, but one comment is below.
>
>> Signed-off-by: Eli Dorfman <[email protected]>
>> ---
>> infiniband-diags/src/saquery.c | 41
>> ++++++++++++++++++++++++++++++++++++---
>> 1 files changed, 37 insertions(+), 4 deletions(-)
>>
>> diff --git a/infiniband-diags/src/saquery.c b/infiniband-diags/src/saquery.c
>> index 6c44b63..71823d5 100644
>> --- a/infiniband-diags/src/saquery.c
>> +++ b/infiniband-diags/src/saquery.c
>> @@ -124,6 +124,41 @@ int requested_lid_flag = 0;
>> uint64_t requested_guid = 0;
>> int requested_guid_flag = 0;
>>
>> +#define SA_ERR_UNKNOWN IB_SA_MAD_STATUS_PRIO_SUGGESTED
>> +
>> +const char *ib_sa_error_str[] = {
>> + "SA_NO_ERROR",
>> + "SA_ERR_NO_RESOURCES",
>> + "SA_ERR_REQ_INVALID",
>> + "SA_ERR_NO_RECORDS",
>> + "SA_ERR_TOO_MANY_RECORDS",
>> + "SA_ERR_REQ_INVALID_GID",
>> + "SA_ERR_REQ_INSUFFICIENT_COMPONENTS",
>> + "SA_ERR_REQ_DENIED",
>> + "SA_ERR_STATUS_PRIO_SUGGESTED",
>> + "SA_ERR_UNKNOWN"
>> +};
>> +
>> +static inline const char *ib_sa_err_str(IN uint8_t status)
>> +{
>> + if (status > SA_ERR_UNKNOWN)
>> + status = SA_ERR_UNKNOWN;
>> + return (ib_sa_error_str[status]);
>> +}
>> +
>> +static inline void report_err(int status)
>> +{
>> + int st = status & 0xff;
>> +
>> + if (st)
>> + fprintf(stderr, "ERROR: Query result returned: %s (0x%x)\n",
>> + ib_get_err_str(st), status);
>> + st = status >> 8;
>> + if (st)
>> + fprintf(stderr, "ERROR: Query result returned: %s (0x%x)\n",
>> + ib_sa_err_str(st), status);
>
> Such two identical messages with different error strings seems
> confusing to me. Wouldn't it be better to merge it in a single line,
> like:
>
> ERROR: Query result returned 0xNNNN: SM blah1 , SA blah2
>
> (or similar), with making each part optional.
I agree.
Is it possible according to the spec to have both SM and SA (i don't think so)
Eli
>
> Sasha
>
>> +}
>> +
>> static int sa_query(struct bind_handle *h, uint8_t method,
>> uint16_t attr, uint32_t mod, uint64_t comp_mask,
>> uint64_t sm_key, void *data)
>> @@ -794,8 +829,7 @@ static int get_any_records(bind_handle_t h,
>> }
>>
>> if (result.status != IB_SUCCESS) {
>> - fprintf(stderr, "Query result returned: %s\n",
>> - ib_get_err_str(result.status));
>> + report_err(result.status);
>> return result.status;
>> }
>>
>> @@ -1009,8 +1043,7 @@ static int get_print_class_port_info(bind_handle_t h)
>> return ret;
>> }
>> if (result.status != IB_SUCCESS) {
>> - fprintf(stderr, "ERROR: Query result returned: %s\n",
>> - ib_get_err_str(result.status));
>> + report_err(result.status);
>> return (result.status);
>> }
>> dump_results(&result, dump_class_port_info);
>> --
>> 1.5.5
>>
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html