Signed-off-by: Ira Weiny <[email protected]>
---
src/ibqueryerrors.c | 29 +++++++++++++++++++++++------
1 files changed, 23 insertions(+), 6 deletions(-)
diff --git a/src/ibqueryerrors.c b/src/ibqueryerrors.c
index 493020b..e7a7cdb 100644
--- a/src/ibqueryerrors.c
+++ b/src/ibqueryerrors.c
@@ -169,6 +169,7 @@ static void print_port_config(char *node_name, ibnd_node_t
* node, int portnum)
char speed_msg[256];
char ext_port_str[256];
int iwidth, ispeed, istate, iphystate;
+ int n = 0;
ibnd_port_t *port = node->ports[portnum];
@@ -176,7 +177,9 @@ static void print_port_config(char *node_name, ibnd_node_t
* node, int portnum)
return;
iwidth = mad_get_field(port->info, 0, IB_PORT_LINK_WIDTH_ACTIVE_F);
- ispeed = mad_get_field(port->info, 0, IB_PORT_LINK_SPEED_ACTIVE_F);
+ ispeed = mad_get_field(port->info, 0, IB_PORT_LINK_SPEED_EXT_ACTIVE_F);
+ ispeed <<= 4;
+ ispeed |= mad_get_field(port->info, 0, IB_PORT_LINK_SPEED_ACTIVE_F);
istate = mad_get_field(port->info, 0, IB_PORT_STATE_F);
iphystate = mad_get_field(port->info, 0, IB_PORT_PHYS_STATE_F);
@@ -189,11 +192,25 @@ static void print_port_config(char *node_name,
ibnd_node_t * node, int portnum)
* returned for all PortInfo components except PortState and
* PortPhysicalState */
if (istate != IB_LINK_DOWN) {
- snprintf(link_str, 256, "(%3s %9s %6s/%8s)",
- mad_dump_val(IB_PORT_LINK_WIDTH_ACTIVE_F, width, 64,
&iwidth),
- mad_dump_val(IB_PORT_LINK_SPEED_ACTIVE_F, speed, 64,
&ispeed),
- mad_dump_val(IB_PORT_STATE_F, state, 64, &istate),
- mad_dump_val(IB_PORT_PHYS_STATE_F, physstate, 64,
&iphystate));
+ n = snprintf(link_str, 256, "(%3s",
+ mad_dump_val(IB_PORT_LINK_WIDTH_ACTIVE_F, width, 64,
+ &iwidth));
+
+ if (ispeed & 0xF0) {
+ ispeed >>= 4;
+ n += snprintf(link_str + n, 256 - n, " %12s",
+ mad_dump_val(IB_PORT_LINK_SPEED_EXT_ACTIVE_F,
speed, 64,
+ &ispeed));
+ } else {
+ n += snprintf(link_str + n, 256 - n, " %12s",
+ mad_dump_val(IB_PORT_LINK_SPEED_ACTIVE_F,
speed, 64,
+ &ispeed));
+ }
+
+ snprintf(link_str + n, 256 - n, " %6s/%8s)",
+ mad_dump_val(IB_PORT_STATE_F, state, 64, &istate),
+ mad_dump_val(IB_PORT_PHYS_STATE_F, physstate, 64,
+ &iphystate));
} else {
snprintf(link_str, 256, "( %6s/%8s)",
mad_dump_val(IB_PORT_STATE_F, state, 64, &istate),
--
1.7.1
--
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