From: Ira Weiny <[email protected]>
Date: Thu, 13 Aug 2009 19:54:00 -0700
Subject: [PATCH] libibnetdisc: make all fields of ibnd_port_t public


Signed-off-by: Ira Weiny <[email protected]>
---
 .../libibnetdisc/include/infiniband/ibnetdisc.h    |   15 ++--
 infiniband-diags/libibnetdisc/src/ibnetdisc.c      |   87 ++++++++++----------
 infiniband-diags/libibnetdisc/src/internal.h       |   11 +--
 3 files changed, 52 insertions(+), 61 deletions(-)

diff --git a/infiniband-diags/libibnetdisc/include/infiniband/ibnetdisc.h 
b/infiniband-diags/libibnetdisc/include/infiniband/ibnetdisc.h
index e7f5f6a..4a57855 100644
--- a/infiniband-diags/libibnetdisc/include/infiniband/ibnetdisc.h
+++ b/infiniband-diags/libibnetdisc/include/infiniband/ibnetdisc.h
@@ -40,7 +40,7 @@
 
 struct ib_fabric;              /* forward declare */
 struct chassis;                        /* forward declare */
-struct port;                   /* forward declare */
+struct ibnd_port;              /* forward declare */
 
 /** =========================================================================
  * Node
@@ -67,7 +67,7 @@ typedef struct ibnd_node {
 
        char nodedesc[IB_SMP_DATA_SIZE];
 
-       struct port **ports;    /* in order array of port pointers
+       struct ibnd_port **ports; /* in order array of port pointers
                                   the size of this array is info.numports + 1
                                   items MAY BE NULL!  (ie 0 == switches only) 
*/
 
@@ -89,17 +89,20 @@ typedef struct ibnd_node {
 /** =========================================================================
  * Port
  */
-typedef struct port {
+typedef struct ibnd_port {
        uint64_t guid;
        int portnum;
-       int ext_portnum;        /* optional if != 0 external port num */
-       ibnd_node_t *node;      /* node this port belongs to */
-       struct port *remoteport;        /* null if SMA, or does not exist */
+       int ext_portnum; /* optional if != 0 external port num */
+       ibnd_node_t *node; /* node this port belongs to */
+       struct ibnd_port *remoteport; /* null if SMA, or does not exist */
        /* quick cache of info below */
        uint16_t base_lid;
        uint8_t lmc;
        /* use libibmad decoder functions for info */
        uint8_t info[IB_SMP_DATA_SIZE];
+
+       /* internal use only */
+       struct ibnd_port *htnext;
 } ibnd_port_t;
 
 /** =========================================================================
diff --git a/infiniband-diags/libibnetdisc/src/ibnetdisc.c 
b/infiniband-diags/libibnetdisc/src/ibnetdisc.c
index b883d4a..1fc964c 100644
--- a/infiniband-diags/libibnetdisc/src/ibnetdisc.c
+++ b/infiniband-diags/libibnetdisc/src/ibnetdisc.c
@@ -67,28 +67,28 @@ void decode_port_info(ibnd_port_t * port)
 }
 
 static int get_port_info(struct ibmad_port *ibmad_port,
-                        struct ibnd_fabric *fabric, struct ibnd_port *port,
+                        struct ibnd_fabric *fabric, ibnd_port_t * port,
                         int portnum, ib_portid_t * portid)
 {
        char width[64], speed[64];
        int iwidth;
        int ispeed;
 
-       port->port.portnum = portnum;
-       iwidth = mad_get_field(port->port.info, 0, IB_PORT_LINK_WIDTH_ACTIVE_F);
-       ispeed = mad_get_field(port->port.info, 0, IB_PORT_LINK_SPEED_ACTIVE_F);
+       port->portnum = portnum;
+       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);
 
-       if (!smp_query_via(port->port.info, portid, IB_ATTR_PORT_INFO,
+       if (!smp_query_via(port->info, portid, IB_ATTR_PORT_INFO,
                           portnum, 0, ibmad_port))
                return -1;
 
-       decode_port_info(&(port->port));
+       decode_port_info(port);
 
        IBND_DEBUG
            ("portid %s portnum %d: base lid %d state %d physstate %d %s %s\n",
-            portid2str(portid), portnum, port->port.base_lid,
-            mad_get_field(port->port.info, 0, IB_PORT_STATE_F),
-            mad_get_field(port->port.info, 0, IB_PORT_PHYS_STATE_F),
+            portid2str(portid), portnum, port->base_lid,
+            mad_get_field(port->info, 0, IB_PORT_STATE_F),
+            mad_get_field(port->info, 0, IB_PORT_PHYS_STATE_F),
             mad_dump_val(IB_PORT_LINK_WIDTH_ACTIVE_F, width, 64, &iwidth),
             mad_dump_val(IB_PORT_LINK_SPEED_ACTIVE_F, speed, 64, &ispeed));
        return 0;
@@ -117,11 +117,10 @@ static int query_node_info(struct ibmad_port *ibmad_port,
  * Returns 0 if non switch node is found, 1 if switch is found, -1 if error.
  */
 static int query_node(struct ibmad_port *ibmad_port, struct ibnd_fabric 
*fabric,
-                     ibnd_node_t * node, struct ibnd_port *iport,
+                     ibnd_node_t * node, ibnd_port_t * port,
                      ib_portid_t * portid)
 {
        int rc = 0;
-       ibnd_port_t *port = &(iport->port);
        void *nd = node->nodedesc;
 
        if ((rc = query_node_info(ibmad_port, fabric, node, portid)) != 0)
@@ -202,7 +201,7 @@ static int extend_dpath(struct ibmad_port *ibmad_port, 
struct ibnd_fabric *f,
 }
 
 static void dump_endnode(ib_portid_t * path, char *prompt,
-                        ibnd_node_t * node, struct ibnd_port *port)
+                        ibnd_node_t * node, ibnd_port_t * port)
 {
        char type[64];
        if (!show_progress)
@@ -212,10 +211,9 @@ static void dump_endnode(ib_portid_t * path, char *prompt,
            printf("%s -> %s %s {%016" PRIx64
                   "} portnum %d base lid %d-%d\"%s\"\n", portid2str(path),
                   prompt, type, node->guid,
-                  node->type == IB_NODE_SWITCH ? 0 : port->port.portnum,
-                  port->port.base_lid,
-                  port->port.base_lid + (1 << port->port.lmc) - 1,
-                  node->nodedesc);
+                  node->type == IB_NODE_SWITCH ? 0 : port->portnum,
+                  port->base_lid,
+                  port->base_lid + (1 << port->lmc) - 1, node->nodedesc);
 }
 
 static ibnd_node_t *find_existing_node(struct ibnd_fabric *fabric,
@@ -294,7 +292,7 @@ ibnd_node_t *ibnd_update_node(struct ibmad_port * 
ibmad_port,
 
        /* update all the port info's */
        for (p = 1; p >= node->numports; p++) {
-               get_port_info(ibmad_port, f, CONV_PORT_INTERNAL(node->ports[p]),
+               get_port_info(ibmad_port, f, node->ports[p],
                              p, &(node->path_portid));
        }
 
@@ -363,10 +361,9 @@ static void add_to_nodeguid_hash(ibnd_node_t * node, 
ibnd_node_t * hash[])
        hash[hash_idx] = node;
 }
 
-static void add_to_portguid_hash(struct ibnd_port *port,
-                                struct ibnd_port *hash[])
+static void add_to_portguid_hash(ibnd_port_t * port, ibnd_port_t * hash[])
 {
-       int hash_idx = HASHGUID(port->port.guid) % HTSZ;
+       int hash_idx = HASHGUID(port->guid) % HTSZ;
 
        port->htnext = hash[hash_idx];
        hash[hash_idx] = port;
@@ -429,19 +426,19 @@ static ibnd_node_t *create_node(struct ibnd_fabric 
*fabric,
 }
 
 static struct ibnd_port *find_existing_port_node(ibnd_node_t * node,
-                                                struct ibnd_port *port)
+                                                ibnd_port_t * port)
 {
-       if (port->port.portnum > node->numports || node->ports == NULL)
+       if (port->portnum > node->numports || node->ports == NULL)
                return (NULL);
 
-       return (CONV_PORT_INTERNAL(node->ports[port->port.portnum]));
+       return (node->ports[port->portnum]);
 }
 
 static struct ibnd_port *add_port_to_node(struct ibnd_fabric *fabric,
                                          ibnd_node_t * node,
-                                         struct ibnd_port *temp)
+                                         ibnd_port_t * temp)
 {
-       struct ibnd_port *port;
+       ibnd_port_t *port;
 
        if (node->ports == NULL) {
                node->ports = calloc(sizeof(*node->ports), node->numports + 1);
@@ -458,40 +455,40 @@ static struct ibnd_port *add_port_to_node(struct 
ibnd_fabric *fabric,
        }
 
        memcpy(port, temp, sizeof(*port));
-       port->port.node = (ibnd_node_t *) node;
-       port->port.ext_portnum = 0;
+       port->node = (ibnd_node_t *) node;
+       port->ext_portnum = 0;
 
-       node->ports[temp->port.portnum] = (ibnd_port_t *) port;
+       node->ports[temp->portnum] = (ibnd_port_t *) port;
 
        add_to_portguid_hash(port, fabric->portstbl);
        return port;
 }
 
-static void link_ports(ibnd_node_t * node, struct ibnd_port *port,
-                      ibnd_node_t * remotenode, struct ibnd_port *remoteport)
+static void link_ports(ibnd_node_t * node, ibnd_port_t * port,
+                      ibnd_node_t * remotenode, ibnd_port_t * remoteport)
 {
        IBND_DEBUG("linking: 0x%" PRIx64 " %p->%p:%u and 0x%" PRIx64
-                  " %p->%p:%u\n", node->guid, node, port, port->port.portnum,
+                  " %p->%p:%u\n", node->guid, node, port, port->portnum,
                   remotenode->guid, remotenode, remoteport,
-                  remoteport->port.portnum);
-       if (port->port.remoteport)
-               port->port.remoteport->remoteport = NULL;
-       if (remoteport->port.remoteport)
-               remoteport->port.remoteport->remoteport = NULL;
-       port->port.remoteport = (ibnd_port_t *) remoteport;
-       remoteport->port.remoteport = (ibnd_port_t *) port;
+                  remoteport->portnum);
+       if (port->remoteport)
+               port->remoteport->remoteport = NULL;
+       if (remoteport->remoteport)
+               remoteport->remoteport->remoteport = NULL;
+       port->remoteport = (ibnd_port_t *) remoteport;
+       remoteport->remoteport = (ibnd_port_t *) port;
 }
 
 static int get_remote_node(struct ibmad_port *ibmad_port,
                           struct ibnd_fabric *fabric, ibnd_node_t * node,
-                          struct ibnd_port *port, ib_portid_t * path,
+                          ibnd_port_t * port, ib_portid_t * path,
                           int portnum, int dist)
 {
        int rc = 0;
        ibnd_node_t node_buf;
-       struct ibnd_port port_buf;
+       ibnd_port_t port_buf;
        ibnd_node_t *remotenode, *oldnode;
-       struct ibnd_port *remoteport, *oldport;
+       ibnd_port_t *remoteport, *oldport;
 
        memset(&node_buf, 0, sizeof(node_buf));
        memset(&port_buf, 0, sizeof(port_buf));
@@ -499,7 +496,7 @@ static int get_remote_node(struct ibmad_port *ibmad_port,
        IBND_DEBUG("handle node %p port %p:%d dist %d\n", node, port, portnum,
                   dist);
 
-       if (mad_get_field(port->port.info, 0, IB_PORT_PHYS_STATE_F)
+       if (mad_get_field(port->info, 0, IB_PORT_PHYS_STATE_F)
            != IB_PORT_PHYS_STATE_LINKUP)
                return 1;       /* positive == non-fatal error */
 
@@ -548,9 +545,9 @@ ibnd_fabric_t *ibnd_discover_fabric(struct ibmad_port * 
ibmad_port,
        struct ibnd_fabric *fabric = NULL;
        ib_portid_t my_portid = { 0 };
        ibnd_node_t node_buf;
-       struct ibnd_port port_buf;
+       ibnd_port_t port_buf;
        ibnd_node_t *node;
-       struct ibnd_port *port;
+       ibnd_port_t *port;
        int i;
        int dist = 0;
        ib_portid_t *path;
@@ -638,7 +635,7 @@ ibnd_fabric_t *ibnd_discover_fabric(struct ibmad_port * 
ibmad_port,
 
                                /* If switch, set port GUID to node port GUID */
                                if (node->type == IB_NODE_SWITCH) {
-                                       port->port.guid =
+                                       port->guid =
                                            mad_get_field64(node->info, 0,
                                                            
IB_NODE_PORT_GUID_F);
                                }
diff --git a/infiniband-diags/libibnetdisc/src/internal.h 
b/infiniband-diags/libibnetdisc/src/internal.h
index 449bd70..f06d2c3 100644
--- a/infiniband-diags/libibnetdisc/src/internal.h
+++ b/infiniband-diags/libibnetdisc/src/internal.h
@@ -49,15 +49,6 @@
 #define        IBND_ERROR(fmt, ...) \
                fprintf(stderr, "%s:%u; " fmt, __FILE__, __LINE__, ## 
__VA_ARGS__)
 
-struct ibnd_port {
-       /* This member MUST BE FIRST */
-       ibnd_port_t port;
-
-       /* internal use only */
-       struct ibnd_port *htnext;
-};
-#define CONV_PORT_INTERNAL(port) ((struct ibnd_port *)port)
-
 /* HASH table defines */
 #define HASHGUID(guid) ((uint32_t)(((uint32_t)(guid) * 101) ^ 
((uint32_t)((guid) >> 32) * 103)))
 #define HTSZ 137
@@ -68,7 +59,7 @@ struct ibnd_fabric {
 
        /* internal use only */
        ibnd_node_t *nodestbl[HTSZ];
-       struct ibnd_port *portstbl[HTSZ];
+       ibnd_port_t *portstbl[HTSZ];
        ibnd_node_t *nodesdist[MAXHOPS + 1];
        ibnd_chassis_t *first_chassis;
        ibnd_chassis_t *current_chassis;
-- 
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