Lines Matching refs:node

150 static uint64_t xsigo_chassisguid(Node *node)  in xsigo_chassisguid()  argument
152 if (!is_xsigo_ca(node->sysimgguid)) { in xsigo_chassisguid()
155 if (is_xsigo_switch(node->sysimgguid)) in xsigo_chassisguid()
156 return node->sysimgguid & 0xffffffff00ffffffULL; in xsigo_chassisguid()
158 return node->sysimgguid; in xsigo_chassisguid()
161 if (!node->ports->remoteport) in xsigo_chassisguid()
162 return node->sysimgguid; in xsigo_chassisguid()
165 if (is_xsigo_leafone(node->ports->remoteport->node->sysimgguid)) in xsigo_chassisguid()
166 return node->ports->remoteport->node->sysimgguid & in xsigo_chassisguid()
169 return node->sysimgguid; in xsigo_chassisguid()
173 static uint64_t get_chassisguid(Node *node) in get_chassisguid() argument
175 if (node->vendid == TS_VENDOR_ID || node->vendid == SS_VENDOR_ID) in get_chassisguid()
176 return topspin_chassisguid(node->sysimgguid); in get_chassisguid()
177 else if (node->vendid == XS_VENDOR_ID || is_xsigo_guid(node->sysimgguid)) in get_chassisguid()
178 return xsigo_chassisguid(node); in get_chassisguid()
180 return node->sysimgguid; in get_chassisguid()
183 static struct ChassisList *find_chassisguid(Node *node) in find_chassisguid() argument
188 chguid = get_chassisguid(node); in find_chassisguid()
208 static int is_router(Node *node) in is_router() argument
210 return (node->devid == VTR_DEVID_IB_FC_ROUTER || in is_router()
211 node->devid == VTR_DEVID_IB_IP_ROUTER); in is_router()
214 static int is_spine_9096(Node *node) in is_spine_9096() argument
216 return (node->devid == VTR_DEVID_SFB4 || in is_spine_9096()
217 node->devid == VTR_DEVID_SFB4_DDR); in is_spine_9096()
220 static int is_spine_9288(Node *node) in is_spine_9288() argument
222 return (node->devid == VTR_DEVID_SFB12 || in is_spine_9288()
223 node->devid == VTR_DEVID_SFB12_DDR); in is_spine_9288()
226 static int is_spine_2004(Node *node) in is_spine_2004() argument
228 return (node->devid == VTR_DEVID_SFB2004); in is_spine_2004()
231 static int is_spine_2012(Node *node) in is_spine_2012() argument
233 return (node->devid == VTR_DEVID_SFB2012); in is_spine_2012()
236 static int is_spine(Node *node) in is_spine() argument
238 return (is_spine_9096(node) || is_spine_9288(node) || in is_spine()
239 is_spine_2004(node) || is_spine_2012(node)); in is_spine()
242 static int is_line_24(Node *node) in is_line_24() argument
244 return (node->devid == VTR_DEVID_SLB24 || in is_line_24()
245 node->devid == VTR_DEVID_SLB24_DDR || in is_line_24()
246 node->devid == VTR_DEVID_SRB2004); in is_line_24()
249 static int is_line_8(Node *node) in is_line_8() argument
251 return (node->devid == VTR_DEVID_SLB8); in is_line_8()
254 static int is_line_2024(Node *node) in is_line_2024() argument
256 return (node->devid == VTR_DEVID_SLB2024); in is_line_2024()
259 static int is_line(Node *node) in is_line() argument
261 return (is_line_24(node) || is_line_8(node) || is_line_2024(node)); in is_line()
264 int is_chassis_switch(Node *node) in is_chassis_switch() argument
266 return (is_spine(node) || is_line(node)); in is_chassis_switch()
285 static void get_sfb_slot(Node *node, Port *lineport) in get_sfb_slot() argument
287 ChassisRecord *ch = node->chrecord; in get_sfb_slot()
290 if (is_spine_9096(node)) { in get_sfb_slot()
294 } else if (is_spine_9288(node)) { in get_sfb_slot()
298 } else if (is_spine_2012(node)) { in get_sfb_slot()
302 } else if (is_spine_2004(node)) { in get_sfb_slot()
307 IBPANIC("Unexpected node found: guid 0x%016" PRIx64, node->nodeguid); in get_sfb_slot()
311 static void get_router_slot(Node *node, Port *spineport) in get_router_slot() argument
313 ChassisRecord *ch = node->chrecord; in get_router_slot()
317 if (!(node->chrecord = calloc(1, sizeof(ChassisRecord)))) in get_router_slot()
319 ch = node->chrecord; in get_router_slot()
323 if (is_spine_9096(spineport->node)) { in get_router_slot()
327 } else if (is_spine_9288(spineport->node)) { in get_router_slot()
331 guessnum = spineport->node->nodeguid % 4; in get_router_slot()
336 } else if (is_spine_2012(spineport->node)) { in get_router_slot()
340 guessnum = spineport->node->nodeguid % 4; in get_router_slot()
345 } else if (is_spine_2004(spineport->node)) { in get_router_slot()
350 IBPANIC("Unexpected node found: guid 0x%016" PRIx64, spineport->node->nodeguid); in get_router_slot()
357 if (is_spine_9096(spineport->node)) { in get_slb_slot()
361 } else if (is_spine_9288(spineport->node)) { in get_slb_slot()
365 } else if (is_spine_2012(spineport->node)) { in get_slb_slot()
369 } else if (is_spine_2004(spineport->node)) { in get_slb_slot()
374 IBPANIC("Unexpected node found: guid 0x%016" PRIx64, spineport->node->nodeguid); in get_slb_slot()
383 static void fill_chassis_record(Node *node) in fill_chassis_record() argument
389 if (node->chrecord) /* somehow this node has already been passed */ in fill_chassis_record()
392 if (!(node->chrecord = calloc(1, sizeof(ChassisRecord)))) in fill_chassis_record()
395 ch = node->chrecord; in fill_chassis_record()
400 if (is_router(node) && is_spine(node->ports->remoteport->node)) in fill_chassis_record()
401 get_router_slot(node, node->ports->remoteport); in fill_chassis_record()
402 else if (is_spine(node)) { in fill_chassis_record()
403 for (port = node->ports; port; port = port->next) { in fill_chassis_record()
406 remnode = port->remoteport->node; in fill_chassis_record()
414 get_sfb_slot(node, port->remoteport); in fill_chassis_record()
419 } else if (is_line(node)) { in fill_chassis_record()
420 for (port = node->ports; port; port = port->next) { in fill_chassis_record()
434 static int get_line_index(Node *node) in get_line_index() argument
436 int retval = 3 * (node->chrecord->slotnum - 1) + node->chrecord->anafanum; in get_line_index()
443 static int get_spine_index(Node *node) in get_spine_index() argument
447 if (is_spine_9288(node) || is_spine_2012(node)) in get_spine_index()
448 retval = 3 * (node->chrecord->slotnum - 1) + node->chrecord->anafanum; in get_spine_index()
450 retval = node->chrecord->slotnum; in get_spine_index()
457 static void insert_line_router(Node *node, ChassisList *chassislist) in insert_line_router() argument
459 int i = get_line_index(node); in insert_line_router()
464 chassislist->linenode[i] = node; in insert_line_router()
465 node->chrecord->chassisnum = chassislist->chassisnum; in insert_line_router()
468 static void insert_spine(Node *node, ChassisList *chassislist) in insert_spine() argument
470 int i = get_spine_index(node); in insert_spine()
475 chassislist->spinenode[i] = node; in insert_spine()
476 node->chrecord->chassisnum = chassislist->chassisnum; in insert_spine()
481 Node *node, *remnode; in pass_on_lines_catch_spines() local
486 node = chassislist->linenode[i]; in pass_on_lines_catch_spines()
488 if (!(node && is_line(node))) in pass_on_lines_catch_spines()
491 for (port = node->ports; port; port = port->next) { in pass_on_lines_catch_spines()
497 remnode = port->remoteport->node; in pass_on_lines_catch_spines()
508 Node *node, *remnode; in pass_on_spines_catch_lines() local
513 node = chassislist->spinenode[i]; in pass_on_spines_catch_lines()
514 if (!node) in pass_on_spines_catch_lines()
516 for (port = node->ports; port; port = port->next) { in pass_on_spines_catch_lines()
519 remnode = port->remoteport->node; in pass_on_spines_catch_lines()
534 Node *node; in pass_on_spines_interpolate_chguid() local
538 node = chassislist->spinenode[i]; in pass_on_spines_interpolate_chguid()
539 if (!node) in pass_on_spines_interpolate_chguid()
543 chassislist->chassisguid = node->nodeguid - 1; in pass_on_spines_interpolate_chguid()
553 static void build_chassis(Node *node, ChassisList *chassislist) in build_chassis() argument
559 chassislist->chassistype = node->chrecord->chassistype; in build_chassis()
560 insert_spine(node, chassislist); in build_chassis()
563 for (port = node->ports; port; port = port->next) { in build_chassis()
566 remnode = port->remoteport->node; in build_chassis()
652 ChassisRecord *ch = port->node->chrecord; in portmapstring()
656 Node *node = port->node; in portmapstring() local
658 if (!ch || !is_line(node) || (portnum < 13 || portnum > 24)) in portmapstring()
668 if (is_line_24(node)) in portmapstring()
670 else if (is_line_2024(node)) in portmapstring()
707 Node *node; in group_nodes() local
721 for (node = nodesdist[dist]; node; node = node->dnext) { in group_nodes()
722 if (node->vendid == VTR_VENDOR_ID) in group_nodes()
723 fill_chassis_record(node); in group_nodes()
730 for (node = nodesdist[dist]; node; node = node->dnext) { in group_nodes()
731 if (node->vendid != VTR_VENDOR_ID) in group_nodes()
733 if (!node->chrecord || node->chrecord->chassisnum || !is_spine(node)) in group_nodes()
737 build_chassis(node, mylist.current); in group_nodes()
744 for (node = nodesdist[dist]; node; node = node->dnext) { in group_nodes()
745 if (node->vendid == VTR_VENDOR_ID) in group_nodes()
747 if (node->sysimgguid) { in group_nodes()
748 chassis = find_chassisguid(node); in group_nodes()
754 mylist.current->chassisguid = get_chassisguid(node); in group_nodes()
764 for (node = nodesdist[dist]; node; node = node->dnext) { in group_nodes()
765 if (node->vendid == VTR_VENDOR_ID) in group_nodes()
767 if (node->sysimgguid) { in group_nodes()
768 chassis = find_chassisguid(node); in group_nodes()
772 if (!node->chrecord) { in group_nodes()
773 if (!(node->chrecord = calloc(1, sizeof(ChassisRecord)))) in group_nodes()
775 node->chrecord->chassisnum = chassis->chassisnum; in group_nodes()