• Tuong Lien's avatar
    tipc: improve message bundling algorithm · 06e7c70c
    Tuong Lien authored
    As mentioned in commit e95584a8 ("tipc: fix unlimited bundling of
    small messages"), the current message bundling algorithm is inefficient
    that can generate bundles of only one payload message, that causes
    unnecessary overheads for both the sender and receiver.
    
    This commit re-designs the 'tipc_msg_make_bundle()' function (now named
    as 'tipc_msg_try_bundle()'), so that when a message comes at the first
    place, we will just check & keep a reference to it if the message is
    suitable for bundling. The message buffer will be put into the link
    backlog queue and processed as normal. Later on, when another one comes
    we will make a bundle with the first message if possible and so on...
    This way, a bundle if really needed will always consist of at least two
    payload messages. Otherwise, we let the first buffer go its way without
    any need of bundling, so reduce the overheads to zero.
    
    Moreover, since now we have both the messages in hand, we can even
    optimize the 'tipc_msg_bundle()' function, make bundle of a very large
    (size ~ MSS) and small messages which is not with the current algorithm
    e.g. [1400-byte message] + [10-byte message] (MTU = 1500).
    Acked-by: default avatarYing Xue <ying.xue@windreiver.com>
    Acked-by: default avatarJon Maloy <jon.maloy@ericsson.com>
    Signed-off-by: default avatarTuong Lien <tuong.t.lien@dektech.com.au>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    06e7c70c
link.c 75.4 KB