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
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel