tipc: make replicast a user selectable option
authorJon Paul Maloy <jon.maloy@ericsson.com>
Wed, 18 Jan 2017 18:50:53 +0000 (13:50 -0500)
committerDavid S. Miller <davem@davemloft.net>
Fri, 20 Jan 2017 17:10:17 +0000 (12:10 -0500)
commit01fd12bb189a0772301dd37e9b31e53761269a1b
tree6e865477ba51e3dd0216c00362e7c3421de1e57b
parenta853e4c6d0843729e1f25a7a7beff168e1dd7420
tipc: make replicast a user selectable option

If the bearer carrying multicast messages supports broadcast, those
messages will be sent to all cluster nodes, irrespective of whether
these nodes host any actual destinations socket or not. This is clearly
wasteful if the cluster is large and there are only a few real
destinations for the message being sent.

In this commit we extend the eligibility of the newly introduced
"replicast" transmit option. We now make it possible for a user to
select which method he wants to be used, either as a mandatory setting
via setsockopt(), or as a relative setting where we let the broadcast
layer decide which method to use based on the ratio between cluster
size and the message's actual number of destination nodes.

In the latter case, a sending socket must stick to a previously
selected method until it enters an idle period of at least 5 seconds.
This eliminates the risk of message reordering caused by method change,
i.e., when changes to cluster size or number of destinations would
otherwise mandate a new method to be used.

Reviewed-by: Parthasarathy Bhuvaragan <parthasarathy.bhuvaragan@ericsson.com>
Acked-by: Ying Xue <ying.xue@windriver.com>
Signed-off-by: Jon Maloy <jon.maloy@ericsson.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/uapi/linux/tipc.h
net/tipc/bcast.c
net/tipc/bcast.h
net/tipc/link.c
net/tipc/node.h
net/tipc/socket.c