osaf/libs/core/common/ncs_main_pub.c | 13 ++++--------- osaf/libs/core/include/ncs_main_papi.h | 16 ++++++++++++++++ osaf/libs/core/include/ncsgl_defs.h | 7 ++++++- 3 files changed, 26 insertions(+), 10 deletions(-)
Add new utility functions for extracting Slot, Subslot and Chassis from a Node ID. Also add a new constant for the maximum supported number of slots and subslots in the system. diff --git a/osaf/libs/core/common/ncs_main_pub.c b/osaf/libs/core/common/ncs_main_pub.c --- a/osaf/libs/core/common/ncs_main_pub.c +++ b/osaf/libs/core/common/ncs_main_pub.c @@ -139,7 +139,7 @@ typedef struct ncs_main_pub_cb { } NCS_MAIN_PUB_CB; typedef struct ncs_sys_params { - NCS_PHY_SLOT_ID slot_id; + SlotSubslotId slot_subslot_id; NCS_CHASSIS_ID shelf_id; NCS_NODE_ID node_id; uint32_t cluster_id; @@ -714,7 +714,6 @@ void ncs_get_sys_params_arg(NCS_SYS_PARA char *p_field; uint32_t tmp_ctr; uint32_t orig_argc; - NCS_SUB_SLOT_ID sub_slot_id = 0; NCS_SYS_PARAMS params; char *ptr; int argc = 0; @@ -756,17 +755,13 @@ void ncs_get_sys_params_arg(NCS_SYS_PARA gl_ncs_main_pub_cb.my_nodeid = sys_params->node_id; - if (m_NCS_GET_PHYINFO_FROM_NODE_ID(sys_params->node_id, &sys_params->shelf_id, - &sys_params->slot_id, &sub_slot_id) != NCSCC_RC_SUCCESS) { - - m_LEAP_DBG_SINK_VOID; - return; - } + sys_params->shelf_id = GetChassisIdFromNodeId(sys_params->node_id); + sys_params->slot_subslot_id = GetSlotSubslotIdFromNodeId(sys_params->node_id); sprintf(gl_pargv[orig_argc + 0], "NONE"); sprintf(gl_pargv[orig_argc + 1], "CLUSTER_ID=%d", sys_params->cluster_id); sprintf(gl_pargv[orig_argc + 2], "SHELF_ID=%d", sys_params->shelf_id); - sprintf(gl_pargv[orig_argc + 3], "SLOT_ID=%d", sys_params->slot_id); + sprintf(gl_pargv[orig_argc + 3], "SLOT_ID=%d", sys_params->slot_subslot_id); sprintf(gl_pargv[orig_argc + 4], "NODE_ID=%d", sys_params->node_id); sprintf(gl_pargv[orig_argc + 5], "PCON_ID=%d", sys_params->pcon_id); diff --git a/osaf/libs/core/include/ncs_main_papi.h b/osaf/libs/core/include/ncs_main_papi.h --- a/osaf/libs/core/include/ncs_main_papi.h +++ b/osaf/libs/core/include/ncs_main_papi.h @@ -112,6 +112,22 @@ extern "C" { NCS_CHASSIS_ID *o_chassis_id, NCS_PHY_SLOT_ID *o_phy_slot_id, NCS_SUB_SLOT_ID *o_sub_slot_id); +static inline NCS_CHASSIS_ID GetChassisIdFromNodeId(NCS_NODE_ID node_id) +{ + uint32_t kChassisMask = 0xff; + uint32_t chassis_id = (((uint32_t) node_id) >> 16) & kChassisMask; + return chassis_id; +} + +static inline SlotSubslotId GetSlotSubslotIdFromNodeId(NCS_NODE_ID node_id) +{ + uint32_t kSubslotMask = 0xf; + uint32_t kSlotMask = 0xff; + uint32_t subslot_id = ((uint32_t) node_id) & kSubslotMask; + uint32_t slot_id = (((uint32_t) node_id) >> 8) & kSlotMask; + return ((subslot_id ^ kSubslotMask) << 8) | slot_id; +} + #ifdef __cplusplus } #endif diff --git a/osaf/libs/core/include/ncsgl_defs.h b/osaf/libs/core/include/ncsgl_defs.h --- a/osaf/libs/core/include/ncsgl_defs.h +++ b/osaf/libs/core/include/ncsgl_defs.h @@ -73,8 +73,12 @@ extern "C" { /************************************************* * Maximum Slots (Including sub slots) supported - * 16 slots x 8 subslots + * 256 slots x 16 subslots *************************************************/ +enum { + kMaxSlotsSubslots = 4096 +}; + #define NCS_SLOT_MAX 16 #define NCS_SUB_SLOT_MAX 16 @@ -86,6 +90,7 @@ extern "C" { typedef uint8_t NCS_CHASSIS_ID; typedef uint8_t NCS_PHY_SLOT_ID; typedef uint8_t NCS_SUB_SLOT_ID; + typedef uint32_t SlotSubslotId; /* m_NCS_NODE_ID_FROM_MDS_DEST: Returns node-id if the MDS_DEST provided is an absolute destination. Returns 0 ------------------------------------------------------------------------------ Transform Data into Opportunity. Accelerate data analysis in your applications with Intel Data Analytics Acceleration Library. Click to learn more. http://pubads.g.doubleclick.net/gampad/clk?id=278785231&iu=/4140 _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel