On Fri, 20 Feb 2009 09:23:50 -0800
Ira Weiny <[email protected]> wrote:

> On Fri, 20 Feb 2009 08:55:57 -0500
> Hal Rosenstock <[email protected]> wrote:
> 
> > On Thu, Feb 19, 2009 at 10:05 PM, Ira Weiny <[email protected]> wrote:
> > > Here is v2 of the patch series.
> > >
> > > I used __attribute__ ((deprecated)) on the functions which should aid 
> > > others
> > > in realizing that these functions will go away.  (It sure helped me to 
> > > convert
> > > all the diags.
> > >
> > > Also I did _not_ convert ibnetdiscover as my new libibnetdisc already 
> > > uses the
> > > new interface and I am hoping it will be accepted soon.
> > 
> > A related issue is whether ibnetdiscover will support both the new
> > library and the old way until the library is more proven via some
> > build option. If it is to support both, then converting it should be
> > done.
> 
> The conversion is easy.  I will do it for now to remove the build warnings.
> And now that I think about it more leaving in the old and new code to be
> chosen via configure is probably not a bad idea.  I don't know what is going
> to happen once we standardize on the mad library for decoding strings.  There
> are some incompatibilities there (ie 1x vs 1X and 2.5Gbps vs SDR etc.)
> 
> I will say, however, that I tested the library extensively and the first
> version's output was identical to the old version with the sole exception of
> the order ports were printed in.  :-D  So my confidence is high it will be
> accepted sooner rather than later.
> 
> Ira


Patch below:

>From ad8cbf227a803d64c02872f74d7d542b815c6092 Mon Sep 17 00:00:00 2001
From: Ira Weiny <[email protected]>
Date: Fri, 20 Feb 2009 14:43:48 -0800
Subject: [PATCH] infiniband-diags: convert ibnetdiscover to "new" ibmad 
interface


Signed-off-by: Ira Weiny <[email protected]>
---
 infiniband-diags/src/ibnetdiscover.c |   23 ++++++++++++++++-------
 1 files changed, 16 insertions(+), 7 deletions(-)

diff --git a/infiniband-diags/src/ibnetdiscover.c 
b/infiniband-diags/src/ibnetdiscover.c
index 466d522..8a840be 100644
--- a/infiniband-diags/src/ibnetdiscover.c
+++ b/infiniband-diags/src/ibnetdiscover.c
@@ -53,6 +53,8 @@
 #include "grouping.h"
 #include "ibdiag_common.h"
 
+struct ibmad_port *srcport;
+
 static char *node_type_str[] = {
        "???",
        "ca",
@@ -143,7 +145,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;
        decode_port_info(pi, port);
 
@@ -162,7 +165,7 @@ get_node(Node *node, Port *port, ib_portid_t *portid)
        void *pi = portinfo, *ni = node->nodeinfo, *nd = node->nodedesc;
        void *si = switchinfo;
 
-       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;
 
        mad_decode_field(ni, IB_NODE_GUID_F, &node->nodeguid);
@@ -176,10 +179,10 @@ get_node(Node *node, Port *port, ib_portid_t *portid)
        port->portnum = node->localport;
        port->portguid = node->portguid;
 
-       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;
 
-       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;
        decode_port_info(pi, port);
 
@@ -190,11 +193,12 @@ get_node(Node *node, Port *port, ib_portid_t *portid)
        node->smalmc = port->lmc;
 
        /* after we have the sma information find out the real PortInfo for 
this port */
-       if (!smp_query(pi, portid, IB_ATTR_PORT_INFO, node->localport, timeout))
+       if (!smp_query_via(pi, portid, IB_ATTR_PORT_INFO, node->localport,
+                       timeout, srcport))
                return -1;
        decode_port_info(pi, port);
 
-        if (!smp_query(si, portid, IB_ATTR_SWITCH_INFO, 0, timeout))
+        if (!smp_query_via(si, portid, IB_ATTR_SWITCH_INFO, 0, timeout, 
srcport))
                 node->smaenhsp0 = 0;   /* assume base SP0 */
        else
                mad_decode_field(si, IB_SW_ENHANCED_PORT0_F, &node->smaenhsp0);
@@ -985,7 +989,11 @@ int main(int argc, char **argv)
        if (argc && !(f = fopen(argv[0], "w")))
                IBERROR("can't open file %s for writing", argv[0]);
 
-       madrpc_init(ibd_ca, ibd_ca_port, mgmt_classes, 2);
+       srcport = mad_rpc_open_port(ibd_ca, ibd_ca_port, mgmt_classes, 2);
+       if (!srcport)
+               IBERROR("Failed to open '%s' port '%d'", ibd_ca, ibd_ca_port);
+       mad_rpc_set_timeout(ibd_timeout, srcport);
+
        node_name_map = open_node_name_map(node_name_map_file);
 
        if (discover(&my_portid) < 0)
@@ -1000,5 +1008,6 @@ int main(int argc, char **argv)
                dump_topology(list, group);
 
        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