Sorry for that ,

1) Standby Controller jointing the Active Controller by Syncing 300K of 
objects
    in IMM with PBE enabled ( 2 node Controller configuration 'SC-2' 
joined the 'SC-1' as Standby )

     Performance Statistics Without #654 Patch :
     TIPC  : 100  seconds
     TCP   : 101 seconds

     Performance Statistics Without #654 Patch :
     TIPC  : 18   seconds
     TCP   : 20   seconds

2) 3 Node's simultaneously joining the 'SC-1' by loading /syncing 300K 
of objects in IMM with PBE enabled
    (4 node 2-Controller 2-payload configuration- 'SC-2','PL-3' & 'PL-4' 
joined the cluster simultaneously )

      Performance Statistics Without #654 Patch :
      TIPC  : 115  seconds
      TCP   : 116  seconds

      Performance Statistics Without #654 Patch :
      TIPC  : 26 seconds
      TCP   : 26 seconds

3) Time taken to Open A Checkpoint on node B with checkpoint memory Used 
:15000000 bytes
    (2 node's SC-1' & 'SC-2' nodes are in the cluster now with patch TCP 
case SOCK_SND_RCV_BUF_SIZE
    is configured to 16777216 bytes previously it was not configurable 
previously)

     Performance Statistics Without #654 Patch :
      TIPC   : 9  seconds
      TCP    : Doesn't work & Timeout

      Performance Statistics Without #654 Patch :
      TIPC  : 6   seconds
      TCP   : 7   seconds

-AVM

