From: Sasha Khapyorsky <sashak-smomgflXvOZWk0Htik3J/w@public.gmane.org>
To: Ira Weiny <weiny2-i2BcT+NCU+M@public.gmane.org>
Cc: Hal Rosenstock
<hal.rosenstock-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
linux-rdma <linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>
Subject: [PATCH] infiniband-diags/ibqueryerrors.c: use common node_name
Date: Fri, 23 Oct 2009 18:34:30 +0200 [thread overview]
Message-ID: <20091023163430.GC718@me> (raw)
In-Reply-To: <20091023163337.GB718@me>
Get common node_name string using remap_node_name() and use it over
reporting functions - in this way simplify the code, avoid multiple
remap_node searches and fix minor memory leaks.
Signed-off-by: Sasha Khapyorsky <sashak-smomgflXvOZWk0Htik3J/w@public.gmane.org>
---
infiniband-diags/src/ibqueryerrors.c | 48 ++++++++++++---------------------
1 files changed, 18 insertions(+), 30 deletions(-)
diff --git a/infiniband-diags/src/ibqueryerrors.c b/infiniband-diags/src/ibqueryerrors.c
index fdd9246..0842eb3 100644
--- a/infiniband-diags/src/ibqueryerrors.c
+++ b/infiniband-diags/src/ibqueryerrors.c
@@ -113,7 +113,7 @@ static void get_msg(char *width_msg, char *speed_msg, int msg_size,
buf, 64, &max_speed));
}
-static void print_port_config(ibnd_node_t * node, int portnum)
+static void print_port_config(char *node_name, ibnd_node_t * node, int portnum)
{
char width[64], speed[64], state[64], physstate[64];
char remote_str[256];
@@ -145,10 +145,6 @@ static void print_port_config(ibnd_node_t * node, int portnum)
mad_dump_val(IB_PORT_PHYS_STATE_F, physstate, 64, &iphystate));
if (port->remoteport) {
- char *remap =
- remap_node_name(node_name_map, port->remoteport->node->guid,
- port->remoteport->node->nodedesc);
-
if (port->remoteport->ext_portnum)
snprintf(ext_port_str, 256, "%d",
port->remoteport->ext_portnum);
@@ -162,9 +158,8 @@ static void print_port_config(ibnd_node_t * node, int portnum)
port->remoteport->node->guid,
port->remoteport->base_lid ? port->remoteport->
base_lid : port->remoteport->node->smalid,
- port->remoteport->portnum, ext_port_str, remap,
+ port->remoteport->portnum, ext_port_str, node_name,
width_msg, speed_msg);
- free(remap);
} else
snprintf(remote_str, 256, " [ ] \"\" ( )\n");
@@ -203,8 +198,8 @@ static void report_suppressed(void)
}
}
-static void print_results(ibnd_node_t * node, uint8_t * pc, int portnum,
- int *header_printed)
+static void print_results(char *node_name, ibnd_node_t * node, uint8_t * pc,
+ int portnum, int *header_printed)
{
char buf[1024];
char *str = buf;
@@ -245,23 +240,19 @@ static void print_results(ibnd_node_t * node, uint8_t * pc, int portnum,
}
if (!*header_printed) {
- char *nodename =
- remap_node_name(node_name_map, node->guid,
- node->nodedesc);
printf("Errors for 0x%" PRIx64 " \"%s\"\n", node->guid,
- nodename);
+ node_name);
*header_printed = 1;
- free(nodename);
}
printf(" GUID 0x%" PRIx64 " port %d:%s\n", node->guid,
portnum, str);
if (port_config)
- print_port_config(node, portnum);
+ print_port_config(node_name, node, portnum);
}
}
-static int query_cap_mask(ib_portid_t *portid, ibnd_node_t * node, int portnum,
+static int query_cap_mask(ib_portid_t *portid, char *node_name, int portnum,
uint16_t * cap_mask)
{
uint8_t pc[1024];
@@ -271,9 +262,7 @@ static int query_cap_mask(ib_portid_t *portid, ibnd_node_t * node, int portnum,
if (!pma_query_via(pc, portid, portnum, ibd_timeout, CLASS_PORT_INFO,
ibmad_port)) {
IBWARN("classportinfo query failed on %s, %s port %d",
- remap_node_name(node_name_map, node->guid,
- node->nodedesc), portid2str(portid),
- portnum);
+ node_name, portid2str(portid), portnum);
return -1;
}
@@ -284,30 +273,25 @@ static int query_cap_mask(ib_portid_t *portid, ibnd_node_t * node, int portnum,
return 0;
}
-static void print_port(ib_portid_t * portid, uint16_t cap_mask,
+static void print_port(ib_portid_t * portid, uint16_t cap_mask, char *node_name,
ibnd_node_t * node, int portnum, int *header_printed)
{
uint8_t pc[1024];
- char *nodename =
- remap_node_name(node_name_map, node->guid, node->nodedesc);
memset(pc, 0, 1024);
if (!pma_query_via(pc, portid, portnum, ibd_timeout,
IB_GSI_PORT_COUNTERS, ibmad_port)) {
IBWARN("IB_GSI_PORT_COUNTERS query failed on %s, %s port %d\n",
- nodename, portid2str(portid), portnum);
- goto cleanup;
+ node_name, portid2str(portid), portnum);
+ return;
}
if (!(cap_mask & 0x1000)) {
/* if PortCounters:PortXmitWait not suppported clear this counter */
uint32_t foo = 0;
mad_encode_field(pc, IB_PC_XMT_WAIT_F, &foo);
}
- print_results(node, pc, portnum, header_printed);
-
-cleanup:
- free(nodename);
+ print_results(node_name, node, pc, portnum, header_printed);
}
static void clear_port(ib_portid_t * portid, uint16_t cap_mask,
@@ -365,6 +349,8 @@ void print_node(ibnd_node_t * node, void *user_data)
startport = 0;
for (p = startport; p <= node->numports; p++) {
+ char *node_name = remap_node_name(node_name_map, node->guid,
+ node->nodedesc);
if (node->ports[p]) {
if (node->type == IB_NODE_SWITCH)
ib_portid_set(&portid, node->smalid, 0, 0);
@@ -372,16 +358,18 @@ void print_node(ibnd_node_t * node, void *user_data)
ib_portid_set(&portid, node->ports[p]->base_lid,
0, 0);
- if (query_cap_mask(&portid, node, p, &cap_mask) < 0)
+ if (query_cap_mask(&portid, node_name, p, &cap_mask) < 0)
continue;
if (cap_mask & 0x100)
all_port_sup = 1;
- print_port(&portid, cap_mask, node, p, &header_printed);
+ print_port(&portid, cap_mask, node_name, node, p,
+ &header_printed);
if (!all_port_sup)
clear_port(&portid, cap_mask, node, p);
}
+ free(node_name);
}
if (all_port_sup)
--
1.6.5.1
--
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
prev parent reply other threads:[~2009-10-23 16:34 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20090924235011.a9a16022.weiny2@llnl.gov>
[not found] ` <f0e08f230909250707t36c1ebc4od5df33e36f6cd38a@mail.gmail.com>
[not found] ` <20090925093358.f9f747d4.weiny2@llnl.gov>
[not found] ` <20090925093358.f9f747d4.weiny2-i2BcT+NCU+M@public.gmane.org>
2009-10-23 16:33 ` [PATCH] infiniband-diags/ibqueryerrors.c: use common portid in query_cap_mask() Sasha Khapyorsky
2009-10-23 16:34 ` Sasha Khapyorsky [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20091023163430.GC718@me \
--to=sashak-smomgflxvozwk0htik3j/w@public.gmane.org \
--cc=hal.rosenstock-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
--cc=linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=weiny2-i2BcT+NCU+M@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.