public inbox for linux-rdma@vger.kernel.org
 help / color / mirror / Atom feed
* [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

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