On 2/4/2014 4:27 PM, praveen malviya wrote:
> I am not seeing any attachment.
> Can you please send it in text format.
>
>
> Thanks,
> Praveen
> On 04-Feb-14 4:11 PM, A V Mahesh wrote:
>>
>> People who ware viewing Mail text format didint received the 
>> performance statistics Table ,
>> please find it as attachment .
>>
>> -AVM
>>
>> On 2/4/2014 3:59 PM, A V Mahesh wrote:
>>> Hi All,
>>>
>>> This patch adjusted the MDS send fragmentation size from 1400 to 
>>> 65479. This value is derived
>>> from TIPC_MAX_USER_MSG_SIZE (linux/tipc.h) which is 66000 and TCP 
>>> max packet size.
>>>
>>> Following are some performance statistics with and without the patch 
>>> for your reference. The `cpuinfo` & `meminfo` of node is
>>> provide in attached `nodes_cpuinfo_meminfo.txt`file.
>>>
>>> The fragmentation size (65479) can be tuned or made configurable 
>>> based on the review comments.
>>>
>>> The rest of the changes in the patch are related to backward 
>>> compatibility.
>>> Patch 3, changes imm to max utilize this increased fragment size.
>>>
>>>
>>>
>>> IMP Note : While testing performance WITH patch ,  imm.db (300k 
>>> objects ) is re-generate,
>>> In old imm.db the value of `opensafImmSyncBatchSize` attr of 
>>> `safRdn=immManagement,safApp=safImmService` object
>>> is persistently saved with old value of 4096, it has to be updated 
>>> to new value of 65479.
>>>
>>> -AVM
>>>
>>> On 1/29/2014 4:58 PM, [email protected] wrote:
>>>>   osaf/libs/core/include/mds_papi.h |    4 +-
>>>>   osaf/libs/core/include/ncsusrbuf.h       |   17 ++-
>>>>   osaf/libs/core/mds/include/mds_core.h    |   25 +++
>>>>   osaf/libs/core/mds/include/mds_dt.h      |   25 +++-
>>>>   osaf/libs/core/mds/include/mds_dt2c.h    |    1 +
>>>>   osaf/libs/core/mds/include/mds_dt_tipc.h |    2 +
>>>>   osaf/libs/core/mds/mds_c_api.c           |   20 +++
>>>>   osaf/libs/core/mds/mds_c_db.c            |   83 ++++++++++++
>>>>   osaf/libs/core/mds/mds_c_sndrcv.c        |    2 +-
>>>>   osaf/libs/core/mds/mds_dt_tipc.c         |  206 
>>>> ++++++++++++++++++++++++++++--
>>>>   osaf/libs/core/mds/mds_dt_trans.c        |   18 +-
>>>>   11 files changed, 374 insertions(+), 29 deletions(-)
>>>>
>>>>
>>>> 1) MDS fragmentation value changed from 1400 to 
>>>> MDS_DIRECT_BUF_MAXSIZE (65535 maximum packet size)-(56 MDS header) ,
>>>> #defined MDTM_NORMAL_MSG_FRAG_SIZE_MAX MDS_DIRECT_BUF_MAXSIZE .
>>>>
>>>> 2) MDS MDS_DIRECT_BUF_MAXSIZE value changed from 8000 to (65535 
>>>> maximum packet size)-(56 MDS header) ,
>>>> #defined MDTM_NORMAL_MSG_FRAG_SIZE_MAX (65535 maximum packet 
>>>> size)-(56 MDS header)
>>>>
>>>> 3) This PAYLOAD_BUF_SIZE value is suppose to be equal to 
>>>> MDS_DIRECT_BUF_MAXSIZE
>>>> (65535 maximum packet size)-(56 MDS header) ,but in the previous 
>>>> releases of
>>>> Opensaf the value of TIPC inbuf size of MDTM_RECV_BUFFER_SIZE 
>>>> (mds_dt_tipc.c)
>>>> TIPC was limited to(8000+MDS header ) , we have in-service Upgrade 
>>>> issue,
>>>> so it is not possible to send the new MDS_DIRECT_BUF_MAXSIZE (65535 
>>>> maximum packet size)-(56 MDS header)
>>>> value previous Opensaf version nodes , so for the current release 
>>>> it is limited to 8000,
>>>> possibly adjust this in the future Opensaf releases to 
>>>> MDS_DIRECT_BUF_MAXSIZE.
>>>>
>>>>
>>>> 4) To support in-service MDS TIPC Upgrade issue 
>>>> MDTM_NORMAL_MSG_FRAG_SIZE_MIN
>>>> is provide, and this fragment size is used to send to previous 
>>>> version of Opensaf Node
>>>> while in-service Upgrade.
>>>>
>>>> In the previous releases of Opensaf the value of TIPC inbuf size of
>>>> MDTM_RECV_BUFFER_SIZE (mds_dt_tipc.c) TIPC was limited to(8000+MDS 
>>>> header) ,
>>>> we have in-service Upgrade issue, so it is not possible to send the 
>>>> new
>>>> MDS_DIRECT_BUF_MAXSIZE (65535 maximum packet size)-(56 MDS header)
>>>> value previous Opensaf version nodes , so for the current release 
>>>> it is limited to 8000,
>>>> possibly this will be removed in the future Opensaf releases .
>>>>
>>>> 5) To handle in-service Upgrade of fragmentation changes , New node 
>>>> do install & subscribe its Node Mds version.
>>>> the MDTM_NORMAL_MSG_FRAG_SIZE_MIN fragment size is used to send to 
>>>> previous version of Opensaf
>>>> Node while in-service Upgrade ,and the old nodes will not publishes 
>>>> so we need to fragment to MDTM_NORMAL_MSG_FRAG_SIZE_MIN 
>>>> size.mds_mdtm_node_info_install_tipc() & 
>>>> mds_mdtm_node_info_subscribe_tipc()
>>>>
>>>> diff --git a/osaf/libs/core/include/mds_papi.h 
>>>> b/osaf/libs/core/include/mds_papi.h
>>>> --- a/osaf/libs/core/include/mds_papi.h
>>>> +++ b/osaf/libs/core/include/mds_papi.h
>>>> @@ -57,6 +57,8 @@ extern "C" {
>>>>      1) Basic data type
>>>> \**********************************************************************/ 
>>>>
>>>>   +/* The NODE version of MDS */
>>>> +#define MDS_NODE_VERSION 1
>>>>   /* The version of MDS that this header ships with */
>>>>   #define MDS_MAJOR_VERSION 2
>>>>   #define MDS_MINOR_VERSION 1
>>>> @@ -208,7 +210,7 @@ extern "C" {
>>>>   #define NCSMDS_MAX_VDEST    32767
>>>>   #define NCSMDS_MAX_SVCS     1023
>>>>   -#define MDS_DIRECT_BUF_MAXSIZE 8000
>>>> +#define MDS_DIRECT_BUF_MAXSIZE  (65535 - 56) /*(65535 maximum 
>>>> packet size)-(56 MDS header)*/
>>>>       typedef uint8_t *MDS_DIRECT_BUFF;
>>>>   #define m_MDS_ALLOC_DIRECT_BUFF(size) mds_alloc_direct_buff(size)
>>>>   #define m_MDS_FREE_DIRECT_BUFF(x) mds_free_direct_buff(x)
>>>> diff --git a/osaf/libs/core/include/ncsusrbuf.h 
>>>> b/osaf/libs/core/include/ncsusrbuf.h
>>>> --- a/osaf/libs/core/include/ncsusrbuf.h
>>>> +++ b/osaf/libs/core/include/ncsusrbuf.h
>>>> @@ -47,8 +47,23 @@
>>>>   #ifdef  __cplusplus
>>>>   extern "C" {
>>>>   #endif
>>>> +    /* This PAYLOAD_BUF_SIZE value is suppose to be equal to 
>>>> MDS_DIRECT_BUF_MAXSIZE ,
>>>> +       but in the previous releases of Opensaf the value of TIPC  
>>>> inbuf size of
>>>> +       MDTM_RECV_BUFFER_SIZE (mds_dt_tipc.c) TIPC was limited 
>>>> to(8000+MDS header ) ,
>>>> +       we have in-service Upgrade issue, so it is not possible to 
>>>> send the new
>>>> +       MDS_DIRECT_BUF_MAXSIZE (65535 maximum packet size)-(56 MDS 
>>>> header)
>>>> +       value previous Opensaf version nodes ,  so for the current 
>>>> release it is limited to 8000,
>>>> +       possibly adjust this in the future Opensaf releases to 
>>>> MDS_DIRECT_BUF_MAXSIZE.
>>>>   -#define PAYLOAD_BUF_SIZE 1400    /* default size of packet_data 
>>>> bufrs */
>>>> +       IMP TCP Note : Their is NO issue with TCP in-service 
>>>> Upgrade  ,The value of
>>>> +       SO_RCVBUF & SO_SNDBUF of  TCP sockets was set to 64000 ( 
>>>> MDS_SND_RCV_SIZE)
>>>> +       using setsockopt()  ,the kernel doubles this value ,and 
>>>> this doubled value is returned  by
>>>> +       getsockopt().
>>>> +       Replace PAYLOAD_BUF_SIZE 8000  value with 
>>>> MDS_DIRECT_BUF_MAXSIZE (65535 maximum packet size)-(56 MDS header) ,
>>>> +       after one cycle of  in-service upgrade (below 4.4.FC 
>>>> Opensaf rpms ) #define PAYLOAD_BUF_SIZE  (65535 - 56)
>>>> +    */
>>>> +
>>>> +#define PAYLOAD_BUF_SIZE 8000
>>>> /*****************************************************************************
>>>>  
>>>>
>>>>   diff --git a/osaf/libs/core/mds/include/mds_core.h 
>>>> b/osaf/libs/core/mds/include/mds_core.h
>>>> --- a/osaf/libs/core/mds/include/mds_core.h
>>>> +++ b/osaf/libs/core/mds/include/mds_core.h
>>>> @@ -240,6 +240,19 @@ typedef struct mds_vdest_info {
>>>>     } MDS_VDEST_INFO;
>>>>   +typedef struct mds_node_info {
>>>> +
>>>> +    /* Indexing info */
>>>> +    NCS_PATRICIA_NODE node;
>>>> +
>>>> +    /* Node info */
>>>> +    NODE_ID node_id;  /* Serves as Node ID. Key for Patricia node */
>>>> +    uint16_t node_mds_ver; /* Node MDS version */
>>>> +    /* PWE and service list */
>>>> +    MDS_PWE_INFO *pwe_list;
>>>> +
>>>> +} MDS_NODE_INFO;
>>>> +
>>>>   typedef struct mds_svc_info {
>>>>         /* Indexing info */
>>>> @@ -284,6 +297,7 @@ typedef struct mds_mcm_cb {
>>>>       NCS_PATRICIA_TREE subtn_results;
>>>>       NCS_PATRICIA_TREE svc_list;    /* Tree of MDS_SVC_INFO 
>>>> information */
>>>>       NCS_PATRICIA_TREE vdest_list;    /* Tree of MDS_VDEST_INFO 
>>>> information */
>>>> +    NCS_PATRICIA_TREE node_list;   /* Tree of MDS_NODE_INFO 
>>>> information */
>>>>   } MDS_MCM_CB;
>>>>     /* Global MDSCB */
>>>> @@ -376,6 +390,11 @@ extern uint32_t mds_vdest_tbl_get_subtn_
>>>>   extern uint32_t mds_vdest_tbl_get_vdest_info_cb(MDS_VDEST_ID 
>>>> vdest_id, MDS_VDEST_INFO **vdest_info);
>>>>   extern uint32_t mds_vdest_tbl_cleanup(void);
>>>>   +/* NODE TABLE Operations */
>>>> +extern uint32_t mds_node_tbl_add(NODE_ID node_id, uint16_t 
>>>> node_mds_ver);
>>>> +extern uint32_t mds_node_tbl_del(NODE_ID node_id);
>>>> +extern uint32_t mds_node_tbl_query(NODE_ID node_id);
>>>> +
>>>>   /* PWE TABLE Operations */
>>>>     extern uint32_t mds_pwe_tbl_add(MDS_VDEST_HDL vdest_hdl, 
>>>> PW_ENV_ID pwe_id, MDS_PWE_HDL *pwe_hdl);
>>>> @@ -512,6 +531,12 @@ extern uint32_t mds_mcm_free_msg_uba_sta
>>>>   #define m_MMGR_FREE_VDEST_INFO(p)   m_NCS_MEM_FREE(p, 
>>>> NCS_MEM_REGION_TRANSIENT, \
>>>>                                       NCS_SERVICE_ID_MDS, 
>>>> MDS_MEM_VDEST_INFO)
>>>>   +#define m_MMGR_ALLOC_NODE_INFO     (MDS_NODE_INFO 
>>>> *)m_NCS_MEM_ALLOC(sizeof(MDS_NODE_INFO), \
>>>> +        NCS_MEM_REGION_TRANSIENT, NCS_SERVICE_ID_MDS, 
>>>> MDS_MEM_NODE_INFO)
>>>> +
>>>> +#define m_MMGR_FREE_NODE_INFO(p)   m_NCS_MEM_FREE(p, 
>>>> NCS_MEM_REGION_TRANSIENT, \
>>>> +        NCS_SERVICE_ID_MDS, MDS_MEM_NODE_INFO)
>>>> +
>>>>   #define m_MMGR_ALLOC_PWE_INFO     (MDS_PWE_INFO 
>>>> *)m_NCS_MEM_ALLOC(sizeof(MDS_PWE_INFO), \
>>>> NCS_MEM_REGION_TRANSIENT, \
>>>>                                       NCS_SERVICE_ID_MDS, 
>>>> MDS_MEM_PWE_INFO)
>>>> 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
>>>> @@ -109,10 +109,28 @@ typedef struct mdtm_reassembly_queue {
>>>>     #define MDTM_MAX_DIRECT_BUFF_SIZE  MDTM_MAX_SEGMENT_SIZE
>>>>   -#define MDTM_NORMAL_MSG_FRAG_SIZE   1400
>>>> +/* To support in-service Upgrade issue MDTM_NORMAL_MSG_FRAG_SIZE_MIN
>>>> +   is provide, and this fragment size is used to send to previous 
>>>> version of Opensaf Node
>>>> +   while  in-service Upgrade.
>>>>   -#define MDTM_RECV_BUFFER_SIZE 
>>>> ((MDS_DIRECT_BUF_MAXSIZE>MDTM_NORMAL_MSG_FRAG_SIZE)? \
>>>> - 
>>>> (MDS_DIRECT_BUF_MAXSIZE+SUM_MDS_HDR_PLUS_MDTM_HDR_PLUS_LEN):(MDTM_NORMAL_MSG_FRAG_SIZE+SUM_MDS_HDR_PLUS_MDTM_HDR_PLUS_LEN))
>>>> +   In the previous releases of Opensaf the value of TIPC inbuf 
>>>> size of
>>>> +   MDTM_RECV_BUFFER_SIZE (mds_dt_tipc.c) TIPC was limited 
>>>> to(8000+MDS header) ,
>>>> +   we have in-service Upgrade issue, so it is not possible to send 
>>>> the new
>>>> +   MDS_DIRECT_BUF_MAXSIZE (65535 maximum packet size)-(56 MDS header)
>>>> +   value previous Opensaf version nodes ,  so for the current 
>>>> release it is limited to 8000,
>>>> +   possibly adjust this in the future Opensaf releases to 
>>>> MDS_DIRECT_BUF_MAXSIZE.
>>>> +
>>>> +   IMP TCP Note : Their is NO issue with TCP in-service Upgrade  
>>>> ,The value of
>>>> +   SO_RCVBUF & SO_SNDBUF of  TCP sockets was set to 64000 ( 
>>>> MDS_SND_RCV_SIZE)
>>>> +   using setsockopt()  ,the kernel doubles this value ,and this 
>>>> doubled value is returned  by
>>>> +   getsockopt(). So MDTM_NORMAL_MSG_FRAG_SIZE_MAX size is used to 
>>>> send for
>>>> +   for both  previous & current versitions of Opensaf nodes which 
>>>> are using MDS TCP as transport*/
>>>> +#define MDTM_NORMAL_MSG_FRAG_SIZE_MIN 8000
>>>> +
>>>> +#define MDTM_NORMAL_MSG_FRAG_SIZE_MAX MDS_DIRECT_BUF_MAXSIZE
>>>> +
>>>> +#define MDTM_RECV_BUFFER_SIZE 
>>>> ((MDS_DIRECT_BUF_MAXSIZE>MDTM_NORMAL_MSG_FRAG_SIZE_MAX)? \
>>>> + 
>>>> (MDS_DIRECT_BUF_MAXSIZE+SUM_MDS_HDR_PLUS_MDTM_HDR_PLUS_LEN):(MDTM_NORMAL_MSG_FRAG_SIZE_MAX+SUM_MDS_HDR_PLUS_MDTM_HDR_PLUS_LEN))
>>>>     /* Prefixes and defines regarding to the MDS_TIPC*/
>>>>   @@ -124,6 +142,7 @@ typedef enum {
>>>>       MDS_PCON_INST_TYPE = 0x00030000,
>>>>       MDS_NODE_INST_TYPE = 0x00000000,
>>>>       MDS_PROCESS_INST_TYPE = 0x00050000,
>>>> +    MDS_NODE_INFO_TYPE = 0x00060000,
>>>>   } MDS_MDTM_INST_TYPES;
>>>>     /* Common to TCP and TIPC */
>>>> diff --git a/osaf/libs/core/mds/include/mds_dt2c.h 
>>>> b/osaf/libs/core/mds/include/mds_dt2c.h
>>>> --- a/osaf/libs/core/mds/include/mds_dt2c.h
>>>> +++ b/osaf/libs/core/mds/include/mds_dt2c.h
>>>> @@ -223,6 +223,7 @@ typedef enum {
>>>>       MDS_MEM_HDL_LIST,
>>>>       MDS_MEM_CACHED_EVENTS_LIST,
>>>>       MDS_MEM_BCAST_BUFF_LIST,
>>>> +    MDS_MEM_NODE_INFO,
>>>>   } MDS_MEM_SUB_ID;
>>>>     /* ******************************************** */
>>>> diff --git a/osaf/libs/core/mds/include/mds_dt_tipc.h 
>>>> b/osaf/libs/core/mds/include/mds_dt_tipc.h
>>>> --- a/osaf/libs/core/mds/include/mds_dt_tipc.h
>>>> +++ b/osaf/libs/core/mds/include/mds_dt_tipc.h
>>>> @@ -92,6 +92,8 @@ extern uint32_t mds_mdtm_vdest_subscribe
>>>>   extern uint32_t mds_mdtm_vdest_unsubscribe_tipc(MDS_VDEST_ID 
>>>> vdest_id, MDS_SUBTN_REF_VAL subtn_ref_val);
>>>>   extern uint32_t mds_mdtm_tx_hdl_register_tipc(MDS_DEST adest);
>>>>   extern uint32_t mds_mdtm_tx_hdl_unregister_tipc(MDS_DEST adest);
>>>> +extern uint32_t mds_mdtm_node_info_install_tipc();
>>>> +extern uint32_t 
>>>> mds_mdtm_node_info_subscribe_tipc(MDS_SUBTN_REF_VAL *subtn_ref_val);
>>>>     extern uint32_t mds_mdtm_send_tipc(MDTM_SEND_REQ *req);
>>>>   diff --git a/osaf/libs/core/mds/mds_c_api.c 
>>>> b/osaf/libs/core/mds/mds_c_api.c
>>>> --- a/osaf/libs/core/mds/mds_c_api.c
>>>> +++ b/osaf/libs/core/mds/mds_c_api.c
>>>> @@ -3782,6 +3782,23 @@ uint32_t mds_mcm_init(void)
>>>>           return NCSCC_RC_FAILURE;
>>>>       }
>>>>   +    /* NODE  TREE */
>>>> +    memset(&pat_tree_params, 0, sizeof(NCS_PATRICIA_PARAMS));
>>>> +    pat_tree_params.key_size = sizeof(NODE_ID);
>>>> +    if (NCSCC_RC_SUCCESS != 
>>>> ncs_patricia_tree_init(&gl_mds_mcm_cb->node_list, &pat_tree_params)) {
>>>> +        m_MDS_LOG_ERR("MCM_API : patricia_tree_init: subscription: 
>>>> failure, L mds_mcm_init");
>>>> +        if (NCSCC_RC_SUCCESS != 
>>>> ncs_patricia_tree_destroy(&gl_mds_mcm_cb->svc_list)) {
>>>> +            m_MDS_LOG_ERR("MCM_API : patricia_tree_destroy: 
>>>> service :failure, L mds_mcm_init");
>>>> +        }
>>>> +        if (NCSCC_RC_SUCCESS != 
>>>> ncs_patricia_tree_destroy(&gl_mds_mcm_cb->vdest_list)) {
>>>> +            m_MDS_LOG_ERR("MCM_API : patricia_tree_destroy: vdest 
>>>> :failure, L mds_mcm_init");
>>>> +        }
>>>> +        if (NCSCC_RC_SUCCESS != 
>>>> ncs_patricia_tree_destroy(&gl_mds_mcm_cb->subtn_results)) {
>>>> +            m_MDS_LOG_ERR("MCM_API : patricia_tree_destroy: 
>>>> subtn_results :failure, L mds_mcm_init");
>>>> +        }
>>>> +        return NCSCC_RC_FAILURE;
>>>> +    }
>>>> +
>>>>       /* Add VDEST for ADEST entry in tree */
>>>>       vdest_for_adest_node = m_MMGR_ALLOC_VDEST_INFO;
>>>>       memset(vdest_for_adest_node, 0, sizeof(MDS_VDEST_INFO));
>>>> @@ -3824,6 +3841,9 @@ uint32_t mds_mcm_destroy(void)
>>>>       /* VDEST TREE */
>>>> ncs_patricia_tree_destroy(&gl_mds_mcm_cb->vdest_list);
>>>>   +    /* NODE TREE */
>>>> + ncs_patricia_tree_destroy(&gl_mds_mcm_cb->node_list);
>>>> +
>>>>       /* Free MCM control block */
>>>>       m_MMGR_FREE_MCM_CB(gl_mds_mcm_cb);
>>>>   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
>>>> @@ -376,6 +376,89 @@ uint32_t mds_vdest_tbl_cleanup(void)
>>>>     /* ******************************************** */
>>>>   /* ******************************************** */
>>>> +/*            NODE  TABLE Operations             */
>>>> +/* ******************************************** */
>>>> +/* ******************************************** */
>>>> +/*********************************************************
>>>> +  Function NAME: mds_node_tbl_add
>>>> + *********************************************************/
>>>> +uint32_t mds_node_tbl_add(NODE_ID node_id, uint16_t node_mds_ver)
>>>> +{
>>>> +    MDS_NODE_INFO *node_info;
>>>> +
>>>> +    m_MDS_LOG_DBG("MCM_DB : Entering : mds_node_tbl_add");
>>>> +
>>>> +    /* Check if node is not already created */
>>>> +    if (ncs_patricia_tree_get(&gl_mds_mcm_cb->node_list, (uint8_t 
>>>> *)&node_id) != NULL) {
>>>> +        m_MDS_LOG_DBG("MCM_DB : Leaving : F : mds_node_tbl_add : 
>>>> VDEST already present");
>>>> +        return NCSCC_RC_FAILURE;
>>>> +    }
>>>> +
>>>> +
>>>> +    node_info = m_MMGR_ALLOC_NODE_INFO;
>>>> +    memset(node_info, 0, sizeof(MDS_NODE_INFO));
>>>> +
>>>> +    node_info->node_id = node_id;
>>>> +    node_info->node_mds_ver = node_mds_ver;
>>>> +
>>>> +
>>>> +    m_MDS_LOG_DBG("node_id=%d node_mds_ver=%d", 
>>>> node_info->node_id, node_info->node_mds_ver);
>>>> +    node_info->node.key_info = (uint8_t *)&node_info->node_id;
>>>> +
>>>> +    ncs_patricia_tree_add(&gl_mds_mcm_cb->node_list, 
>>>> (NCS_PATRICIA_NODE *)&node_info->node);
>>>> +
>>>> +    m_MDS_LOG_DBG("MCM_DB : Leaving : S : mds_node_tbl_added 
>>>> node_id : %d",node_id);
>>>> +    return NCSCC_RC_SUCCESS;
>>>> +}
>>>> +
>>>> +/*********************************************************
>>>> +  Function NAME: mds_node_tbl_del
>>>> + *********************************************************/
>>>> +uint32_t mds_node_tbl_del(NODE_ID node_id)
>>>> +{
>>>> +    MDS_NODE_INFO *node_info = NULL;
>>>> +
>>>> +    m_MDS_LOG_DBG("MCM_DB : Entering : mds_node_tbl_del");
>>>> +
>>>> +    /* Check if node is already created */
>>>> +    node_info = (MDS_NODE_INFO 
>>>> *)ncs_patricia_tree_get(&gl_mds_mcm_cb->node_list, (uint8_t 
>>>> *)&node_id);
>>>> +    if (node_info == NULL) {
>>>> +        m_MDS_LOG_DBG("MCM_DB : Leaving : F : mds_node_tbl_del : 
>>>> NODE_ID not present");
>>>> +        return NCSCC_RC_FAILURE;
>>>> +    } else {
>>>> +
>>>> + ncs_patricia_tree_del(&gl_mds_mcm_cb->node_list, 
>>>> (NCS_PATRICIA_NODE *)node_info);
>>>> +
>>>> +        /* Free memory of NODE_INFO */
>>>> +        m_MMGR_FREE_NODE_INFO(node_info);
>>>> +    }
>>>> +    m_MDS_LOG_DBG("MCM_DB : Leaving : S : mds_node_tbl_del");
>>>> +    return NCSCC_RC_SUCCESS;
>>>> +}
>>>> +
>>>> +/*********************************************************
>>>> +  Function NAME: mds_node_tbl_query
>>>> + *********************************************************/
>>>> +uint32_t mds_node_tbl_query(NODE_ID node_id)
>>>> +{
>>>> +    MDS_NODE_INFO *node_info = NULL;
>>>> +
>>>> +    m_MDS_LOG_DBG("MCM_DB : Entering : mds_node_tbl_query");
>>>> +
>>>> +    /* Check if node is already created */
>>>> +    node_info = (MDS_NODE_INFO 
>>>> *)ncs_patricia_tree_get(&gl_mds_mcm_cb->node_list, (uint8_t 
>>>> *)&node_id);
>>>> +    if (node_info == NULL) {
>>>> +        m_MDS_LOG_DBG("MCM_DB : Leaving : F : mds_node_tbl_query : 
>>>> NODE_ID not present");
>>>> +        return NCSCC_RC_FAILURE;
>>>> +    } else {
>>>> +        m_MDS_LOG_DBG("MCM_DB : Leaving : S : mds_node_tbl_query");
>>>> +        return NCSCC_RC_SUCCESS;
>>>> +    }
>>>> +
>>>> +}
>>>> +
>>>> +/* ******************************************** */
>>>> +/* ******************************************** */
>>>>   /*            PWE  TABLE Operations             */
>>>>   /* ******************************************** */
>>>>   /* ******************************************** */
>>>> diff --git a/osaf/libs/core/mds/mds_c_sndrcv.c 
>>>> b/osaf/libs/core/mds/mds_c_sndrcv.c
>>>> --- a/osaf/libs/core/mds/mds_c_sndrcv.c
>>>> +++ b/osaf/libs/core/mds/mds_c_sndrcv.c
>>>> @@ -34,7 +34,7 @@
>>>>          2. Direct send in which the user provides MDS with a flat 
>>>> buffer pointer and length
>>>>              of the buffer. Memory will be allocated to the flat 
>>>> buffer by using the MDS api
>>>>              m_MDS_ALLOC_DIRECT_BUFF(size) (where size is the 
>>>> number of bytes of memory to be
>>>> -           allocated and is limited to 8000 bytes). As buffer 
>>>> pointer is allocated by MDS, in all the
>>>> +           allocated and is limited to MDS_DIRECT_BUF_MAXSIZE 
>>>> bytes). As buffer pointer is allocated by MDS, in all the
>>>>              cases of success and failure of DIRECT sends, memory 
>>>> will be freed by the MDS and application
>>>>              should not free the memory.
>>>>   diff --git a/osaf/libs/core/mds/mds_dt_tipc.c 
>>>> b/osaf/libs/core/mds/mds_dt_tipc.c
>>>> --- a/osaf/libs/core/mds/mds_dt_tipc.c
>>>> +++ b/osaf/libs/core/mds/mds_dt_tipc.c
>>>> @@ -85,6 +85,8 @@ uint32_t mds_mdtm_vdest_install_tipc(MDS
>>>>   uint32_t mds_mdtm_vdest_uninstall_tipc(MDS_VDEST_ID vdest_id);
>>>>   uint32_t mds_mdtm_vdest_subscribe_tipc(MDS_VDEST_ID vdest_id, 
>>>> MDS_SUBTN_REF_VAL *subtn_ref_val);
>>>>   uint32_t mds_mdtm_vdest_unsubscribe_tipc(MDS_VDEST_ID vdest_id, 
>>>> MDS_SUBTN_REF_VAL subtn_ref_val);
>>>> +uint32_t mds_mdtm_node_info_install_tipc();
>>>> +uint32_t mds_mdtm_node_info_subscribe_tipc(MDS_SUBTN_REF_VAL 
>>>> *subtn_ref_val);
>>>>   uint32_t mds_mdtm_tx_hdl_register_tipc(MDS_DEST adest);
>>>>   uint32_t mds_mdtm_tx_hdl_unregister_tipc(MDS_DEST adest);
>>>>   @@ -128,6 +130,10 @@ static MDS_SUBTN_REF_VAL handle;
>>>>   static uint16_t num_subscriptions;
>>>>     uint32_t mdtm_global_frag_num;
>>>> +#define MDTM_MAX_SEND_PKT_SIZE 
>>>> (MDTM_NORMAL_MSG_FRAG_SIZE_MAX+SUM_MDS_HDR_PLUS_MDTM_HDR_PLUS_LEN) 
>>>> /* Includes the 30 header bytes(2+8+20) */
>>>> +static uint32_t msg_frag_size = MDTM_NORMAL_MSG_FRAG_SIZE_MAX;
>>>> +static uint32_t max_send_pkt_size = MDTM_MAX_SEND_PKT_SIZE;
>>>> +
>>>>   /*********************************************************
>>>>       Function NAME: mdtm_tipc_init
>>>> @@ -158,6 +164,7 @@ uint32_t mdtm_tipc_init(NODE_ID nodeid,
>>>>       num_subscriptions = 0;
>>>>       handle = 0;
>>>>       mdtm_global_frag_num = 0;
>>>> +    MDS_SUBTN_REF_VAL subtn_ref_ptr;
>>>>         /* REASSEMBLY TREE */
>>>>       memset(&pat_tree_params, 0, sizeof(pat_tree_params));
>>>> @@ -307,6 +314,21 @@ uint32_t mdtm_tipc_init(NODE_ID nodeid,
>>>>           } else {
>>>>                   m_MDS_LOG_INFO("MDTM: Successfully set default 
>>>> socket option TIPC_IMP = %d", TIPCIMPORTANCE);
>>>>           }
>>>> +    /* To handle in-service Upgrade of  fragmentation changes , 
>>>> theMDTM_NORMAL_MSG_FRAG_SIZE_MIN
>>>> +       fragment size is used to send to previous version of 
>>>> Opensaf Node while  in-service Upgrade ,
>>>> +       so the only new node do install & subscribe its Node Mds 
>>>> version
>>>> +       ( old nodes will not publishes so we need to fragment to  
>>>> MDTM_NORMAL_MSG_FRAG_SIZE_MIN size.
>>>> +
>>>> +       In the previous releases of Opensaf the value of TIPC inbuf 
>>>> size of
>>>> +       MDTM_RECV_BUFFER_SIZE (mds_dt_tipc.c) TIPC was limited 
>>>> to(8000+MDS header)  */
>>>> +    if (mds_mdtm_node_info_install_tipc() != NCSCC_RC_SUCCESS) {
>>>> +        LOG_ER("MDTM: Can't mds_mdtm_node_info_install_tipc 
>>>> TIPC_IMP err \n");
>>>> +        osafassert(0);
>>>> +    }
>>>> +    if (mds_mdtm_node_info_subscribe_tipc(&subtn_ref_ptr) != 
>>>> NCSCC_RC_SUCCESS) {
>>>> +        LOG_ER("MDTM: Can't mds_mdtm_node_info_subscribe_tipc 
>>>> TIPC_IMP err \n");
>>>> +        osafassert(0);
>>>> +    }
>>>>         return NCSCC_RC_SUCCESS;
>>>>   }
>>>> @@ -1016,11 +1038,43 @@ static uint32_t mdtm_process_discovery_e
>>>>             }
>>>>           break;
>>>> -
>>>> -    default:
>>>> +    case MDS_NODE_INFO_TYPE:
>>>> +        {
>>>> +            /* To handle in-service Upgrade of fragmentation 
>>>> changes ,
>>>> +               theMDTM_NORMAL_MSG_FRAG_SIZE_MIN   fragment size is 
>>>> used to send
>>>> +               to previous version of Opensaf Node while 
>>>> in-service Upgrade ,
>>>> +               so the only new node publishes its Node Mds version
>>>> +               ( old nodes will not publishes so we need to 
>>>> fragment to
>>>> +               MDTM_NORMAL_MSG_FRAG_SIZE_MIN size.
>>>> +
>>>> +               In the previous releases of Opensaf the value of 
>>>> TIPC  inbuf size of
>>>> +               MDTM_RECV_BUFFER_SIZE (mds_dt_tipc.c) TIPC was 
>>>> limited to(8000+MDS header)  */
>>>> +
>>>> +            uint32_t node_status = 0;
>>>> +            NODE_ID node_id = 0;
>>>> +            uint32_t node_ver = 0;
>>>> +
>>>> +            node_ver  = (uint32_t)lower;
>>>> +
>>>> +            m_MDS_LOG_INFO("MDTM: Received NODE event");
>>>> +
>>>> +            node_status = m_MDS_CHECK_TIPC_NODE_ID_RANGE(node);
>>>> +
>>>> +            if (NCSCC_RC_SUCCESS == node_status) {
>>>> +                node_id = 
>>>> ((NODE_ID)(m_MDS_GET_NCS_NODE_ID_FROM_TIPC_NODE_ID(node)));
>>>> +
>>>> +            } else {
>>>> +                LOG_ER("MDTM: Dropping  the node event,as the TIPC 
>>>> NODE_ID is not in the prescribed range=0x%08x, Event type=%d",
>>>> +                        node, discovery_event);
>>>> +                return NCSCC_RC_FAILURE;
>>>> +            }
>>>> +            mds_node_tbl_add(node_id,node_ver);
>>>> +        }
>>>> +        break;
>>>> +     default:
>>>>           {
>>>>               m_MDS_LOG_ERR
>>>> -                ("MDTM: TIPC EVENT UNSUPPORTED (default). If this 
>>>> case comes this should assert as there no other events being 
>>>> processed");
>>>> +                ("MDTM: TIPC EVENT UNSUPPORTED (default). If this 
>>>> case comes this should assert as there no other events being 
>>>> processed");
>>>>               return NCSCC_RC_FAILURE;
>>>>           }
>>>>           break;
>>>> @@ -1530,6 +1584,107 @@ uint32_t mds_mdtm_svc_subscribe_tipc(PW_
>>>>   }
>>>> /*********************************************************
>>>> +  Function NAME: mds_mdtm_node_info_install_tipc
>>>> +
>>>> +  DESCRIPTION:
>>>> +
>>>> +  ARGUMENTS:
>>>> +
>>>> +  RETURNS:  1 - NCSCC_RC_SUCCESS
>>>> +            2 - NCSCC_RC_FAILURE
>>>> +
>>>> +*********************************************************/
>>>> +uint32_t mds_mdtm_node_info_install_tipc()
>>>> +{
>>>> +    /*
>>>> +       STEP 1: Bind to socket BSRSock with Tipc name sequence
>>>> +       TIPC Name:
>>>> +       <MDS-prefix, MDS_NODE_INFO_TYPE, 0>
>>>> +       TIPC Range:
>>>> +       <0,ROLE=0,POLICY=0,NODE_VERSION > to
>>>> +       <0,ROLE=0,POLICY=0,NODE_VERSION >
>>>> +     */
>>>> +    struct sockaddr_tipc server_addr;
>>>> +    uint32_t server_type = 0, server_inst = 0;
>>>> +
>>>> +    memset(&server_addr, 0, sizeof(server_addr));
>>>> +    server_addr.family = AF_TIPC;
>>>> +
>>>> +    server_addr.addrtype = TIPC_ADDR_NAMESEQ;
>>>> +
>>>> +    server_type = server_type | MDS_TIPC_PREFIX | MDS_NODE_INFO_TYPE;
>>>> +    server_inst |= MDS_NODE_VERSION;
>>>> +
>>>> +    server_addr.addr.nameseq.type = server_type;
>>>> +    server_addr.addr.nameseq.lower = server_inst;
>>>> +    server_addr.addr.nameseq.upper = server_inst;
>>>> +    server_addr.scope = TIPC_CLUSTER_SCOPE;
>>>> +
>>>> +    if (0 != bind(tipc_cb.BSRsock, (struct sockaddr 
>>>> *)&server_addr, sizeof(server_addr))) {
>>>> +        m_MDS_LOG_ERR("MDTM: MDS-NODE-INFO-INSTALL Failure err 
>>>> :%s\n", strerror(errno));
>>>> +        return NCSCC_RC_FAILURE;
>>>> +    }
>>>> +    return NCSCC_RC_SUCCESS;
>>>> +}
>>>> +
>>>> +/*********************************************************
>>>> +
>>>> +  Function NAME: mds_mdtm_node_info_subscribe_tipc
>>>> +
>>>> +  DESCRIPTION:
>>>> +
>>>> +  ARGUMENTS:
>>>> +
>>>> +  RETURNS:  1 - NCSCC_RC_SUCCESS
>>>> +            2 - NCSCC_RC_FAILURE
>>>> +
>>>> +*********************************************************/
>>>> +uint32_t mds_mdtm_node_info_subscribe_tipc(MDS_SUBTN_REF_VAL 
>>>> *subtn_ref_val)
>>>> +{
>>>> +    /*
>>>> +       STEP 1: Subscribe to socket DSock with Tipc name sequence
>>>> +       TIPC Name:
>>>> +       <MDS-prefix, VDEST_INST_TYPE, 0>
>>>> +       TIPC Range:
>>>> +       <0,ROLE=0,POLICY=0,VDEST_ID > to
>>>> +       <0,ROLE=0,POLICY=0,VDEST_ID >
>>>> +     */
>>>> +
>>>> +    uint32_t inst = 0, server_type = 0;
>>>> +    struct tipc_subscr subscr;
>>>> +
>>>> +    if (num_subscriptions > MAX_SUBSCRIPTIONS) {
>>>> +        m_MDS_LOG_ERR("MDTM: SYSTEM CRITICAL Crossing =%d 
>>>> subscriptions\n", num_subscriptions);
>>>> +        if (num_subscriptions > MAX_SUBSCRIPTIONS_RETURN_ERROR) {
>>>> +            m_MDS_LOG_ERR
>>>> +                ("MDTM: SYSTEM has crossed the max =%d 
>>>> subscriptions , Returning failure to the user",
>>>> +                 MAX_SUBSCRIPTIONS_RETURN_ERROR);
>>>> +            return NCSCC_RC_FAILURE;
>>>> +        }
>>>> +    }
>>>> +
>>>> +    server_type = server_type | MDS_TIPC_PREFIX | MDS_NODE_INFO_TYPE;
>>>> +    inst |= MDS_NODE_VERSION;
>>>> +    memset(&subscr, 0, sizeof(subscr));
>>>> +    subscr.seq.type = HTONL(server_type);
>>>> +    subscr.seq.lower = HTONL(inst);
>>>> +    subscr.seq.upper = HTONL(inst);
>>>> +    subscr.timeout = HTONL(FOREVER);
>>>> +    subscr.filter = HTONL(TIPC_SUB_PORTS);
>>>> +    *subtn_ref_val = 0;
>>>> +    *subtn_ref_val = ++handle;
>>>> +    *((uint64_t *)subscr.usr_handle) = *subtn_ref_val;
>>>> +
>>>> +    if (send(tipc_cb.Dsock, &subscr, sizeof(subscr), 0) != 
>>>> sizeof(subscr)) {
>>>> +        m_MDS_LOG_ERR("MDTM: MDS-NODE-INFO-SUBSCRIBE Failure\n");
>>>> +        return NCSCC_RC_FAILURE;
>>>> +    }
>>>> +    ++num_subscriptions;
>>>> +
>>>> +    return NCSCC_RC_SUCCESS;
>>>> +}
>>>> +
>>>> +/*********************************************************
>>>>       Function NAME: mds_mdtm_node_subscribe_tipc
>>>>   @@ -2034,12 +2189,32 @@ uint32_t mds_mdtm_send_tipc(MDTM_SEND_RE
>>>>               {
>>>>                   uint32_t len = 0;
>>>>                   len = m_MMGR_LINK_DATA_LEN(usrbuf);    /* Getting 
>>>> total len */
>>>> -
>>>> -                m_MDS_LOG_INFO("MDTM: User Sending Data lenght=%d 
>>>> Fr_svc=%d to_svc=%d\n", len,
>>>> -                           req->src_svc_id, req->dest_svc_id);
>>>> -
>>>> -                if (len > MDTM_NORMAL_MSG_FRAG_SIZE) {
>>>> -                    /* Packet needs to be fragmented and send */
>>>> +                /* To support in-service Upgrade issue 
>>>> MDTM_NORMAL_MSG_FRAG_SIZE_MIN
>>>> +                   is provide, and this fragment size is used to 
>>>> send to previous version of Opensaf Node
>>>> +                   while  in-service Upgrade.
>>>> +
>>>> +                   In the previous releases of Opensaf the value 
>>>> of TIPC  inbuf size of
>>>> +                   MDTM_RECV_BUFFER_SIZE (mds_dt_tipc.c) TIPC was 
>>>> limited to(8000+MDS header) ,
>>>> +                   we have in-service Upgrade issue, so it is not 
>>>> possible to send the new
>>>> +                   MDS_DIRECT_BUF_MAXSIZE (65535 maximum packet 
>>>> size)-(56 MDS header)
>>>> +                   value previous Opensaf version nodes , so for 
>>>> the current release it is limited to 8000,
>>>> +                   possibly adjust this in the future Opensaf 
>>>> releases to MDS_DIRECT_BUF_MAXSIZE.
>>>> +
>>>> +                   IMP TCP Note : Their is NO issue with TCP 
>>>> in-service Upgrade  ,The value of
>>>> +                   SO_RCVBUF & SO_SNDBUF of  TCP sockets was set 
>>>> to 64000 ( MDS_SND_RCV_SIZE)
>>>> +                   using setsockopt()  ,the kernel doubles this 
>>>> value ,and this doubled value is returned  by
>>>> +                   getsockopt(). So MDTM_NORMAL_MSG_FRAG_SIZE_MAX 
>>>> size is used to send for
>>>> +                   for both  previous & current versitions of 
>>>> Opensaf nodes which are using MDS TCP as transport*/
>>>> +                if (len > MDTM_NORMAL_MSG_FRAG_SIZE_MIN) {
>>>> +                    if 
>>>> (mds_node_tbl_query(m_MDS_GET_NODE_ID_FROM_ADEST(req->adest)) != 
>>>> NCSCC_RC_SUCCESS) {
>>>> +                        msg_frag_size = 
>>>> MDTM_NORMAL_MSG_FRAG_SIZE_MIN;
>>>> +                        max_send_pkt_size = 
>>>> (MDTM_NORMAL_MSG_FRAG_SIZE_MIN+SUM_MDS_HDR_PLUS_MDTM_HDR_PLUS_LEN);
>>>> +                        m_MDS_LOG_DBG("MDTM:Sending message TO 
>>>> node_id=%d with msg_frag_size = %d max_send_pkt_size = %d",
>>>> + m_MDS_GET_NODE_ID_FROM_ADEST(req->adest), msg_frag_size, 
>>>> max_send_pkt_size);
>>>> +                    }
>>>> +                }
>>>> +
>>>> +                if (len > msg_frag_size) {
>>>>                       status = mdtm_frag_and_send(req, 
>>>> frag_seq_num, tipc_id);
>>>>                       return status;
>>>>   @@ -2155,7 +2330,6 @@ uint32_t mds_mdtm_send_tipc(MDTM_SEND_RE
>>>>               2 - NCSCC_RC_FAILURE
>>>> *********************************************************/
>>>> -#define MDTM_MAX_SEND_PKT_SIZE 
>>>> (MDTM_NORMAL_MSG_FRAG_SIZE+SUM_MDS_HDR_PLUS_MDTM_HDR_PLUS_LEN) /* 
>>>> Includes the 30 header bytes(2+8+20) */
>>>>     #ifdef MDS_CHECKSUM_ENABLE_FLAG
>>>>   #define MDTM_FRAG_HDR_PLUS_LEN_2   13
>>>> @@ -2187,22 +2361,22 @@ uint32_t mdtm_frag_and_send(MDTM_SEND_RE
>>>>         len = m_MMGR_LINK_DATA_LEN(usrbuf);    /* Getting total len */
>>>>   -    if (len > (32767 * MDTM_NORMAL_MSG_FRAG_SIZE)) {    /* We 
>>>> have 15 bits for frag number so 2( pow 15) -1=32767 */
>>>> +    if (len > (32767 * MDTM_NORMAL_MSG_FRAG_SIZE_MAX)) { /* We 
>>>> have 15 bits for frag number so 2( pow 15) -1=32767 */
>>>>           m_MDS_LOG_CRITICAL
>>>>               ("MDTM: App. is trying to send data more than MDTM 
>>>> Can fragment and send, Max size is =%d\n",
>>>> -             32767 * MDTM_NORMAL_MSG_FRAG_SIZE);
>>>> +             32767 * MDTM_NORMAL_MSG_FRAG_SIZE_MAX);
>>>>           m_MMGR_FREE_BUFR_LIST(usrbuf);
>>>>           return NCSCC_RC_FAILURE;
>>>>       }
>>>>         while (len != 0) {
>>>> -        if (len > MDTM_NORMAL_MSG_FRAG_SIZE) {
>>>> +        if (len > msg_frag_size) {
>>>>               if (i == 1) {
>>>> -                len_buf = MDTM_MAX_SEND_PKT_SIZE;
>>>> +                len_buf = max_send_pkt_size;
>>>>                   frag_val = MORE_FRAG_BIT | i;
>>>>               } else {
>>>> -                if ((len + MDTM_FRAG_HDR_PLUS_LEN_2) > 
>>>> MDTM_MAX_SEND_PKT_SIZE) {
>>>> -                    len_buf = MDTM_MAX_SEND_PKT_SIZE;
>>>> +                if ((len + MDTM_FRAG_HDR_PLUS_LEN_2) > 
>>>> max_send_pkt_size) {
>>>> +                    len_buf = max_send_pkt_size;
>>>>                       frag_val = MORE_FRAG_BIT | i;
>>>>                   } else {
>>>>                       len_buf = len + MDTM_FRAG_HDR_PLUS_LEN_2;
>>>> diff --git a/osaf/libs/core/mds/mds_dt_trans.c 
>>>> b/osaf/libs/core/mds/mds_dt_trans.c
>>>> --- a/osaf/libs/core/mds/mds_dt_trans.c
>>>> +++ b/osaf/libs/core/mds/mds_dt_trans.c
>>>> @@ -41,7 +41,7 @@
>>>>     #define SUM_MDS_HDR_PLUS_MDTM_HDR_PLUS_LEN_TCP ((2 + 
>>>> MDS_SEND_ADDRINFO_TCP + MDTM_FRAG_HDR_LEN_TCP + MDS_HDR_LEN_TCP))
>>>>   -#define MDTM_MAX_SEND_PKT_SIZE_TCP 
>>>> (MDTM_NORMAL_MSG_FRAG_SIZE+SUM_MDS_HDR_PLUS_MDTM_HDR_PLUS_LEN_TCP) 
>>>> /* Includes the 30 header bytes(2+8+20) */
>>>> +#define MDTM_MAX_SEND_PKT_SIZE_TCP 
>>>> (MDTM_NORMAL_MSG_FRAG_SIZE_MAX+SUM_MDS_HDR_PLUS_MDTM_HDR_PLUS_LEN_TCP) 
>>>> /* Includes the 30 header bytes(2+8+20) */
>>>>     uint32_t mdtm_global_frag_num_tcp;
>>>>   extern struct pollfd pfd[2];
>>>> @@ -363,16 +363,16 @@ static uint32_t mdtm_frag_and_send_tcp(M
>>>>         len = m_MMGR_LINK_DATA_LEN(usrbuf);    /* Getting total len */
>>>>   -    if (len > (32767 * MDTM_NORMAL_MSG_FRAG_SIZE)) {    /* We 
>>>> have 15 bits for frag number so 2( pow 15) -1=32767 */
>>>> +    if (len > (32767 * MDTM_NORMAL_MSG_FRAG_SIZE_MAX)) { /* We 
>>>> have 15 bits for frag number so 2( pow 15) -1=32767 */
>>>>           m_MDS_LOG_CRITICAL
>>>>               ("MDTM: App. is trying to send data more than MDTM 
>>>> Can fragment and send, Max size is =%d\n",
>>>> -             32767 * MDTM_NORMAL_MSG_FRAG_SIZE);
>>>> +             32767 * MDTM_NORMAL_MSG_FRAG_SIZE_MAX);
>>>>           m_MMGR_FREE_BUFR_LIST(usrbuf);
>>>>           return NCSCC_RC_FAILURE;
>>>>       }
>>>>         while (len != 0) {
>>>> -        if (len > MDTM_NORMAL_MSG_FRAG_SIZE) {
>>>> +        if (len > MDTM_NORMAL_MSG_FRAG_SIZE_MAX) {
>>>>               if (i == 1) {
>>>>                   len_buf = MDTM_MAX_SEND_PKT_SIZE_TCP;
>>>>                   frag_val = MORE_FRAG_BIT | i;
>>>> @@ -551,8 +551,12 @@ uint32_t mds_mdtm_send_tcp(MDTM_SEND_REQ
>>>>                     m_MDS_LOG_INFO("MDTM: User Sending Data 
>>>> lenght=%d Fr_svc=%d to_svc=%d\n", len,
>>>>                              req->src_svc_id, req->dest_svc_id);
>>>> -
>>>> -                if (len > MDTM_NORMAL_MSG_FRAG_SIZE) {
>>>> +                /*Their is NO implication on TCP in-service 
>>>> Upgrade  because of
>>>> +                  MDTM_NORMAL_MSG_FRAG_SIZE_MAX (65535 maximum 
>>>> packet size)-(56 MDS header)  change ,
>>>> +                  The value of SO_RCVBUF & SO_SNDBUF of TCP 
>>>> sockets was set to 64000 ( MDS_SND_RCV_SIZE)
>>>> +                  using setsockopt()  ,the kernel doubles this 
>>>> value ,and this doubled value is returned  by
>>>> +                  getsockopt().*/
>>>> +                if (len > MDTM_NORMAL_MSG_FRAG_SIZE_MAX) {
>>>>                       /* Packet needs to be fragmented and send */
>>>>                       status = mdtm_frag_and_send_tcp(req, 
>>>> frag_seq_num, id);
>>>>                       return status;
>>>> @@ -678,7 +682,7 @@ void mdtm_process_poll_recv_data_tcp(voi
>>>>               /* Receive all incoming data on this socket */
>>>> /*******************************************************/
>>>>   -            recd_bytes = recv(tcp_cb->DBSRsock, 
>>>> tcp_cb->len_buff, 2, 0);
>>>> +            recd_bytes = recv(tcp_cb->DBSRsock, tcp_cb->len_buff, 
>>>> 2, MSG_NOSIGNAL);
>>>>               if (0 == recd_bytes) {
>>>>                   LOG_ER("MDTM:socket_recv() = %d, conn lost with 
>>>> dh server, exiting library err :%s", recd_bytes, strerror(errno));
>>>>                   close(tcp_cb->DBSRsock);
>>>>
>>>> ------------------------------------------------------------------------------
>>>>  
>>>>
>>>> WatchGuard Dimension instantly turns raw network data into actionable
>>>> security intelligence. It gives you real-time visual feedback on key
>>>> security issues and trends.  Skip the complicated setup - simply 
>>>> import
>>>> a virtual appliance and go from zero to informed in seconds.
>>>> http://pubads.g.doubleclick.net/gampad/clk?id=123612991&iu=/4140/ostg.clktrk
>>>>  
>>>>
>>>> _______________________________________________
>>>> Opensaf-devel mailing list
>>>> [email protected]
>>>> https://lists.sourceforge.net/lists/listinfo/opensaf-devel
>>>
>>>
>>>
>>> ------------------------------------------------------------------------------
>>>  
>>>
>>> Managing the Performance of Cloud-Based Applications
>>> Take advantage of what the Cloud has to offer - Avoid Common Pitfalls.
>>> Read the Whitepaper.
>>> http://pubads.g.doubleclick.net/gampad/clk?id=121051231&iu=/4140/ostg.clktrk
>>>  
>>>
>>>
>>>
>>> _______________________________________________
>>> Opensaf-devel mailing list
>>> [email protected]
>>> https://lists.sourceforge.net/lists/listinfo/opensaf-devel
>>
>>
>>
>> ------------------------------------------------------------------------------
>> Managing the Performance of Cloud-Based Applications
>> Take advantage of what the Cloud has to offer - Avoid Common Pitfalls.
>> Read the Whitepaper.
>> http://pubads.g.doubleclick.net/gampad/clk?id=121051231&iu=/4140/ostg.clktrk
>>
>>
>> _______________________________________________
>> Opensaf-devel mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/opensaf-devel
>

------------------------------------------------------------------------------
Managing the Performance of Cloud-Based Applications
Take advantage of what the Cloud has to offer - Avoid Common Pitfalls.
Read the Whitepaper.
http://pubads.g.doubleclick.net/gampad/clk?id=121051231&iu=/4140/ostg.clktrk
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to