* [PATCH] infiniband-diags/saquery: Report SA MAD Class specific status.
@ 2009-11-01 8:09 Eli Dorfman (Voltaire)
[not found] ` <4AED4241.4000808-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
0 siblings, 1 reply; 6+ messages in thread
From: Eli Dorfman (Voltaire) @ 2009-11-01 8:09 UTC (permalink / raw)
To: Sasha Khapyorsky; +Cc: linux-rdma
Report SA MAD Class specific status.
Fixes wrong error report for SA query status.
Signed-off-by: Eli Dorfman <elid-smomgflXvOZWk0Htik3J/w@public.gmane.org>
---
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);
+}
+
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 majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH] infiniband-diags/saquery: Report SA MAD Class specific status.
[not found] ` <4AED4241.4000808-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
@ 2009-11-01 16:52 ` Sasha Khapyorsky
2009-11-02 9:22 ` Eli Dorfman (Voltaire)
2009-11-02 9:40 ` [PATCH v2] " Eli Dorfman (Voltaire)
0 siblings, 2 replies; 6+ messages in thread
From: Sasha Khapyorsky @ 2009-11-01 16:52 UTC (permalink / raw)
To: Eli Dorfman (Voltaire); +Cc: linux-rdma
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 <elid-smomgflXvOZWk0Htik3J/w@public.gmane.org>
> ---
> 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.
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 majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] infiniband-diags/saquery: Report SA MAD Class specific status.
2009-11-01 16:52 ` Sasha Khapyorsky
@ 2009-11-02 9:22 ` Eli Dorfman (Voltaire)
[not found] ` <4AEEA4D6.8070109-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2009-11-02 9:40 ` [PATCH v2] " Eli Dorfman (Voltaire)
1 sibling, 1 reply; 6+ messages in thread
From: Eli Dorfman (Voltaire) @ 2009-11-02 9:22 UTC (permalink / raw)
To: Sasha Khapyorsky; +Cc: linux-rdma
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 <elid-smomgflXvOZWk0Htik3J/w@public.gmane.org>
>> ---
>> 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 majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2] infiniband-diags/saquery: Report SA MAD Class specific status.
2009-11-01 16:52 ` Sasha Khapyorsky
2009-11-02 9:22 ` Eli Dorfman (Voltaire)
@ 2009-11-02 9:40 ` Eli Dorfman (Voltaire)
[not found] ` <4AEEA903.4030406-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
1 sibling, 1 reply; 6+ messages in thread
From: Eli Dorfman (Voltaire) @ 2009-11-02 9:40 UTC (permalink / raw)
To: Sasha Khapyorsky; +Cc: linux-rdma
Report SA MAD Class specific status.
In addition to SM status.
Signed-off-by: Eli Dorfman <elid-smomgflXvOZWk0Htik3J/w@public.gmane.org>
---
infiniband-diags/src/saquery.c | 45 ++++++++++++++++++++++++++++++++++++---
1 files changed, 41 insertions(+), 4 deletions(-)
diff --git a/infiniband-diags/src/saquery.c b/infiniband-diags/src/saquery.c
index 6c44b63..9495cd9 100644
--- a/infiniband-diags/src/saquery.c
+++ b/infiniband-diags/src/saquery.c
@@ -124,6 +124,45 @@ 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;
+ char sm_err_str[64] = { 0 };
+ char sa_err_str[64] = { 0 };
+
+ if (st)
+ sprintf(sm_err_str, " SM(%s)", ib_get_err_str(st));
+
+ st = status >> 8;
+ if (st)
+ sprintf(sa_err_str, " SA(%s)", ib_sa_err_str(st));
+
+ fprintf(stderr, "ERROR: Query result returned 0x%04x, %s%s\n",
+ status, sm_err_str, sa_err_str);
+}
+
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 +833,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 +1047,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 majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH] infiniband-diags/saquery: Report SA MAD Class specific status.
[not found] ` <4AEEA4D6.8070109-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
@ 2009-11-02 12:20 ` Sasha Khapyorsky
0 siblings, 0 replies; 6+ messages in thread
From: Sasha Khapyorsky @ 2009-11-02 12:20 UTC (permalink / raw)
To: Eli Dorfman (Voltaire); +Cc: linux-rdma
On 11:22 Mon 02 Nov , Eli Dorfman (Voltaire) wrote:
> >> +
> >> +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)
I don't know really, don't remember that it stated somewhere in the spec
explicitly. But even if so - it is slightly dangerous to assume in the
code that this will never happen.
Sasha
--
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 [flat|nested] 6+ messages in thread
* Re: [PATCH v2] infiniband-diags/saquery: Report SA MAD Class specific status.
[not found] ` <4AEEA903.4030406-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
@ 2009-11-02 12:25 ` Sasha Khapyorsky
0 siblings, 0 replies; 6+ messages in thread
From: Sasha Khapyorsky @ 2009-11-02 12:25 UTC (permalink / raw)
To: Eli Dorfman (Voltaire); +Cc: linux-rdma
On 11:40 Mon 02 Nov , Eli Dorfman (Voltaire) wrote:
> Report SA MAD Class specific status.
>
> In addition to SM status.
>
> Signed-off-by: Eli Dorfman <elid-smomgflXvOZWk0Htik3J/w@public.gmane.org>
Applied. Thanks.
Sasha
--
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 [flat|nested] 6+ messages in thread
end of thread, other threads:[~2009-11-02 12:25 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-11-01 8:09 [PATCH] infiniband-diags/saquery: Report SA MAD Class specific status Eli Dorfman (Voltaire)
[not found] ` <4AED4241.4000808-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2009-11-01 16:52 ` Sasha Khapyorsky
2009-11-02 9:22 ` Eli Dorfman (Voltaire)
[not found] ` <4AEEA4D6.8070109-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2009-11-02 12:20 ` Sasha Khapyorsky
2009-11-02 9:40 ` [PATCH v2] " Eli Dorfman (Voltaire)
[not found] ` <4AEEA903.4030406-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2009-11-02 12:25 ` Sasha Khapyorsky
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.