We should consider removing subslots entirely and go for a truly flat 
addressing scheme, if that is backward compatible.
There are other standard ways(PLM HE dependency) of provisioning AMC subslots 
kind of hardware.

Mathi.

> -----Original Message-----
> From: Anders Widell [mailto:[email protected]]
> Sent: Friday, March 18, 2016 9:38 PM
> To: Venkata Mahesh Alla
> Cc: [email protected]
> Subject: [devel] [PATCH 1 of 1] mds: Support up to 4095 nodes [#1613]
> 
>  osaf/libs/core/mds/include/mds_dt.h |  26 +++++++++++++++++---------
>  osaf/libs/core/mds/mds_c_db.c       |  26 ++++++++++++--------------
>  2 files changed, 29 insertions(+), 23 deletions(-)
> 
> 
> Support up to 4095 nodes in the flat addressing scheme for TIPC, by encoding
> the slot ID in the lower eight bits and the ones' complement of the subslot ID
> in bits 8 to 11 in the node identifier of the TIPC address. The reason for 
> taking
> the ones' complement of the subslot ID is backwards compatibility with
> existing installations, so that this enhancement can be upgraded in-service.
> 
> diff --git a/osaf/libs/core/mds/include/mds_dt.h
> b/osaf/libs/core/mds/include/mds_dt.h
> --- a/osaf/libs/core/mds/include/mds_dt.h
> +++ b/osaf/libs/core/mds/include/mds_dt.h
> @@ -237,7 +237,8 @@ bool mdtm_mailbox_mbx_cleanup(NCSCONTEXT
> 
>  /*
>   * In the default flat addressing scheme, TIPC node addresses looks like
> - * 1.1.1, 1.1.2 etc.
> + * 1.1.1, 1.1.2 etc. The ones' complement of the subslot ID is shifted
> + 8
> + * bits up and the slot ID is added in the 8 LSB.
>   * In the non flat (old/legacy) addressing scheme TIPC addresses looks like
>   * 1.1.31, 1.1.47. The slot ID is shifted 4 bits up and subslot ID is added
>   * in the 4 LSB.
> @@ -248,13 +249,20 @@ bool mdtm_mailbox_mbx_cleanup(NCSCONTEXT
> 
>  #if (MDS_USE_SUBSLOT_ID == 0)
>  #define MDS_TIPC_NODE_ID_MIN     0x01001001
> -#define MDS_TIPC_NODE_ID_MAX     0x010010ff
> -#define MDS_NCS_NODE_ID_MIN      (MDS_NCS_CHASSIS_ID|0x0000010f)
> -#define MDS_NCS_NODE_ID_MAX      (MDS_NCS_CHASSIS_ID|0x0000ff0f)
> -#define m_MDS_GET_NCS_NODE_ID_FROM_TIPC_NODE_ID(node) \
> -        (NODE_ID)( MDS_NCS_CHASSIS_ID | (((node)&0xff)<<8) | (0xf))
> -#define m_MDS_GET_TIPC_NODE_ID_FROM_NCS_NODE_ID(node) \
> -        (NODE_ID)( MDS_TIPC_COMMON_ID | (((node)&0xff00)>>8) )
> +#define MDS_TIPC_NODE_ID_MAX     0x01001fff
> +static inline NODE_ID
> m_MDS_GET_NCS_NODE_ID_FROM_TIPC_NODE_ID(NODE_ID node) {
> +        return MDS_NCS_CHASSIS_ID | ((node & 0xff) << 8) | (((node &
> +0xf00) >> 8) ^ 0xf); } static inline NODE_ID
> +m_MDS_GET_TIPC_NODE_ID_FROM_NCS_NODE_ID(NODE_ID node) {
> +        return MDS_TIPC_COMMON_ID | ((node & 0xff00) >> 8) | (((node &
> +0xf) ^ 0xf) << 8); } static inline uint32_t
> +m_MDS_CHECK_TIPC_NODE_ID_RANGE(NODE_ID node) {
> +     return node < MDS_TIPC_NODE_ID_MIN || node >
> MDS_TIPC_NODE_ID_MAX ?
> +             NCSCC_RC_FAILURE : NCSCC_RC_SUCCESS;
> +}
> +static inline uint32_t m_MDS_CHECK_NCS_NODE_ID_RANGE(NODE_ID
> node) {
> +    return
> +m_MDS_CHECK_TIPC_NODE_ID_RANGE(m_MDS_GET_TIPC_NODE_ID_FR
> OM_NCS_NODE_ID(
> +node));
> +}
>  #else
>  #define MDS_TIPC_NODE_ID_MIN     0x01001001
>  #define MDS_TIPC_NODE_ID_MAX     0x0100110f
> @@ -264,10 +272,10 @@ bool mdtm_mailbox_mbx_cleanup(NCSCONTEXT
>          (NODE_ID)( MDS_NCS_CHASSIS_ID | ((node)&0xf) |
> (((node)&0xff0)<<4))  #define
> m_MDS_GET_TIPC_NODE_ID_FROM_NCS_NODE_ID(node) \
>          (NODE_ID)( MDS_TIPC_COMMON_ID | (((node)&0xff00)>>4) |
> ((node)&0xf) ) -#endif
> 
>  #define m_MDS_CHECK_TIPC_NODE_ID_RANGE(node)
> (((((node)<MDS_TIPC_NODE_ID_MIN)||((node)>MDS_TIPC_NODE_ID_MA
> X))?NCSCC_RC_FAILURE:NCSCC_RC_SUCCESS))
>  #define m_MDS_CHECK_NCS_NODE_ID_RANGE(node)
> (((((node)<MDS_NCS_NODE_ID_MIN)||((node)>MDS_NCS_NODE_ID_MA
> X))?NCSCC_RC_FAILURE:NCSCC_RC_SUCCESS))
> +#endif
> 
>  /* ******************************************** */
>  /* ******************************************** */ diff --git
> a/osaf/libs/core/mds/mds_c_db.c b/osaf/libs/core/mds/mds_c_db.c
> --- a/osaf/libs/core/mds/mds_c_db.c
> +++ b/osaf/libs/core/mds/mds_c_db.c
> @@ -37,14 +37,13 @@ void get_adest_details(MDS_DEST adest, c
>       char *token, *saveptr;
>       struct stat s;
>       uint32_t process_id = 0;
> -     NCS_PHY_SLOT_ID phy_slot;
> -     NCS_SUB_SLOT_ID sub_slot;
> +     SlotSubslotId slot_subslot_id;
>       char pid_path[1024];
>       char *pid_name = NULL;
>       char process_name[MDS_MAX_PROCESS_NAME_LEN];
>       bool remote = false;
> 
> -
>       m_NCS_GET_PHYINFO_FROM_NODE_ID(m_NCS_NODE_ID_FROM_
> MDS_DEST(adest), NULL, &phy_slot, &sub_slot);
> +     slot_subslot_id =
> +GetSlotSubslotIdFromNodeId(m_NCS_NODE_ID_FROM_MDS_DEST(adest)
> );
> 
>       if (!tipc_mode_enabled) {
>               process_id =
> m_MDS_GET_PROCESS_ID_FROM_ADEST(adest);
> @@ -111,11 +110,11 @@ void get_adest_details(MDS_DEST adest, c
>       }
> 
>       if (remote == true)
> -             snprintf(adest_details, MDS_MAX_PROCESS_NAME_LEN,
> "<rem_nodeid[%d]:%s>",
> -                             phy_slot, process_name);
> +             snprintf(adest_details, MDS_MAX_PROCESS_NAME_LEN,
> "<rem_nodeid[%u]:%s>",
> +                             slot_subslot_id, process_name);
>       else
> -             snprintf(adest_details, MDS_MAX_PROCESS_NAME_LEN,
> "<nodeid[%d]:%s>",
> -                             phy_slot, process_name);
> +             snprintf(adest_details, MDS_MAX_PROCESS_NAME_LEN,
> "<nodeid[%u]:%s>",
> +                             slot_subslot_id, process_name);
> 
>       m_MDS_LOG_DBG("MDS:DB: adest_details: %s ", adest_details);
>       m_MDS_LEAVE();
> @@ -129,8 +128,7 @@ void get_adest_details(MDS_DEST adest, c  void
> get_subtn_adest_details(MDS_PWE_HDL pwe_hdl, MDS_SVC_ID svc_id,
> MDS_DEST adest, char* adest_details)  {
>       uint32_t process_id = 0;
> -     NCS_PHY_SLOT_ID phy_slot;
> -     NCS_SUB_SLOT_ID sub_slot;
> +     SlotSubslotId slot_subslot_id;
>       char process_name[MDS_MAX_PROCESS_NAME_LEN];
>       bool remote = false;
>       MDS_SVC_INFO *svc_info = NULL;
> @@ -139,7 +137,7 @@ void get_subtn_adest_details(MDS_PWE_HDL
>       char *pid_name = NULL;
>       struct stat s;
> 
> -
>       m_NCS_GET_PHYINFO_FROM_NODE_ID(m_NCS_NODE_ID_FROM_
> MDS_DEST(adest), NULL, &phy_slot, &sub_slot);
> +     slot_subslot_id =
> +GetSlotSubslotIdFromNodeId(m_NCS_NODE_ID_FROM_MDS_DEST(adest)
> );
>       process_id = m_MDS_GET_PROCESS_ID_FROM_ADEST(adest);
> 
>       if (NCSCC_RC_SUCCESS == mds_mcm_check_intranode(adest)) {
> @@ -185,11 +183,11 @@ void get_subtn_adest_details(MDS_PWE_HDL
>       }
> 
>       if (remote == true)
> -             snprintf(adest_details, MDS_MAX_PROCESS_NAME_LEN,
> "<rem_node[%d]:%s>",
> -                             phy_slot, process_name);
> +             snprintf(adest_details, MDS_MAX_PROCESS_NAME_LEN,
> "<rem_node[%u]:%s>",
> +                             slot_subslot_id, process_name);
>       else
> -             snprintf(adest_details, MDS_MAX_PROCESS_NAME_LEN,
> "<node[%d]:%s>",
> -                             phy_slot, process_name);
> +             snprintf(adest_details, MDS_MAX_PROCESS_NAME_LEN,
> "<node[%u]:%s>",
> +                             slot_subslot_id, process_name);
>  done:
>       m_MDS_LOG_DBG("MDS:DB: adest_details: %s ", adest_details);
>       m_MDS_LEAVE();
> 
> ------------------------------------------------------------------------------
> 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

------------------------------------------------------------------------------
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=278785471&iu=/4140
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to