Signed-off-by: Hal Rosenstock <[email protected]>
---
diff --git a/man/smpquery.8 b/man/smpquery.8
index afd02db..c4cb8f2 100644
--- a/man/smpquery.8
+++ b/man/smpquery.8
@@ -6,8 +6,8 @@ smpquery \- query InfiniBand subnet management attributes
 .SH SYNOPSIS
 .B smpquery
 [\-d(ebug)] [\-e(rr_show)] [\-v(erbose)] [\-D(irect)] [\-G(uid)]
-[\-C ca_name] [\-P ca_port] [\-t(imeout) timeout_ms]
-[--node-name-map node-name-map] [\-V(ersion)] [\-h(elp)]
+[\-x|\-\-extended] [\-C ca_name] [\-P ca_port] [\-t(imeout) timeout_ms]
+[\-\-node-name-map node-name-map] [\-V(ersion)] [\-h(elp)]
 <op> <dest dr_path|lid|guid> [op params]
 
 .SH DESCRIPTION
@@ -32,6 +32,11 @@ Current supported operations and their parameters:
         mlnxextportinfo <addr> [<portnum>]  # default port is zero
 
 .TP
+\fB\-x\fR, \fB\-\-extended\fR
+Set SMSupportsExtendedSpeeds bit 31 in AttributeModifier
+(only impacts PortInfo queries).
+
+.TP
 \fB\-\-node\-name\-map\fR <node-name-map>
 Specify a node name map.  The node name map file maps GUIDs to more
 user friendly names.  See
diff --git a/src/smpquery.c b/src/smpquery.c
index 6753ba9..cecfa68 100644
--- a/src/smpquery.c
+++ b/src/smpquery.c
@@ -80,6 +80,7 @@ static const match_rec_t match_tbl[] = {
 
 static char *node_name_map_file = NULL;
 static nn_map_t *node_name_map = NULL;
+static int extended_speeds = 0;
 
 /*******************************************/
 static char *node_desc(ib_portid_t * dest, char **argv, int argc)
@@ -134,17 +135,20 @@ static char *port_info(ib_portid_t * dest, char **argv, 
int argc)
 {
        char buf[2300];
        char data[IB_SMP_DATA_SIZE] = { 0 };
-       int portnum = 0;
+       int portnum = 0, orig_portnum;
 
        if (argc > 0)
                portnum = strtol(argv[0], 0, 0);
+       orig_portnum = portnum;
+       if (extended_speeds)
+               portnum |= 1 << 31;
 
        if (!smp_query_via(data, dest, IB_ATTR_PORT_INFO, portnum, 0, srcport))
                return "port info query failed";
 
        mad_dump_portinfo(buf, sizeof buf, data, sizeof data);
 
-       printf("# Port info: %s port %d\n%s", portid2str(dest), portnum, buf);
+       printf("# Port info: %s port %d\n%s", portid2str(dest), orig_portnum, 
buf);
        return 0;
 }
 
@@ -414,6 +418,9 @@ static int process_opt(void *context, int ch, char *optarg)
        case 'c':
                ibd_dest_type = IB_DEST_DRSLID;
                break;
+       case 'x':
+               extended_speeds = 1;
+               break;
        default:
                return -1;
        }
@@ -435,6 +442,7 @@ int main(int argc, char **argv)
                {"combined", 'c', 0, NULL,
                 "use Combined route address argument"},
                {"node-name-map", 1, 1, "<file>", "node name map file"},
+               {"extended", 'x', 0, NULL, "use extended speeds"},
                {0}
        };
        const char *usage_examples[] = {
--
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

Reply via email to