Hi Hans ,

*ACK from me for your published patch , please go-ahead and push the 
patch as it is.*

I discussion/syncdup with Surya,  following are the summary points :

By *default *MDS does FULL encode/decode between  different nodes 
(inter-node communication), also the behavior is same when the MDS 
messaging happens between 32-bit and 64-bit processes. your published  
Patch: #654 is not impacting any of these default functionality**.

Even though MDS is providing a compile time flag called "mds_arch", when 
this flag is set explicitly to the same value on different nodes, then 
only MDS messaging across nodes will happen with FLAT encode/decode 
routines, but most  of the OpenSAF services (mds application)  are still 
doing  FULL encode/decode even when the MDS is triggered FLAT 
encode/decode callbacks ( Middle ware applications are not using 
advantage of "mds_arch" ).

Till now none of the OpenSAF user are using the 'mds_arch' field and all 
are going with the MDS default settings. So they are NO  impacts of 
deprecating "mds_arch" and considering that for versions.

-AVM

On 5/7/2014 12:20 PM, SuryaNarayana Garlapati wrote:
> OK,
> Here goes the solution.
> There is a 8 bit field in each message that is being exchanged between 
> the services (which contains the message priority, mds prot_ver(mds 
> protocol and mds version)) when message send is attempted. 6 bits are 
> allocated for the mds prot_ver, present value for this field is 0xA8. 
> This field can be used for versioning(and intended for this type of 
> changes in MDS). This version can be dynamically learnt for a 
> destination, when the first message is received from that destination 
> and is stored in the Subscription result table. MDS prot_ver value 
> will be changed in this release. So we can identify the old and new 
> ones. If the destination is an old one, we will send with the old 
> logic and if its a new one we will send with the bigger message.
>
> There is other solution, but this includes quite code changes. For 
> example, In each node bind a new type say X and in each process 
> subscribe for this  X. When we get up this means, it indicates a new 
> node and messaging is with bigger size else the normal one. Only a 
> single extra bind is done for a node.
>
> There is one more solution, but it breaks the inservice upgradabilty, 
> where in which the vdest id range is decreased.
>
>
> Regards
> Surya
>
> On Wednesday 07 May 2014 08:44 AM, A V Mahesh wrote:
>> Surya,
>>
>> Thank for reiterating  arch_word of the MDS feature ,we all in sync.
>>
>> On 5/6/2014 3:55 PM, SuryaNarayana Garlapati wrote:
>>>> MDS version unless we get alternate bits/variables used for  MDS 
>>>> version. 
>>> [Surya] Thats the reason i am asking for some time. 
>>
>> [AVM] If we get some alternate bits/variables used for  MDS version 
>> this will the best Option
>>             and we can retain arch_word MDS feature.
>>
>>
>> On 5/6/2014 3:55 PM, SuryaNarayana Garlapati wrote:
>>>>
>>>> 6)  This  current patch Honors  the default Opensaf configuration ` 
>>>> mds_arch=0`  behavior ( point 1 & 2 ) and it removed
>>>>       hidden  `same arc message optimization`  feature related code 
>>>> and used  those  3bits/variable for the purpose of  MDS version.
>>> [Surya] Current patch has still problems. I am repeating the same, 
>>> but for your convenience, they are listed below.
>>> 1. Its taking out MDS optimization feature for the performance 
>>> enhancement of the messaging.
>>
>> [AVM] we all in sync on this , now we are at the point  whether we 
>> should expose this or not to OpenSAF users?
>>
>>> 2. 64 bit and 32 bit combination will not work on the local node as 
>>> it is doing flat encode which is wrong.
>>
>> [AVM] The current patch do  ENC_TYPE_FULL for mixed 32/64 bit clients 
>> on the same Node.
>>
>> -AVM
>>
>>
>> On 5/6/2014 3:55 PM, SuryaNarayana Garlapati wrote:
>>> Before going ahead, Following is the explanation for the arch_word 
>>> of the MDS.
>>>
>>> Arch word(4bits) is combination of architecture and bit size of the 
>>> machine. 3 bits are allocated
>>> for architecture and 1 bit is allocated for bit size.
>>> architecture of value 0 means unspecified.
>>>
>>> Message encoding is done as follows:
>>> 1. If the source and destination of the message is same process, 
>>> then copy callback is called.
>>> 2. If source and destination arch_word are same,
>>> then encode flat is called.
>>>
>>> But there are some exceptions here,
>>>
>>> Say there are two nodes, A(Intel) and B(Powerpc) communicating with 
>>> each other and are 64 bit each and
>>> opensaf code was compiled without giving any mds_arch input. In this 
>>> case mds_arch is set to default 0.
>>> So as per the rule, encode flat callback should be called. But in 
>>> this case if the flat encode is called, then
>>> the communication between A and B will not work as one is little 
>>> endian and other is big endian.
>>> For handling this type of situations where the mds_arch is 
>>> unspecified, mds checks for the mds_arch
>>> and if it is set to 0, MDS will call the encode full such that the 
>>> communication will work between the nodes
>>> as the message is fully encoded.
>>>
>>> Encode flat will also be called if the source and destination are on 
>>> the same node and arch_word is same.
>>>
>>> 3. If source and destination arch_word are different, then encode 
>>> full is called. In this case the source and destination
>>> can be on the same or different node.
>>>
>>> On Tuesday 06 May 2014 09:05 AM, A V Mahesh wrote:
>>>> Hi All,
>>>>
>>>> I re-verified the behavior of OpenSAF 
>>>> MDS_ENC_TYPE_FULL/MDS_ENC_TYPE_FLAT messaging
>>>> and its optimization , following is my observation and option:
>>>>
>>>> 1)  In the default OpenSAF  configuration (` mds_arch=0` ) , 
>>>> messaging across the node is  ENC_TYPE_FULL and
>>>>      messaging with-in the node is ENC_TYPE_FLAT  .
>>> [Surya] See the explanation in point 2 and point 3.
>>>>
>>>> 2)  Even though Opensaf  is configured with default `mds_arch=0`, 
>>>> if their is difference of  32--bit application communicating to 
>>>> 64-bit   middle-ware
>>>>      ( mixed 32/64 bit clients on the same Node),  messaging 
>>>> with-in  the node  is also ENC_TYPE_FULL.
>>> [Surya] See the explanation in point 3.
>>>>
>>>> 3)  when OpenSAF  is configured with `mds_arch=1... to 7` messaging 
>>>> across  & with-in the node  is ENC_TYPE_FLAT ,
>>>>     hear we have advantage of  message optimization , only when 
>>>> explicitly enabling this  configuration .
>>> [Surya] See the exception explanation in point 2. MDS was always 
>>> designed to have this optimization a long time. It was just the
>>> build system was not using it.
>>>>
>>>> 4)  Unfortunate the same arc message optimization feature got 
>>>> broken in few services such as RDE & PLM
>>>>     doesn't support ENC_TYPE_FLAT , we need fix these issue along 
>>>> with in-service upgrade  to make it work properly .
>>> [Surya] Optimization feature is triggered by MDS. RDE & PLM are 
>>> missing the implementation for this callbacks.
>>>>
>>>> 5)  One more important note is that  the `same arc message 
>>>> optimization` feature was not exposed  to OpenSAF user till now.
>>> [Surya] It was always present in the confiure. Its just that, it was 
>>> not used any time and default option was choosed for the mds_arch.
>>>>
>>>> 6)  This  current patch Honors  the default Opensaf configuration ` 
>>>> mds_arch=0`  behavior ( point 1 & 2 ) and it removed
>>>>       hidden  `same arc message optimization`  feature related code 
>>>> and used  those  3bits/variable for the purpose of  MDS version.
>>> [Surya] Current patch has still problems. I am repeating the same, 
>>> but for your convenience, they are listed below.
>>> 1. Its taking out MDS optimization feature for the performance 
>>> enhancement of the messaging.
>>> 2. 64 bit and 32 bit combination will not work on the local node as 
>>> it is doing flat encode which is wrong.
>>>>
>>>>
>>>> So I agree with Hans and let us not regressed for Un exposed feature , 
>>> [Surya] Feature is present, the only thing is it was not used.
>>>> and we will use the ARCHTYPE 3 bits for
>>>>  MDS version unless we get alternate bits/variables used for MDS 
>>>> version. 
>>> [Surya] Thats the reason i am asking for some time.
>>>> I also NOT much in favor of little bit expensive
>>>> `new Node install & subscribe its Mds version` (My previously 
>>>> published approach)
>>>>
>>>> So following are current options :
>>>>
>>>>   - Use ARCHTYPE 3 bits for  MDS version and discard un exposed 
>>>> feature ( `mds_arch` config option)
>>>>
>>>>   - Find out alter native bits for MDS version fix all the 
>>>> ENC_TYPE_FLAT issue with in-service upgrade
>>>>     and expose `same arc message optimization` feature to OpenSAF 
>>>> users.
>>>>
>>>>   - Use `new Node install & subscribe` option for Mds version (My 
>>>> previously published approach) and fix
>>>>     all the  ENC_TYPE_FLAT issue with in-service upgrade and expose 
>>>> `same arc message optimization`
>>>>     feature to OpenSAF users.
>>>>
>>>>
>>>> -AVM
>>>>
>>>> On 5/1/2014 2:45 PM, SuryaNarayana Garlapati wrote:
>>>>>
>>>>> On Thursday 01 May 2014 02:30 PM, Hans Feldt wrote:
>>>>>> Let's be clear that MDS a pure internal opensaf service since 
>>>>>> quite a long time. There are no "applications" to consider at 
>>>>>> all. This means the only thing to care about is in-service 
>>>>>> performance and making sure characteristics are improved, not 
>>>>>> regressed.
>>>>> [Surya] I am saying in the context of internal messaging between 
>>>>> the services which use MDS. Yes, thats what even i am trying to.
>>>>>>
>>>>>> I am not sure we have to maintain some legacy requirement of 
>>>>>> mixed 32/64 bit clients on the same system. I don't see why we 
>>>>>> should.
>>>>> [Surya] This is not limited to even 32/64 bit. Its how the 
>>>>> encoding is handled for the destinations.
>>>>>>
>>>>>> Thanks,
>>>>>> Hans
>>>>>>
>>>>>>> -----Original Message-----
>>>>>>> From: SuryaNarayana Garlapati 
>>>>>>> [mailto:suryanarayana.garlap...@oracle.com]
>>>>>>> Sent: den 1 maj 2014 10:54
>>>>>>> To: A V Mahesh
>>>>>>> Cc: opensaf-devel@lists.sourceforge.net
>>>>>>> Subject: Re: [devel] [PATCH 3 of 4] mds: use TIPC 
>>>>>>> segmentation/reassembly [#654]
>>>>>>>
>>>>>>>
>>>>>>> On Thursday 01 May 2014 01:04 PM, A V Mahesh wrote:
>>>>>>>> On 5/1/2014 10:16 AM, SuryaNarayana Garlapati wrote:
>>>>>>>>> The archtype is not a legacy one, it was introduced to have the
>>>>>>>>> optimization for the message encoding by the applications.
>>>>>>>> Passing compile flags `mds_arch=1`  `mds_arch=2` (mds_arch, [The
>>>>>>>> arch-type input to MDS - valid values 1-7]) , is not a standard
>>>>>>>> Open-Source ( enterprise things for legacy product ) option for
>>>>>>>> compilations.
>>>>>>> [Surya] Wrong, if you see any standard linux configure options 
>>>>>>> for any
>>>>>>> linux application code distributions, they do provide the 
>>>>>>> options for
>>>>>>> supporting the options to provide such powerpc, intel, 32/64bit 
>>>>>>> etc. So
>>>>>>> similar is the configure options for opensaf as well. For 
>>>>>>> example you
>>>>>>> can see the configure options for the net-snmp as well.
>>>>>>>> Open source user not need to Understand/get-Educate  about this
>>>>>>>> internal options ,
>>>>>>> [Surya] This is not a internal option, configure option which is 
>>>>>>> exposed
>>>>>>> to user as well.
>>>>>>>> we are ok loose advantage of flat encode optimization ,
>>>>>>>> from now we want to send full_encode to different node.
>>>>>>> [Surya] This is not only done for optimization, this internally 
>>>>>>> effects
>>>>>>> the message performance between the opensaf services which do huge
>>>>>>> messaging.
>>>>>>> I am on way of thinking the solution for this. Lets wait.
>>>>>>>>
>>>>>>>> We are also raising enhancement ticket for  code clean.
>>>>>>>>
>>>>>>>> -AVM
>>>>>>>>
>>>>>>>>
>>>>>>>> On 5/1/2014 10:16 AM, SuryaNarayana Garlapati wrote:
>>>>>>>>> On Thursday 01 May 2014 09:56 AM, A V Mahesh wrote:
>>>>>>>>>> Hi Surya,
>>>>>>>>>>
>>>>>>>>>> On 5/1/2014 7:28 AM, Suryanarayana Garlapati wrote:
>>>>>>>>>>> Nack.
>>>>>>>>>>> MDS ARCHWORD is used for deciding the factor whether the 
>>>>>>>>>>> message
>>>>>>>>>>> which is being sent to the destination should be encoded
>>>>>>>>>>> full/flat/copied. This
>>>>>>>>>>> bits were introduced to do a optimization in the way the 
>>>>>>>>>>> callbacks
>>>>>>>>>>> encode full/flat are called. For example, if there are two
>>>>>>>>>>> processes(can be present in the same node or different node) 
>>>>>>>>>>> and
>>>>>>>>>>> there architecture and bit size is same, so in this case, the
>>>>>>>>>>> encode flat can be called (or simply a flat copy of the 
>>>>>>>>>>> message can
>>>>>>>>>>> be done in the UB). If these bits were not used, earlier the
>>>>>>>>>>> messages was being full encoded when the messages were sent to
>>>>>>>>>>> another node. At the same time, the arch field is given in the
>>>>>>>>>>> configure such that this can be used for different 
>>>>>>>>>>> architectures
>>>>>>>>>>> such as the powerpc, etc.
>>>>>>>>>> [AVM]
>>>>>>>>>>       “ARCHTYPE”  is getting only used while cross-compiling, 
>>>>>>>>>> and to
>>>>>>>>>> distinguish architecture flavors:  x86,
>>>>>>>>>>        PowerPC, m68k ,ect .
>>>>>>>>>> In the code "arch_word" is used while encoding whether to do
>>>>>>>>>> MDS_ENC_TYPE_FLAT/MDS_ENC_TYPE_FULL.
>>>>>>>>>>
>>>>>>>>>>        Keeping  “ARCHTYPE” doesn't have any significance in 
>>>>>>>>>> current
>>>>>>>>>> Open-sourced Opnesaf code ,
>>>>>>>>> [Surya] This is provided to accommodate different 
>>>>>>>>> architectures and
>>>>>>>>> is a build option which optimizes the applications way of message
>>>>>>>>> encoding(full/flat) and corresponding decode(full/flat).
>>>>>>>>> So that means, you want to remove this support and introduce 
>>>>>>>>> the over
>>>>>>>>> head again. One more thing, with the new changes if you have two
>>>>>>>>> nodes one with powerpc and intel, both will not be able to 
>>>>>>>>> communicate
>>>>>>>>> each other as both will result in flat encode/flat decode(as the
>>>>>>>>> value is one with the latest changes).
>>>>>>>>>> why because  In the current MDS messaging we do full encoded 
>>>>>>>>>> when
>>>>>>>>>> the messages were sent to another process/node, irrelevant of
>>>>>>>>>> “ARCHTYPE”
>>>>>>>>> [Surya] Wrong, the decision is done always on the archword only.
>>>>>>>>>>        I already verified cross 32/64  middle-ware & application
>>>>>>>>>> combination , all the fowls are working fine .
>>>>>>>>> [Surya] As you said this might work, but you are loosing the
>>>>>>>>> optimization and would always result in full encode/full 
>>>>>>>>> decode of
>>>>>>>>> application messages which is an overhead.
>>>>>>>>>>> I am thinking of a solution for this and will get back to you.
>>>>>>>>>> [AVM] we already have an alternative option of new node do 
>>>>>>>>>> install
>>>>>>>>>> & subscribe its Node Mds version, to handle in-service Upgrade ,
>>>>>>>>>>              but we used legacy “ARCHTYPE” 3 bits for Mds 
>>>>>>>>>> version
>>>>>>>>>> which is optimized solution then install & subscribe.
>>>>>>>>> [Surya] Thats what we had discussed before as well. The 
>>>>>>>>> archtype is
>>>>>>>>> not a legacy one, it was introduced to have the optimization 
>>>>>>>>> for the
>>>>>>>>> message encoding by the applications.
>>>>>>>>>> -AVM
>>>>>>>>>>>
>>>>>>>>>>> Regards
>>>>>>>>>>> Surya
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> ----- Original Message -----
>>>>>>>>>>> From: osafde...@gmail.com
>>>>>>>>>>> To: mahesh.va...@oracle.com
>>>>>>>>>>> Cc: opensaf-devel@lists.sourceforge.net
>>>>>>>>>>> Sent: Tuesday, April 29, 2014 10:58:53 AM GMT +05:30 Chennai,
>>>>>>>>>>> Kolkata, Mumbai, New Delhi
>>>>>>>>>>> Subject: [devel] [PATCH 3 of 4] mds: use TIPC
>>>>>>>>>>> segmentation/reassembly [#654]
>>>>>>>>>>>
>>>>>>>>>>>    configure.ac                          |  21 
>>>>>>>>>>> ---------------------
>>>>>>>>>>>    osaf/libs/core/mds/Makefile.am        |   1 -
>>>>>>>>>>>    osaf/libs/core/mds/include/mds_dt2c.h |  17 
>>>>>>>>>>> ++++++++---------
>>>>>>>>>>>    osaf/libs/core/mds/mds_c_sndrcv.c     |  14 +++++---------
>>>>>>>>>>>    osaf/libs/core/mds/mds_dt_tipc.c      |  11 ++++++++++-
>>>>>>>>>>>    osaf/libs/core/mds/mds_log.c          |   4 ++--
>>>>>>>>>>>    6 files changed, 25 insertions(+), 43 deletions(-)
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> TIPC supports sending message with a maximum length of 66000 
>>>>>>>>>>> bytes.
>>>>>>>>>>> MDS supports
>>>>>>>>>>> sending even bigger messages, upto ~46Mb. MDS has used an 
>>>>>>>>>>> internal
>>>>>>>>>>> fragmentation
>>>>>>>>>>> of just 1400 bytes (MDTM_NORMAL_MSG_FRAG_SIZE) despite that the
>>>>>>>>>>> receive buffer
>>>>>>>>>>> is 8000 bytes (MDS_DIRECT_BUF_MAXSIZE)
>>>>>>>>>>>
>>>>>>>>>>> This patch changes MDS to use TIPC segmentation/reassembly. 
>>>>>>>>>>> This
>>>>>>>>>>> gives benefits
>>>>>>>>>>> such as secure transmission (TIPC does retransmission). TIPC 
>>>>>>>>>>> send
>>>>>>>>>>> congestion is
>>>>>>>>>>> reduced since TIPC counts messages not bytes. Less 
>>>>>>>>>>> processing done
>>>>>>>>>>> in user
>>>>>>>>>>> space in the sending opensaf or client process.
>>>>>>>>>>>
>>>>>>>>>>> Since the receive buffer of older MDS cores is limited to 8000
>>>>>>>>>>> bytes we have be
>>>>>>>>>>> sure not to send larger messages than that to older cores.
>>>>>>>>>>> Otherwise we have
>>>>>>>>>>> problems with in-service upgradeability.
>>>>>>>>>>>
>>>>>>>>>>> Each MDS TIPC port is bound to a functional address - a port 
>>>>>>>>>>> name.
>>>>>>>>>>> The port name
>>>>>>>>>>> consists of 32 bit type and 32 bit instance. The 4 msb of the
>>>>>>>>>>> instance word
>>>>>>>>>>> contains the so called "archword" field. The msb indicates 
>>>>>>>>>>> if this
>>>>>>>>>>> MDS core is
>>>>>>>>>>> 32 or 64 bit. The remaining 3 bits is now used as a version 
>>>>>>>>>>> field.
>>>>>>>>>>> Version 0 is
>>>>>>>>>>> used by older versions of MDS, version 1 is now used to 
>>>>>>>>>>> indicate
>>>>>>>>>>> the capability
>>>>>>>>>>> for longer fragmentation.
>>>>>>>>>>>
>>>>>>>>>>> This information is part of the published port name thus a
>>>>>>>>>>> subscriber will
>>>>>>>>>>> get them using the TIPC discovery service. These bits are 
>>>>>>>>>>> ignored
>>>>>>>>>>> by old MDS
>>>>>>>>>>> cores, so it can receive messages from a new MDS core. When 
>>>>>>>>>>> sending
>>>>>>>>>>> a message
>>>>>>>>>>> this bit is used to understand if the peer uses TIPC
>>>>>>>>>>> segmentation/reassembly
>>>>>>>>>>> (or not) and adapt the limit accordingly.
>>>>>>>>>>>
>>>>>>>>>>> The possibility to set mds_arch using configure has been 
>>>>>>>>>>> removed.
>>>>>>>>>>>
>>>>>>>>>>> The change is in-service compliant and can be upgraded into 
>>>>>>>>>>> a system.
>>>>>>>>>>>
>>>>>>>>>>> diff --git a/configure.ac b/configure.ac
>>>>>>>>>>> --- a/configure.ac
>>>>>>>>>>> +++ b/configure.ac
>>>>>>>>>>> @@ -470,27 +470,6 @@ if test "$enable_java" = no; then
>>>>>>>>>>>    fi
>>>>>>>>>>> #############################################
>>>>>>>>>>> -# MDS ARCH TYPE: MDS advises message encode/decode
>>>>>>>>>>> -# optimization to its clients if the sender and receiver
>>>>>>>>>>> -# are of "compatible-type". For this optimization to work,
>>>>>>>>>>> -# the sender's platform and receiver's platform should be
>>>>>>>>>>> -# similar (for e.g. both PowerPC) and use an libncs_core built
>>>>>>>>>>> -# with the same value for "mds_arch". An "mds_arch" value of 0
>>>>>>>>>>> -# is the default value and stands for a platform which is NOT
>>>>>>>>>>> -# compatible with any platform.
>>>>>>>>>>> -#############################################
>>>>>>>>>>> -
>>>>>>>>>>> -AC_ARG_VAR([mds_arch], [The arch-type input to MDS - valid 
>>>>>>>>>>> values
>>>>>>>>>>> 1-7])
>>>>>>>>>>> -
>>>>>>>>>>> -if test "$mds_arch" = ""; then
>>>>>>>>>>> -        mdsarchtype=0
>>>>>>>>>>> -else
>>>>>>>>>>> -        mdsarchtype=$mds_arch
>>>>>>>>>>> -fi
>>>>>>>>>>> -
>>>>>>>>>>> -AC_SUBST([MDS_WORD_ARCH_FLAGS], [" 
>>>>>>>>>>> -DMDS_ARCH_TYPE=$mdsarchtype"])
>>>>>>>>>>> -
>>>>>>>>>>> -#############################################
>>>>>>>>>>>    # Checks for libraries.
>>>>>>>>>>> #############################################
>>>>>>>>>>>    PKG_CHECK_MODULES([XML2], [libxml-2.0])
>>>>>>>>>>> diff --git a/osaf/libs/core/mds/Makefile.am
>>>>>>>>>>> b/osaf/libs/core/mds/Makefile.am
>>>>>>>>>>> --- a/osaf/libs/core/mds/Makefile.am
>>>>>>>>>>> +++ b/osaf/libs/core/mds/Makefile.am
>>>>>>>>>>> @@ -23,7 +23,6 @@ SUBDIRS = include
>>>>>>>>>>>    noinst_LTLIBRARIES = libmds.la
>>>>>>>>>>>      libmds_la_CPPFLAGS = \
>>>>>>>>>>> -    @MDS_WORD_ARCH_FLAGS@ \
>>>>>>>>>>>        $(AM_CPPFLAGS)
>>>>>>>>>>>      libmds_la_LDFLAGS = -static
>>>>>>>>>>> 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
>>>>>>>>>>> @@ -33,17 +33,16 @@
>>>>>>>>>>>      typedef uint8_t MDS_SVC_ARCHWORD_TYPE; /*MDS app-svc arch
>>>>>>>>>>> and word_size combination */
>>>>>>>>>>>    -/* MDS_WORD_SIZE_TYPE and MDS_ARCH_TYPE are compile-time 
>>>>>>>>>>> macros */
>>>>>>>>>>> -
>>>>>>>>>>> -#ifndef MDS_ARCH_TYPE
>>>>>>>>>>> -#define MDS_ARCH_TYPE 0        /* Stands for unspecified
>>>>>>>>>>> architecture type */
>>>>>>>>>>> -#elif (MDS_ARCH_TYPE > 7)
>>>>>>>>>>> -#error MDS_ARCH_TYPE should be in the range 0 to 7.
>>>>>>>>>>> -#endif
>>>>>>>>>>> -
>>>>>>>>>>>    #define MDS_WORD_SIZE_TYPE ((sizeof(long)/4) - 1)    /* 0 
>>>>>>>>>>> for
>>>>>>>>>>> 32-bit, 1 for 64-bit */
>>>>>>>>>>>    -#define MDS_SELF_ARCHWORD ((MDS_SVC_ARCHWORD_TYPE)
>>>>>>>>>>> ((MDS_WORD_SIZE_TYPE<<3) | MDS_ARCH_TYPE))
>>>>>>>>>>> +/*
>>>>>>>>>>> + * 4 bit ARCHWORD usage:
>>>>>>>>>>> + * Bit 3 is wordsize
>>>>>>>>>>> + * Bit 2:0 is a version field indicating capabilities.
>>>>>>>>>>> + *    Version 0 uses 1400 bytes fragmentation.
>>>>>>>>>>> + *    Version 1 uses TIPC max msg (66000 bytes) fragmentation.
>>>>>>>>>>> + */
>>>>>>>>>>> +#define MDS_SELF_ARCHWORD ((MDS_SVC_ARCHWORD_TYPE)
>>>>>>>>>>> ((MDS_WORD_SIZE_TYPE<<3) | 1))
>>>>>>>>>>>      typedef enum {
>>>>>>>>>>>        MDS_VIEW_NORMAL,
>>>>>>>>>>> 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
>>>>>>>>>>> @@ -1483,10 +1483,10 @@ static uint32_t 
>>>>>>>>>>> mcm_msg_encode_full_or_f
>>>>>>>>>>>        msg_send.dest_pwe_id =
>>>>>>>>>>> m_MDS_GET_PWE_ID_FROM_SVC_HDL(svc_cb->svc_hdl);
>>>>>>>>>>>        msg_send.dest_vdest_id = dest_vdest_id;
>>>>>>>>>>>        msg_send.src_svc_sub_part_ver = 
>>>>>>>>>>> svc_cb->svc_sub_part_ver;
>>>>>>>>>>> +    msg_send.msg_arch_word = to_msg->rem_svc_arch_word;
>>>>>>>>>>>        if (msg_send.msg.encoding == MDS_ENC_TYPE_FULL) {
>>>>>>>>>>>            if (NULL == bcast_ptr) {
>>>>>>>>>>> -            msg_send.msg_fmt_ver =
>>>>>>>>>>> cbinfo.info.enc.o_msg_fmt_ver;    /* archword will be filled in
>>>>>>>>>>> next label */
>>>>>>>>>>> -            msg_send.msg_arch_word = 
>>>>>>>>>>> to_msg->rem_svc_arch_word;
>>>>>>>>>>> +            msg_send.msg_fmt_ver = 
>>>>>>>>>>> cbinfo.info.enc.o_msg_fmt_ver;
>>>>>>>>>>>            }
>>>>>>>>>>>        } else {
>>>>>>>>>>>            if (NULL == bcast_ptr) {
>>>>>>>>>>> @@ -6502,14 +6502,10 @@ static uint32_t 
>>>>>>>>>>> mcm_query_for_node_dest_
>>>>>>>>>>>        if (m_MDS_GET_ADEST == adest) {
>>>>>>>>>>>            *to = DESTINATION_SAME_PROCESS;
>>>>>>>>>>>        } else if (MDS_SELF_ARCHWORD == arch_word) {
>>>>>>>>>>> -        if ((0 == (MDS_SELF_ARCHWORD & 0x7) && (0 == 
>>>>>>>>>>> (arch_word &
>>>>>>>>>>> 0x7)))) {
>>>>>>>>>>> -            if 
>>>>>>>>>>> (m_MDS_GET_NODE_ID_FROM_ADEST(m_MDS_GET_ADEST) ==
>>>>>>>>>>> m_MDS_GET_NODE_ID_FROM_ADEST(adest)) {
>>>>>>>>>>> -                *to = DESTINATION_ON_NODE; /* This hash define
>>>>>>>>>>> may give a wrong impression, but actually it means to do 
>>>>>>>>>>> flat_enc */
>>>>>>>>>>> -            } else {
>>>>>>>>>>> -                *to = DESTINATION_OFF_NODE;
>>>>>>>>>>> -            }
>>>>>>>>>>> +        if (m_MDS_GET_NODE_ID_FROM_ADEST(m_MDS_GET_ADEST) ==
>>>>>>>>>>> m_MDS_GET_NODE_ID_FROM_ADEST(adest)) {
>>>>>>>>>>> +            *to = DESTINATION_ON_NODE;    /* This hash 
>>>>>>>>>>> define may
>>>>>>>>>>> give a wrong impression, but actually it means to do 
>>>>>>>>>>> flat_enc */
>>>>>>>>>>>            } else {
>>>>>>>>>>> -            *to = DESTINATION_ON_NODE;
>>>>>>>>>>> +            *to = DESTINATION_OFF_NODE;
>>>>>>>>>>>            }
>>>>>>>>>>>        } else {
>>>>>>>>>>>            *to = DESTINATION_OFF_NODE;
>>>>>>>>>>> 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
>>>>>>>>>>> @@ -2035,7 +2035,16 @@ uint32_t mds_mdtm_send_tipc(MDTM_SEND_RE
>>>>>>>>>>>                    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);
>>>>>>>>>>>    -                int frag_size = MDTM_NORMAL_MSG_FRAG_SIZE;
>>>>>>>>>>> +                // determine fragment limit using a bit in
>>>>>>>>>>> destination archword
>>>>>>>>>>> +                int frag_size;
>>>>>>>>>>> +                int version = req->msg_arch_word & 0x7;
>>>>>>>>>>> +                if (version > 0) {
>>>>>>>>>>> +                    // normal mode, use TIPC fragmentation
>>>>>>>>>>> +                    frag_size = TIPC_MAX_USER_MSG_SIZE;
>>>>>>>>>>> +                } else {
>>>>>>>>>>> +                    // old mode, completely skip TIPC 
>>>>>>>>>>> fragmentation
>>>>>>>>>>> +                    frag_size = MDTM_NORMAL_MSG_FRAG_SIZE;
>>>>>>>>>>> +                }
>>>>>>>>>>>                      if (len > frag_size) {
>>>>>>>>>>>                        /* Packet needs to be fragmented and 
>>>>>>>>>>> send */
>>>>>>>>>>> diff --git a/osaf/libs/core/mds/mds_log.c
>>>>>>>>>>> b/osaf/libs/core/mds/mds_log.c
>>>>>>>>>>> --- a/osaf/libs/core/mds/mds_log.c
>>>>>>>>>>> +++ b/osaf/libs/core/mds/mds_log.c
>>>>>>>>>>> @@ -64,8 +64,8 @@ uint32_t mds_log_init(char *log_file_nam
>>>>>>>>>>>          if ((fh = fopen(lf, "a+")) != NULL) {
>>>>>>>>>>>            fclose(fh);
>>>>>>>>>>> -        log_mds_notify("BEGIN MDS LOGGING|
>>>>>>>>>>> PID=%d|ARCH=%d|64bit=%ld\n",
>>>>>>>>>>> -                   process_id, MDS_ARCH_TYPE,
>>>>>>>>>>> (long)MDS_WORD_SIZE_TYPE);
>>>>>>>>>>> +        log_mds_notify("BEGIN MDS LOGGING|
>>>>>>>>>>> PID=%d|ARCHW=%x|64bit=%ld\n",
>>>>>>>>>>> +                   process_id, MDS_SELF_ARCHWORD,
>>>>>>>>>>> (long)MDS_WORD_SIZE_TYPE);
>>>>>>>>>>>        }
>>>>>>>>>>>          return NCSCC_RC_SUCCESS;
>>>>>>>>>>>
>>>>>>>>>>> ------------------------------------------------------------------------------
>>>>>>>>>>>  
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> "Accelerate Dev Cycles with Automated Cross-Browser Testing 
>>>>>>>>>>> - For FREE
>>>>>>>>>>> Instantly run your Selenium tests across 300+ browser/OS 
>>>>>>>>>>> combos.  Get
>>>>>>>>>>> unparalleled scalability from the best Selenium testing 
>>>>>>>>>>> platform
>>>>>>>>>>> available.
>>>>>>>>>>> Simple to use. Nothing to install. Get started now for free."
>>>>>>>>>>> http://p.sf.net/sfu/SauceLabs
>>>>>>>>>>> _______________________________________________
>>>>>>>>>>> Opensaf-devel mailing list
>>>>>>>>>>> Opensaf-devel@lists.sourceforge.net
>>>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/opensaf-devel
>>>>>>>
>>>>>>> ------------------------------------------------------------------------------
>>>>>>>  
>>>>>>>
>>>>>>> "Accelerate Dev Cycles with Automated Cross-Browser Testing - 
>>>>>>> For FREE
>>>>>>> Instantly run your Selenium tests across 300+ browser/OS 
>>>>>>> combos.  Get
>>>>>>> unparalleled scalability from the best Selenium testing platform 
>>>>>>> available.
>>>>>>> Simple to use. Nothing to install. Get started now for free."
>>>>>>> http://p.sf.net/sfu/SauceLabs
>>>>>>> _______________________________________________
>>>>>>> Opensaf-devel mailing list
>>>>>>> Opensaf-devel@lists.sourceforge.net
>>>>>>> https://lists.sourceforge.net/lists/listinfo/opensaf-devel
>>>>>
>>>>
>>>
>>
>

------------------------------------------------------------------------------
"Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE
Instantly run your Selenium tests across 300+ browser/OS combos.
Get unparalleled scalability from the best Selenium testing platform available
Simple to use. Nothing to install. Get started now for free."
http://p.sf.net/sfu/SauceLabs
_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to