>From 0961e0ce048950e65bb78578538cff38b2c8332d Mon Sep 17 00:00:00 2001
From: Ira Weiny <[email protected]>
Date: Thu, 19 Feb 2009 17:58:36 -0800
Subject: [PATCH] infiniband-diags: Convert ibtracert to "new" ibmad interface


Signed-off-by: Ira Weiny <[email protected]>
---
 infiniband-diags/src/ibtracert.c |   36 ++++++++++++++++++++++++------------
 1 files changed, 24 insertions(+), 12 deletions(-)

diff --git a/infiniband-diags/src/ibtracert.c b/infiniband-diags/src/ibtracert.c
index ea5662b..1965aa0 100644
--- a/infiniband-diags/src/ibtracert.c
+++ b/infiniband-diags/src/ibtracert.c
@@ -50,6 +50,8 @@
 
 #include "ibdiag_common.h"
 
+struct ibmad_port *srcport;
+
 #define MAXHOPS        63
 
 static char *node_type_str[] = {
@@ -116,10 +118,10 @@ get_node(Node *node, Port *port, ib_portid_t *portid)
        void *pi = port->portinfo, *ni = node->nodeinfo, *nd = node->nodedesc;
        char *s, *e;
 
-       if (!smp_query(ni, portid, IB_ATTR_NODE_INFO, 0, timeout))
+       if (!smp_query_via(ni, portid, IB_ATTR_NODE_INFO, 0, timeout, srcport))
                return -1;
 
-       if (!smp_query(nd, portid, IB_ATTR_NODE_DESC, 0, timeout))
+       if (!smp_query_via(nd, portid, IB_ATTR_NODE_DESC, 0, timeout, srcport))
                return -1;
 
        for (s = nd, e = s + 64; s < e; s++) {
@@ -129,7 +131,7 @@ get_node(Node *node, Port *port, ib_portid_t *portid)
                        *s = ' ';
        }
 
-       if (!smp_query(pi, portid, IB_ATTR_PORT_INFO, 0, timeout))
+       if (!smp_query_via(pi, portid, IB_ATTR_PORT_INFO, 0, timeout, srcport))
                return -1;
 
        mad_decode_field(ni, IB_NODE_GUID_F, &node->nodeguid);
@@ -151,7 +153,7 @@ switch_lookup(Switch *sw, ib_portid_t *portid, int lid)
 {
        void *si = sw->switchinfo, *fdb = sw->fdb;
 
-       if (!smp_query(si, portid, IB_ATTR_SWITCH_INFO, 0, timeout))
+       if (!smp_query_via(si, portid, IB_ATTR_SWITCH_INFO, 0, timeout, 
srcport))
                return -1;
 
        mad_decode_field(si, IB_SW_LINEAR_FDB_CAP_F, &sw->linearcap);
@@ -160,7 +162,8 @@ switch_lookup(Switch *sw, ib_portid_t *portid, int lid)
        if (lid > sw->linearcap && lid > sw->linearFDBtop)
                return -1;
 
-       if (!smp_query(fdb, portid, IB_ATTR_LINEARFORWTBL, lid / 64, timeout))
+       if (!smp_query_via(fdb, portid, IB_ATTR_LINEARFORWTBL, lid / 64,
+                       timeout, srcport))
                return -1;
 
        DEBUG("portid %s: forward lid %d to port %d",
@@ -382,7 +385,8 @@ get_port(Port *port, int portnum, ib_portid_t *portid)
 
        port->portnum = portnum;
 
-       if (!smp_query(pi, portid, IB_ATTR_PORT_INFO, portnum, timeout))
+       if (!smp_query_via(pi, portid, IB_ATTR_PORT_INFO, portnum, timeout,
+                       srcport))
                return -1;
 
        mad_decode_field(pi, IB_PORT_LID_F, &port->lid);
@@ -439,7 +443,7 @@ switch_mclookup(Node *node, ib_portid_t *portid, int mlid, 
char *map)
 
        memset(map, 0, 256);
 
-       if (!smp_query(si, portid, IB_ATTR_SWITCH_INFO, 0, timeout))
+       if (!smp_query_via(si, portid, IB_ATTR_SWITCH_INFO, 0, timeout, 
srcport))
                return -1;
 
        mlid -= 0xc000;
@@ -453,8 +457,8 @@ switch_mclookup(Node *node, ib_portid_t *portid, int mlid, 
char *map)
        maxsets = (node->numports + 15) / 16;           /* round up */
 
        for (set = 0; set < maxsets; set++) {
-               if (!smp_query(mdb, portid, IB_ATTR_MULTICASTFORWTBL,
-                   block | (set << 28), timeout))
+               if (!smp_query_via(mdb, portid, IB_ATTR_MULTICASTFORWTBL,
+                   block | (set << 28), timeout, srcport))
                        return -1;
 
                for (i = 0; i < 16; i++, map++) {
@@ -746,13 +750,18 @@ int main(int argc, char **argv)
        if (ibd_timeout)
                timeout = ibd_timeout;
 
-       madrpc_init(ibd_ca, ibd_ca_port, mgmt_classes, 3);
+       srcport = mad_rpc_open_port(ibd_ca, ibd_ca_port, mgmt_classes, 3);
+       if (!srcport)
+               IBERROR("Failed to open '%s' port '%d'", ibd_ca, ibd_ca_port);
+
        node_name_map = open_node_name_map(node_name_map_file);
 
-       if (ib_resolve_portid_str(&src_portid, argv[0], ibd_dest_type, 
ibd_sm_id) < 0)
+       if (ib_resolve_portid_str_via(&src_portid, argv[0], ibd_dest_type,
+                       ibd_sm_id, srcport) < 0)
                IBERROR("can't resolve source port %s", argv[0]);
 
-       if (ib_resolve_portid_str(&dest_portid, argv[1], ibd_dest_type, 
ibd_sm_id) < 0)
+       if (ib_resolve_portid_str_via(&dest_portid, argv[1], ibd_dest_type,
+                       ibd_sm_id, srcport) < 0)
                IBERROR("can't resolve destination port %s", argv[1]);
 
        if (ibd_dest_type == IB_DEST_DRPATH) {
@@ -796,5 +805,8 @@ int main(int argc, char **argv)
        dump_mcpath(endnode, dumplevel);
 
        close_node_name_map(node_name_map);
+
+       mad_rpc_close_port(srcport);
+
        exit(0);
 }
-- 
1.5.4.5

_______________________________________________
general mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

Reply via email to