static uint64_t xsigo_chassisguid(ibnd_node_t * node) { uint64_t sysimgguid = mad_get_field64(node->info, 0, IB_NODE_SYSTEM_GUID_F); uint64_t remote_sysimgguid; if (!is_xsigo_ca(sysimgguid)) { /* Byte 3 is NodeType and byte 4 is PortType */ /* If NodeType is 1 (switch), PortType is masked */ if (is_xsigo_switch(sysimgguid)) return sysimgguid & 0xffffffff00ffffffULL; else return sysimgguid; } else { if (!node->ports || !node->ports[1]) return 0; /* Is there a peer port ? */ if (!node->ports[1]->remoteport) return sysimgguid; /* If peer port is Leaf 1, use its chassis GUID */ remote_sysimgguid = mad_get_field64(node->ports[1]->remoteport->node->info, 0, IB_NODE_SYSTEM_GUID_F); if (is_xsigo_leafone(remote_sysimgguid)) return remote_sysimgguid & 0xffffffff00ffffffULL; else return sysimgguid; } }
static uint64_t xsigo_chassisguid(Node *node) { if (!is_xsigo_ca(node->sysimgguid)) { /* Byte 3 is NodeType and byte 4 is PortType */ /* If NodeType is 1 (switch), PortType is masked */ if (is_xsigo_switch(node->sysimgguid)) return node->sysimgguid & 0xffffffff00ffffffULL; else return node->sysimgguid; } else { /* Is there a peer port ? */ if (!node->ports->remoteport) return node->sysimgguid; /* If peer port is Leaf 1, use its chassis GUID */ if (is_xsigo_leafone(node->ports->remoteport->node->sysimgguid)) return node->ports->remoteport->node->sysimgguid & 0xffffffff00ffffffULL; else return node->sysimgguid; } }