* [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[parent not found: <4AED4241.4000808-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>]
* 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
[parent not found: <4AEEA4D6.8070109-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>]
* 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. 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
[parent not found: <4AEEA903.4030406-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>]
* 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 a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox