On 20:42 Thu 13 Aug , Ira Weiny wrote: > It would be really nice to have a commit message (in addition to subject) for each patch. Cover email ([PATH 0/N]) is not saved in change history.
> From: Ira Weiny <[email protected]> > Date: Tue, 11 Aug 2009 15:15:21 -0700 > Subject: [PATCH] libibnetdisc: make all fields of ibnd_node_t public > > > Signed-off-by: Ira Weiny <[email protected]> Applied. Thanks. Sasha > --- > .../libibnetdisc/include/infiniband/ibnetdisc.h | 12 +- > infiniband-diags/libibnetdisc/src/chassis.c | 147 ++++++++--------- > infiniband-diags/libibnetdisc/src/ibnetdisc.c | 173 > ++++++++++---------- > infiniband-diags/libibnetdisc/src/internal.h | 22 +-- > 4 files changed, 166 insertions(+), 188 deletions(-) > > diff --git a/infiniband-diags/libibnetdisc/include/infiniband/ibnetdisc.h > b/infiniband-diags/libibnetdisc/include/infiniband/ibnetdisc.h > index 121709d..e7f5f6a 100644 > --- a/infiniband-diags/libibnetdisc/include/infiniband/ibnetdisc.h > +++ b/infiniband-diags/libibnetdisc/include/infiniband/ibnetdisc.h > @@ -45,8 +45,8 @@ struct port; /* forward declare */ > /** ========================================================================= > * Node > */ > -typedef struct node { > - struct node *next; /* all node list in fabric */ > +typedef struct ibnd_node { > + struct ibnd_node *next; /* all node list in fabric */ > > ib_portid_t path_portid; /* path from "from_node" */ > int dist; /* num of hops from "from_node" */ > @@ -72,12 +72,18 @@ typedef struct node { > items MAY BE NULL! (ie 0 == switches only) > */ > > /* chassis info */ > - struct node *next_chassis_node; /* next node in ibnd_chassis_t->nodes */ > + struct ibnd_node *next_chassis_node; /* next node in > ibnd_chassis_t->nodes */ > struct chassis *chassis; /* if != NULL the chassis this node > belongs to */ > unsigned char ch_type; > unsigned char ch_anafanum; > unsigned char ch_slotnum; > unsigned char ch_slot; > + > + /* internal use only */ > + unsigned char ch_found; > + struct ibnd_node *htnext; /* hash table list */ > + struct ibnd_node *dnext; /* nodesdist next */ > + struct ibnd_node *type_next; /* next based on type */ > } ibnd_node_t; > > /** ========================================================================= > diff --git a/infiniband-diags/libibnetdisc/src/chassis.c > b/infiniband-diags/libibnetdisc/src/chassis.c > index 120b4b6..0dd259a 100644 > --- a/infiniband-diags/libibnetdisc/src/chassis.c > +++ b/infiniband-diags/libibnetdisc/src/chassis.c > @@ -239,68 +239,68 @@ uint64_t ibnd_get_chassis_guid(ibnd_fabric_t * fabric, > unsigned char chassisnum) > return 0; > } > > -static int is_router(struct ibnd_node *n) > +static int is_router(ibnd_node_t * n) > { > - uint32_t devid = mad_get_field(n->node.info, 0, IB_NODE_DEVID_F); > + uint32_t devid = mad_get_field(n->info, 0, IB_NODE_DEVID_F); > return (devid == VTR_DEVID_IB_FC_ROUTER || > devid == VTR_DEVID_IB_IP_ROUTER); > } > > -static int is_spine_9096(struct ibnd_node *n) > +static int is_spine_9096(ibnd_node_t * n) > { > - uint32_t devid = mad_get_field(n->node.info, 0, IB_NODE_DEVID_F); > + uint32_t devid = mad_get_field(n->info, 0, IB_NODE_DEVID_F); > return (devid == VTR_DEVID_SFB4 || devid == VTR_DEVID_SFB4_DDR); > } > > -static int is_spine_9288(struct ibnd_node *n) > +static int is_spine_9288(ibnd_node_t * n) > { > - uint32_t devid = mad_get_field(n->node.info, 0, IB_NODE_DEVID_F); > + uint32_t devid = mad_get_field(n->info, 0, IB_NODE_DEVID_F); > return (devid == VTR_DEVID_SFB12 || devid == VTR_DEVID_SFB12_DDR); > } > > -static int is_spine_2004(struct ibnd_node *n) > +static int is_spine_2004(ibnd_node_t * n) > { > - uint32_t devid = mad_get_field(n->node.info, 0, IB_NODE_DEVID_F); > + uint32_t devid = mad_get_field(n->info, 0, IB_NODE_DEVID_F); > return (devid == VTR_DEVID_SFB2004); > } > > -static int is_spine_2012(struct ibnd_node *n) > +static int is_spine_2012(ibnd_node_t * n) > { > - uint32_t devid = mad_get_field(n->node.info, 0, IB_NODE_DEVID_F); > + uint32_t devid = mad_get_field(n->info, 0, IB_NODE_DEVID_F); > return (devid == VTR_DEVID_SFB2012); > } > > -static int is_spine(struct ibnd_node *n) > +static int is_spine(ibnd_node_t * n) > { > return (is_spine_9096(n) || is_spine_9288(n) || > is_spine_2004(n) || is_spine_2012(n)); > } > > -static int is_line_24(struct ibnd_node *n) > +static int is_line_24(ibnd_node_t * n) > { > - uint32_t devid = mad_get_field(n->node.info, 0, IB_NODE_DEVID_F); > - return (devid == VTR_DEVID_SLB24 || devid == VTR_DEVID_SLB24_DDR || > - devid == VTR_DEVID_SRB2004); > + uint32_t devid = mad_get_field(n->info, 0, IB_NODE_DEVID_F); > + return (devid == VTR_DEVID_SLB24 || > + devid == VTR_DEVID_SLB24_DDR || devid == VTR_DEVID_SRB2004); > } > > -static int is_line_8(struct ibnd_node *n) > +static int is_line_8(ibnd_node_t * n) > { > - uint32_t devid = mad_get_field(n->node.info, 0, IB_NODE_DEVID_F); > + uint32_t devid = mad_get_field(n->info, 0, IB_NODE_DEVID_F); > return (devid == VTR_DEVID_SLB8); > } > > -static int is_line_2024(struct ibnd_node *n) > +static int is_line_2024(ibnd_node_t * n) > { > - uint32_t devid = mad_get_field(n->node.info, 0, IB_NODE_DEVID_F); > + uint32_t devid = mad_get_field(n->info, 0, IB_NODE_DEVID_F); > return (devid == VTR_DEVID_SLB2024); > } > > -static int is_line(struct ibnd_node *n) > +static int is_line(ibnd_node_t * n) > { > return (is_line_24(n) || is_line_8(n) || is_line_2024(n)); > } > > -int is_chassis_switch(struct ibnd_node *n) > +int is_chassis_switch(ibnd_node_t * n) > { > return (is_spine(n) || is_line(n)); > } > @@ -349,7 +349,7 @@ char anafa_spine4_slot_2_slb[25] = { > > /* reference { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, > 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24 }; */ > > -static int get_sfb_slot(struct ibnd_node *node, ibnd_port_t * lineport) > +static int get_sfb_slot(ibnd_node_t * node, ibnd_port_t * lineport) > { > ibnd_node_t *n = (ibnd_node_t *) node; > > @@ -372,25 +372,24 @@ static int get_sfb_slot(struct ibnd_node *node, > ibnd_port_t * lineport) > n->ch_anafanum = anafa_spine4_slot_2_slb[lineport->portnum]; > } else { > IBND_ERROR("Unexpected node found: guid 0x%016" PRIx64, > - node->node.guid); > + node->guid); > return (-1); > } > return (0); > } > > -static int get_router_slot(struct ibnd_node *node, ibnd_port_t * spineport) > +static int get_router_slot(ibnd_node_t * n, ibnd_port_t * spineport) > { > - ibnd_node_t *n = (ibnd_node_t *) node; > uint64_t guessnum = 0; > > - node->ch_found = 1; > + n->ch_found = 1; > > n->ch_slot = SRBD_CS; > - if (is_spine_9096(CONV_NODE_INTERNAL(spineport->node))) { > + if (is_spine_9096(spineport->node)) { > n->ch_type = ISR9096_CT; > n->ch_slotnum = line_slot_2_sfb4[spineport->portnum]; > n->ch_anafanum = ipr_slot_2_sfb4_port[spineport->portnum]; > - } else if (is_spine_9288(CONV_NODE_INTERNAL(spineport->node))) { > + } else if (is_spine_9288(spineport->node)) { > n->ch_type = ISR9288_CT; > n->ch_slotnum = line_slot_2_sfb12[spineport->portnum]; > /* this is a smart guess based on nodeguids order on sFB-12 > module */ > @@ -399,7 +398,7 @@ static int get_router_slot(struct ibnd_node *node, > ibnd_port_t * spineport) > /* module 2 <--> remote anafa 2 */ > /* module 3 <--> remote anafa 1 */ > n->ch_anafanum = (guessnum == 3 ? 1 : (guessnum == 1 ? 3 : 2)); > - } else if (is_spine_2012(CONV_NODE_INTERNAL(spineport->node))) { > + } else if (is_spine_2012(spineport->node)) { > n->ch_type = ISR2012_CT; > n->ch_slotnum = line_slot_2_sfb12[spineport->portnum]; > /* this is a smart guess based on nodeguids order on sFB-12 > module */ > @@ -408,7 +407,7 @@ static int get_router_slot(struct ibnd_node *node, > ibnd_port_t * spineport) > // module 2 <--> remote anafa 2 > // module 3 <--> remote anafa 1 > n->ch_anafanum = (guessnum == 3 ? 1 : (guessnum == 1 ? 3 : 2)); > - } else if (is_spine_2004(CONV_NODE_INTERNAL(spineport->node))) { > + } else if (is_spine_2004(spineport->node)) { > n->ch_type = ISR2004_CT; > n->ch_slotnum = line_slot_2_sfb4[spineport->portnum]; > n->ch_anafanum = ipr_slot_2_sfb4_port[spineport->portnum]; > @@ -423,19 +422,19 @@ static int get_router_slot(struct ibnd_node *node, > ibnd_port_t * spineport) > static int get_slb_slot(ibnd_node_t * n, ibnd_port_t * spineport) > { > n->ch_slot = LINE_CS; > - if (is_spine_9096(CONV_NODE_INTERNAL(spineport->node))) { > + if (is_spine_9096(spineport->node)) { > n->ch_type = ISR9096_CT; > n->ch_slotnum = line_slot_2_sfb4[spineport->portnum]; > n->ch_anafanum = anafa_line_slot_2_sfb4[spineport->portnum]; > - } else if (is_spine_9288(CONV_NODE_INTERNAL(spineport->node))) { > + } else if (is_spine_9288(spineport->node)) { > n->ch_type = ISR9288_CT; > n->ch_slotnum = line_slot_2_sfb12[spineport->portnum]; > n->ch_anafanum = anafa_line_slot_2_sfb12[spineport->portnum]; > - } else if (is_spine_2012(CONV_NODE_INTERNAL(spineport->node))) { > + } else if (is_spine_2012(spineport->node)) { > n->ch_type = ISR2012_CT; > n->ch_slotnum = line_slot_2_sfb12[spineport->portnum]; > n->ch_anafanum = anafa_line_slot_2_sfb12[spineport->portnum]; > - } else if (is_spine_2004(CONV_NODE_INTERNAL(spineport->node))) { > + } else if (is_spine_2004(spineport->node)) { > n->ch_type = ISR2004_CT; > n->ch_slotnum = line_slot_2_sfb4[spineport->portnum]; > n->ch_anafanum = anafa_line_slot_2_sfb4[spineport->portnum]; > @@ -454,12 +453,11 @@ static void voltaire_portmap(ibnd_port_t * port); > It could be optimized so, but time overhead is very small > and its only diag.util > */ > -static int fill_voltaire_chassis_record(struct ibnd_node *node) > +static int fill_voltaire_chassis_record(ibnd_node_t * node) > { > - ibnd_node_t *n = (ibnd_node_t *) node; > int p = 0; > ibnd_port_t *port; > - struct ibnd_node *remnode = 0; > + ibnd_node_t *remnode = 0; > > if (node->ch_found) /* somehow this node has already been passed */ > return (0); > @@ -470,25 +468,23 @@ static int fill_voltaire_chassis_record(struct > ibnd_node *node) > /* in such case node->ports is actually a requested port... */ > if (is_router(node)) { > /* find the remote node */ > - for (p = 1; p <= node->node.numports; p++) { > - port = node->node.ports[p]; > - if (port && > - is_spine(CONV_NODE_INTERNAL > - (port->remoteport->node))) > + for (p = 1; p <= node->numports; p++) { > + port = node->ports[p]; > + if (port && is_spine(port->remoteport->node)) > get_router_slot(node, port->remoteport); > } > } else if (is_spine(node)) { > - for (p = 1; p <= node->node.numports; p++) { > - port = node->node.ports[p]; > + for (p = 1; p <= node->numports; p++) { > + port = node->ports[p]; > if (!port || !port->remoteport) > continue; > - remnode = CONV_NODE_INTERNAL(port->remoteport->node); > - if (remnode->node.type != IB_NODE_SWITCH) { > + remnode = port->remoteport->node; > + if (remnode->type != IB_NODE_SWITCH) { > if (!remnode->ch_found) > get_router_slot(remnode, port); > continue; > } > - if (!n->ch_type) > + if (!node->ch_type) > /* we assume here that remoteport belongs to > line */ > if (get_sfb_slot(node, port->remoteport)) > return (-1); > @@ -497,20 +493,20 @@ static int fill_voltaire_chassis_record(struct > ibnd_node *node) > } > > } else if (is_line(node)) { > - for (p = 1; p <= node->node.numports; p++) { > - port = node->node.ports[p]; > + for (p = 1; p <= node->numports; p++) { > + port = node->ports[p]; > if (!port || port->portnum > 12 || !port->remoteport) > continue; > /* we assume here that remoteport belongs to spine */ > - if (get_slb_slot(n, port->remoteport)) > + if (get_slb_slot(node, port->remoteport)) > return (-1); > break; > } > } > > /* for each port of this node, map external ports */ > - for (p = 1; p <= node->node.numports; p++) { > - port = node->node.ports[p]; > + for (p = 1; p <= node->numports; p++) { > + port = node->ports[p]; > if (!port) > continue; > voltaire_portmap(port); > @@ -534,8 +530,7 @@ static int get_spine_index(ibnd_node_t * node) > { > int retval; > > - if (is_spine_9288(CONV_NODE_INTERNAL(node)) > - || is_spine_2012(CONV_NODE_INTERNAL(node))) > + if (is_spine_9288(node) || is_spine_2012(node)) > retval = 3 * (node->ch_slotnum - 1) + node->ch_anafanum; > else > retval = node->ch_slotnum; > @@ -586,7 +581,7 @@ static int pass_on_lines_catch_spines(ibnd_chassis_t * > chassis) > for (i = 1; i <= LINES_MAX_NUM; i++) { > node = chassis->linenode[i]; > > - if (!(node && is_line(CONV_NODE_INTERNAL(node)))) > + if (!(node && is_line(node))) > continue; /* empty slot or router */ > > for (p = 1; p <= node->numports; p++) { > @@ -596,7 +591,7 @@ static int pass_on_lines_catch_spines(ibnd_chassis_t * > chassis) > > remnode = port->remoteport->node; > > - if (!CONV_NODE_INTERNAL(remnode)->ch_found) > + if (!remnode->ch_found) > continue; /* some error - spine not > initialized ? FIXME */ > if (insert_spine(remnode, chassis)) > return (-1); > @@ -621,7 +616,7 @@ static int pass_on_spines_catch_lines(ibnd_chassis_t * > chassis) > continue; > remnode = port->remoteport->node; > > - if (!CONV_NODE_INTERNAL(remnode)->ch_found) > + if (!remnode->ch_found) > continue; /* some error - line/router not > initialized ? FIXME */ > if (insert_line_router(remnode, chassis)) > return (-1); > @@ -655,10 +650,10 @@ static void > pass_on_spines_interpolate_chguid(ibnd_chassis_t * chassis) > in that chassis > chassis structure = structure of one standalone chassis > */ > -static int build_chassis(struct ibnd_node *node, ibnd_chassis_t * chassis) > +static int build_chassis(ibnd_node_t * node, ibnd_chassis_t * chassis) > { > int p = 0; > - struct ibnd_node *remnode = 0; > + ibnd_node_t *remnode = 0; > ibnd_port_t *port = 0; > > /* we get here with node = chassis_spine */ > @@ -666,16 +661,16 @@ static int build_chassis(struct ibnd_node *node, > ibnd_chassis_t * chassis) > return (-1); > > /* loop: pass on all ports of node */ > - for (p = 1; p <= node->node.numports; p++) { > - port = node->node.ports[p]; > + for (p = 1; p <= node->numports; p++) { > + port = node->ports[p]; > if (!port || !port->remoteport) > continue; > - remnode = CONV_NODE_INTERNAL(port->remoteport->node); > + remnode = port->remoteport->node; > > if (!remnode->ch_found) > continue; /* some error - line or router not > initialized ? FIXME */ > > - insert_line_router(&(remnode->node), chassis); > + insert_line_router(remnode, chassis); > } > > if (pass_on_lines_catch_spines(chassis)) > @@ -764,13 +759,11 @@ int int2ext_map_slb2024[2][25] = { > /* map internal ports to external ports if appropriate */ > static void voltaire_portmap(ibnd_port_t * port) > { > - struct ibnd_node *n = CONV_NODE_INTERNAL(port->node); > int portnum = port->portnum; > int chipnum = 0; > ibnd_node_t *node = port->node; > > - if (!n->ch_found || !is_line(CONV_NODE_INTERNAL(node)) > - || (portnum < 13 || portnum > 24)) { > + if (!node->ch_found || !is_line(node) || (portnum < 13 || portnum > > 24)) { > port->ext_portnum = 0; > return; > } > @@ -782,9 +775,9 @@ static void voltaire_portmap(ibnd_port_t * port) > > chipnum = port->node->ch_anafanum - 1; > > - if (is_line_24(CONV_NODE_INTERNAL(node))) > + if (is_line_24(node)) > port->ext_portnum = int2ext_map_slb24[chipnum][portnum]; > - else if (is_line_2024(CONV_NODE_INTERNAL(node))) > + else if (is_line_2024(node)) > port->ext_portnum = int2ext_map_slb2024[chipnum][portnum]; > else > port->ext_portnum = int2ext_map_slb8[chipnum][portnum]; > @@ -828,7 +821,7 @@ static void add_node_to_chassis(ibnd_chassis_t * chassis, > ibnd_node_t * node) > */ > int group_nodes(struct ibnd_fabric *fabric) > { > - struct ibnd_node *node; > + ibnd_node_t *node; > int dist; > int chassisnum = 0; > ibnd_chassis_t *chassis; > @@ -842,7 +835,7 @@ int group_nodes(struct ibnd_fabric *fabric) > /* not very efficient but clear code so... */ > for (dist = 0; dist <= fabric->fabric.maxhops_discovered; dist++) { > for (node = fabric->nodesdist[dist]; node; node = node->dnext) { > - if (mad_get_field(node->node.info, 0, > + if (mad_get_field(node->info, 0, > IB_NODE_VENDORID_F) == VTR_VENDOR_ID) > if (fill_voltaire_chassis_record(node)) > return (-1); > @@ -853,13 +846,11 @@ int group_nodes(struct ibnd_fabric *fabric) > /* algorithm: catch spine and find all surrounding nodes */ > for (dist = 0; dist <= fabric->fabric.maxhops_discovered; dist++) { > for (node = fabric->nodesdist[dist]; node; node = node->dnext) { > - if (mad_get_field(node->node.info, 0, > + if (mad_get_field(node->info, 0, > IB_NODE_VENDORID_F) != VTR_VENDOR_ID) > continue; > - //if (!node->node.chrecord || > node->node.chrecord->chassisnum || !is_spine(node)) > if (!node->ch_found > - || (node->node.chassis > - && node->node.chassis->chassisnum) > + || (node->chassis && node->chassis->chassisnum) > || !is_spine(node)) > continue; > if (add_chassis(fabric)) > @@ -874,10 +865,10 @@ int group_nodes(struct ibnd_fabric *fabric) > /* grouped by common SystemImageGUID */ > for (dist = 0; dist <= fabric->fabric.maxhops_discovered; dist++) { > for (node = fabric->nodesdist[dist]; node; node = node->dnext) { > - if (mad_get_field(node->node.info, 0, > + if (mad_get_field(node->info, 0, > IB_NODE_VENDORID_F) == VTR_VENDOR_ID) > continue; > - if (mad_get_field64(node->node.info, 0, > + if (mad_get_field64(node->info, 0, > IB_NODE_SYSTEM_GUID_F)) { > chassis = > find_chassisguid(fabric, > @@ -901,10 +892,10 @@ int group_nodes(struct ibnd_fabric *fabric) > /* (defined as chassis->nodecount > 1) */ > for (dist = 0; dist <= MAXHOPS;) { > for (node = fabric->nodesdist[dist]; node; node = node->dnext) { > - if (mad_get_field(node->node.info, 0, > + if (mad_get_field(node->info, 0, > IB_NODE_VENDORID_F) == VTR_VENDOR_ID) > continue; > - if (mad_get_field64(node->node.info, 0, > + if (mad_get_field64(node->info, 0, > IB_NODE_SYSTEM_GUID_F)) { > chassis = > find_chassisguid(fabric, > diff --git a/infiniband-diags/libibnetdisc/src/ibnetdisc.c > b/infiniband-diags/libibnetdisc/src/ibnetdisc.c > index b33be8d..b883d4a 100644 > --- a/infiniband-diags/libibnetdisc/src/ibnetdisc.c > +++ b/infiniband-diags/libibnetdisc/src/ibnetdisc.c > @@ -98,18 +98,17 @@ static int get_port_info(struct ibmad_port *ibmad_port, > * Returns -1 if error. > */ > static int query_node_info(struct ibmad_port *ibmad_port, > - struct ibnd_fabric *fabric, struct ibnd_node *node, > + struct ibnd_fabric *fabric, ibnd_node_t * node, > ib_portid_t * portid) > { > - if (!smp_query_via(&(node->node.info), portid, IB_ATTR_NODE_INFO, 0, 0, > + if (!smp_query_via(&(node->info), portid, IB_ATTR_NODE_INFO, 0, 0, > ibmad_port)) > return -1; > > /* decode just a couple of fields for quicker reference. */ > - mad_decode_field(node->node.info, IB_NODE_GUID_F, &(node->node.guid)); > - mad_decode_field(node->node.info, IB_NODE_TYPE_F, &(node->node.type)); > - mad_decode_field(node->node.info, IB_NODE_NPORTS_F, > - &(node->node.numports)); > + mad_decode_field(node->info, IB_NODE_GUID_F, &(node->guid)); > + mad_decode_field(node->info, IB_NODE_TYPE_F, &(node->type)); > + mad_decode_field(node->info, IB_NODE_NPORTS_F, &(node->numports)); > > return (0); > } > @@ -118,15 +117,14 @@ 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, > - struct ibnd_node *inode, struct ibnd_port *iport, > + ibnd_node_t * node, struct ibnd_port *iport, > ib_portid_t * portid) > { > int rc = 0; > - ibnd_node_t *node = &(inode->node); > ibnd_port_t *port = &(iport->port); > - void *nd = inode->node.nodedesc; > + void *nd = node->nodedesc; > > - if ((rc = query_node_info(ibmad_port, fabric, inode, portid)) != 0) > + if ((rc = query_node_info(ibmad_port, fabric, node, portid)) != 0) > return rc; > > port->portnum = mad_get_field(node->info, 0, IB_NODE_LOCAL_PORT_F); > @@ -204,30 +202,30 @@ static int extend_dpath(struct ibmad_port *ibmad_port, > struct ibnd_fabric *f, > } > > static void dump_endnode(ib_portid_t * path, char *prompt, > - struct ibnd_node *node, struct ibnd_port *port) > + ibnd_node_t * node, struct ibnd_port *port) > { > char type[64]; > if (!show_progress) > return; > > - mad_dump_node_type(type, 64, &(node->node.type), sizeof(int)); > - > - printf("%s -> %s %s {%016" PRIx64 "} portnum %d base lid %d-%d\"%s\"\n", > - portid2str(path), prompt, type, node->node.guid, > - node->node.type == IB_NODE_SWITCH ? 0 : port->port.portnum, > - port->port.base_lid, > - port->port.base_lid + (1 << port->port.lmc) - 1, > - node->node.nodedesc); > + mad_dump_node_type(type, 64, &(node->type), sizeof(int)), > + 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); > } > > -static struct ibnd_node *find_existing_node(struct ibnd_fabric *fabric, > - struct ibnd_node *new) > +static ibnd_node_t *find_existing_node(struct ibnd_fabric *fabric, > + ibnd_node_t * new) > { > - int hash = HASHGUID(new->node.guid) % HTSZ; > - struct ibnd_node *node; > + int hash = HASHGUID(new->guid) % HTSZ; > + ibnd_node_t *node; > > for (node = fabric->nodestbl[hash]; node; node = node->htnext) > - if (node->node.guid == new->node.guid) > + if (node->guid == new->guid) > return node; > > return NULL; > @@ -237,7 +235,7 @@ ibnd_node_t *ibnd_find_node_guid(ibnd_fabric_t * fabric, > uint64_t guid) > { > struct ibnd_fabric *f = CONV_FABRIC_INTERNAL(fabric); > int hash = HASHGUID(guid) % HTSZ; > - struct ibnd_node *node; > + ibnd_node_t *node; > > if (!fabric) { > IBND_DEBUG("fabric parameter NULL\n"); > @@ -245,7 +243,7 @@ ibnd_node_t *ibnd_find_node_guid(ibnd_fabric_t * fabric, > uint64_t guid) > } > > for (node = f->nodestbl[hash]; node; node = node->htnext) > - if (node->node.guid == guid) > + if (node->guid == guid) > return (ibnd_node_t *) node; > > return NULL; > @@ -273,7 +271,6 @@ ibnd_node_t *ibnd_update_node(struct ibmad_port * > ibmad_port, > void *nd = node->nodedesc; > int p = 0; > struct ibnd_fabric *f = CONV_FABRIC_INTERNAL(fabric); > - struct ibnd_node *n = CONV_NODE_INTERNAL(node); > > if (_check_ibmad_port(ibmad_port) < 0) > return (NULL); > @@ -288,36 +285,36 @@ ibnd_node_t *ibnd_update_node(struct ibmad_port * > ibmad_port, > return (NULL); > } > > - if (query_node_info(ibmad_port, f, n, &(n->node.path_portid))) > + if (query_node_info(ibmad_port, f, node, &(node->path_portid))) > return (NULL); > > - if (!smp_query_via(nd, &(n->node.path_portid), IB_ATTR_NODE_DESC, 0, 0, > + if (!smp_query_via(nd, &(node->path_portid), IB_ATTR_NODE_DESC, 0, 0, > ibmad_port)) > return (NULL); > > /* update all the port info's */ > - for (p = 1; p >= n->node.numports; p++) { > - get_port_info(ibmad_port, f, > - CONV_PORT_INTERNAL(n->node.ports[p]), p, > - &(n->node.path_portid)); > + for (p = 1; p >= node->numports; p++) { > + get_port_info(ibmad_port, f, CONV_PORT_INTERNAL(node->ports[p]), > + p, &(node->path_portid)); > } > > - if (n->node.type != IB_NODE_SWITCH) > + if (node->type != IB_NODE_SWITCH) > goto done; > > - if (!smp_query_via(portinfo_port0, &(n->node.path_portid), > - IB_ATTR_PORT_INFO, 0, 0, ibmad_port)) > + if (!smp_query_via > + (portinfo_port0, &(node->path_portid), IB_ATTR_PORT_INFO, 0, 0, > + ibmad_port)) > return (NULL); > > - n->node.smalid = mad_get_field(portinfo_port0, 0, IB_PORT_LID_F); > - n->node.smalmc = mad_get_field(portinfo_port0, 0, IB_PORT_LMC_F); > + node->smalid = mad_get_field(portinfo_port0, 0, IB_PORT_LID_F); > + node->smalmc = mad_get_field(portinfo_port0, 0, IB_PORT_LMC_F); > > - if (!smp_query_via(node->switchinfo, &(n->node.path_portid), > + if (!smp_query_via(node->switchinfo, &(node->path_portid), > IB_ATTR_SWITCH_INFO, 0, 0, ibmad_port)) > node->smaenhsp0 = 0; /* assume base SP0 */ > else > mad_decode_field(node->switchinfo, IB_SW_ENHANCED_PORT0_F, > - &n->node.smaenhsp0); > + &node->smaenhsp0); > > done: > return (node); > @@ -358,10 +355,9 @@ ibnd_node_t *ibnd_find_node_dr(ibnd_fabric_t * fabric, > char *dr_str) > return (rc); > } > > -static void add_to_nodeguid_hash(struct ibnd_node *node, > - struct ibnd_node *hash[]) > +static void add_to_nodeguid_hash(ibnd_node_t * node, ibnd_node_t * hash[]) > { > - int hash_idx = HASHGUID(node->node.guid) % HTSZ; > + int hash_idx = HASHGUID(node->guid) % HTSZ; > > node->htnext = hash[hash_idx]; > hash[hash_idx] = node; > @@ -376,9 +372,9 @@ static void add_to_portguid_hash(struct ibnd_port *port, > hash[hash_idx] = port; > } > > -static void add_to_type_list(struct ibnd_node *node, struct ibnd_fabric > *fabric) > +static void add_to_type_list(ibnd_node_t * node, struct ibnd_fabric *fabric) > { > - switch (node->node.type) { > + switch (node->type) { > case IB_NODE_CA: > node->type_next = fabric->ch_adapters; > fabric->ch_adapters = node; > @@ -394,21 +390,21 @@ static void add_to_type_list(struct ibnd_node *node, > struct ibnd_fabric *fabric) > } > } > > -static void add_to_nodedist(struct ibnd_node *node, struct ibnd_fabric > *fabric) > +static void add_to_nodedist(ibnd_node_t * node, struct ibnd_fabric *fabric) > { > - int dist = node->node.dist; > - if (node->node.type != IB_NODE_SWITCH) > + int dist = node->dist; > + if (node->type != IB_NODE_SWITCH) > dist = MAXHOPS; /* special Ca list */ > > node->dnext = fabric->nodesdist[dist]; > fabric->nodesdist[dist] = node; > } > > -static struct ibnd_node *create_node(struct ibnd_fabric *fabric, > - struct ibnd_node *temp, ib_portid_t * path, > - int dist) > +static ibnd_node_t *create_node(struct ibnd_fabric *fabric, > + ibnd_node_t * temp, ib_portid_t * path, > + int dist) > { > - struct ibnd_node *node; > + ibnd_node_t *node; > > node = malloc(sizeof(*node)); > if (!node) { > @@ -417,13 +413,13 @@ static struct ibnd_node *create_node(struct ibnd_fabric > *fabric, > } > > memcpy(node, temp, sizeof(*node)); > - node->node.dist = dist; > - node->node.path_portid = *path; > + node->dist = dist; > + node->path_portid = *path; > > add_to_nodeguid_hash(node, fabric->nodestbl); > > /* add this to the all nodes list */ > - node->node.next = fabric->fabric.nodes; > + node->next = fabric->fabric.nodes; > fabric->fabric.nodes = (ibnd_node_t *) node; > > add_to_type_list(node, fabric); > @@ -432,26 +428,24 @@ static struct ibnd_node *create_node(struct ibnd_fabric > *fabric, > return node; > } > > -static struct ibnd_port *find_existing_port_node(struct ibnd_node *node, > +static struct ibnd_port *find_existing_port_node(ibnd_node_t * node, > struct ibnd_port *port) > { > - if (port->port.portnum > node->node.numports > - || node->node.ports == NULL) > + if (port->port.portnum > node->numports || node->ports == NULL) > return (NULL); > > - return (CONV_PORT_INTERNAL(node->node.ports[port->port.portnum])); > + return (CONV_PORT_INTERNAL(node->ports[port->port.portnum])); > } > > static struct ibnd_port *add_port_to_node(struct ibnd_fabric *fabric, > - struct ibnd_node *node, > + ibnd_node_t * node, > struct ibnd_port *temp) > { > struct ibnd_port *port; > > - if (node->node.ports == NULL) { > - node->node.ports = > - calloc(sizeof(*node->node.ports), node->node.numports + 1); > - if (!node->node.ports) { > + if (node->ports == NULL) { > + node->ports = calloc(sizeof(*node->ports), node->numports + 1); > + if (!node->ports) { > IBND_ERROR("Failed to allocate the ports array\n"); > return (NULL); > } > @@ -467,20 +461,19 @@ static struct ibnd_port *add_port_to_node(struct > ibnd_fabric *fabric, > port->port.node = (ibnd_node_t *) node; > port->port.ext_portnum = 0; > > - node->node.ports[temp->port.portnum] = (ibnd_port_t *) port; > + node->ports[temp->port.portnum] = (ibnd_port_t *) port; > > add_to_portguid_hash(port, fabric->portstbl); > return port; > } > > -static void link_ports(struct ibnd_node *node, struct ibnd_port *port, > - struct ibnd_node *remotenode, > - struct ibnd_port *remoteport) > +static void link_ports(ibnd_node_t * node, struct ibnd_port *port, > + ibnd_node_t * remotenode, struct ibnd_port *remoteport) > { > IBND_DEBUG("linking: 0x%" PRIx64 " %p->%p:%u and 0x%" PRIx64 > - " %p->%p:%u\n", node->node.guid, node, port, > - port->port.portnum, remotenode->node.guid, remotenode, > - remoteport, remoteport->port.portnum); > + " %p->%p:%u\n", node->guid, node, port, port->port.portnum, > + remotenode->guid, remotenode, remoteport, > + remoteport->port.portnum); > if (port->port.remoteport) > port->port.remoteport->remoteport = NULL; > if (remoteport->port.remoteport) > @@ -490,14 +483,14 @@ static void link_ports(struct ibnd_node *node, struct > ibnd_port *port, > } > > static int get_remote_node(struct ibmad_port *ibmad_port, > - struct ibnd_fabric *fabric, struct ibnd_node *node, > + struct ibnd_fabric *fabric, ibnd_node_t * node, > struct ibnd_port *port, ib_portid_t * path, > int portnum, int dist) > { > int rc = 0; > - struct ibnd_node node_buf; > + ibnd_node_t node_buf; > struct ibnd_port port_buf; > - struct ibnd_node *remotenode, *oldnode; > + ibnd_node_t *remotenode, *oldnode; > struct ibnd_port *remoteport, *oldport; > > memset(&node_buf, 0, sizeof(node_buf)); > @@ -554,9 +547,9 @@ ibnd_fabric_t *ibnd_discover_fabric(struct ibmad_port * > ibmad_port, > int rc = 0; > struct ibnd_fabric *fabric = NULL; > ib_portid_t my_portid = { 0 }; > - struct ibnd_node node_buf; > + ibnd_node_t node_buf; > struct ibnd_port port_buf; > - struct ibnd_node *node; > + ibnd_node_t *node; > struct ibnd_port *port; > int i; > int dist = 0; > @@ -605,7 +598,7 @@ ibnd_fabric_t *ibnd_discover_fabric(struct ibmad_port * > ibmad_port, > goto error; > > rc = get_remote_node(ibmad_port, fabric, node, port, from, > - mad_get_field(node->node.info, 0, > + mad_get_field(node->info, 0, > IB_NODE_LOCAL_PORT_F), 0); > if (rc < 0) > goto error; > @@ -616,13 +609,13 @@ ibnd_fabric_t *ibnd_discover_fabric(struct ibmad_port * > ibmad_port, > > for (node = fabric->nodesdist[dist]; node; node = node->dnext) { > > - path = &node->node.path_portid; > + path = &node->path_portid; > > IBND_DEBUG("dist %d node %p\n", dist, node); > dump_endnode(path, "processing", node, port); > > - for (i = 1; i <= node->node.numports; i++) { > - if (i == mad_get_field(node->node.info, 0, > + for (i = 1; i <= node->numports; i++) { > + if (i == mad_get_field(node->info, 0, > IB_NODE_LOCAL_PORT_F)) > continue; > > @@ -644,9 +637,9 @@ ibnd_fabric_t *ibnd_discover_fabric(struct ibmad_port * > ibmad_port, > goto error; > > /* If switch, set port GUID to node port GUID */ > - if (node->node.type == IB_NODE_SWITCH) { > + if (node->type == IB_NODE_SWITCH) { > port->port.guid = > - mad_get_field64(node->node.info, 0, > + mad_get_field64(node->info, 0, > > IB_NODE_PORT_GUID_F); > } > > @@ -666,14 +659,14 @@ error: > return (NULL); > } > > -static void destroy_node(struct ibnd_node *node) > +static void destroy_node(ibnd_node_t * node) > { > int p = 0; > > - for (p = 0; p <= node->node.numports; p++) { > - free(node->node.ports[p]); > + for (p = 0; p <= node->numports; p++) { > + free(node->ports[p]); > } > - free(node->node.ports); > + free(node->ports); > free(node); > } > > @@ -681,8 +674,8 @@ void ibnd_destroy_fabric(ibnd_fabric_t * fabric) > { > struct ibnd_fabric *f = CONV_FABRIC_INTERNAL(fabric); > int dist = 0; > - struct ibnd_node *node = NULL; > - struct ibnd_node *next = NULL; > + ibnd_node_t *node = NULL; > + ibnd_node_t *next = NULL; > ibnd_chassis_t *ch, *ch_next; > > if (!fabric) > @@ -747,8 +740,8 @@ void ibnd_iter_nodes_type(ibnd_fabric_t * fabric, > ibnd_iter_node_func_t func, > int node_type, void *user_data) > { > struct ibnd_fabric *f = CONV_FABRIC_INTERNAL(fabric); > - struct ibnd_node *list = NULL; > - struct ibnd_node *cur = NULL; > + ibnd_node_t *list = NULL; > + ibnd_node_t *cur = NULL; > > if (!fabric) { > IBND_DEBUG("fabric parameter NULL\n"); > diff --git a/infiniband-diags/libibnetdisc/src/internal.h > b/infiniband-diags/libibnetdisc/src/internal.h > index 38555a0..449bd70 100644 > --- a/infiniband-diags/libibnetdisc/src/internal.h > +++ b/infiniband-diags/libibnetdisc/src/internal.h > @@ -49,18 +49,6 @@ > #define IBND_ERROR(fmt, ...) \ > fprintf(stderr, "%s:%u; " fmt, __FILE__, __LINE__, ## > __VA_ARGS__) > > -struct ibnd_node { > - /* This member MUST BE FIRST */ > - ibnd_node_t node; > - > - /* internal use only */ > - unsigned char ch_found; > - struct ibnd_node *htnext; /* hash table list */ > - struct ibnd_node *dnext; /* nodesdist next */ > - struct ibnd_node *type_next; /* next based on type */ > -}; > -#define CONV_NODE_INTERNAL(node) ((struct ibnd_node *)node) > - > struct ibnd_port { > /* This member MUST BE FIRST */ > ibnd_port_t port; > @@ -79,15 +67,15 @@ struct ibnd_fabric { > ibnd_fabric_t fabric; > > /* internal use only */ > - struct ibnd_node *nodestbl[HTSZ]; > + ibnd_node_t *nodestbl[HTSZ]; > struct ibnd_port *portstbl[HTSZ]; > - struct ibnd_node *nodesdist[MAXHOPS + 1]; > + ibnd_node_t *nodesdist[MAXHOPS + 1]; > ibnd_chassis_t *first_chassis; > ibnd_chassis_t *current_chassis; > ibnd_chassis_t *last_chassis; > - struct ibnd_node *switches; > - struct ibnd_node *ch_adapters; > - struct ibnd_node *routers; > + ibnd_node_t *switches; > + ibnd_node_t *ch_adapters; > + ibnd_node_t *routers; > ib_portid_t selfportid; > }; > #define CONV_FABRIC_INTERNAL(fabric) ((struct ibnd_fabric *)fabric) > -- > 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
