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

Reply via email to