diff options
author | Jon Paul Maloy <jon.maloy@ericsson.com> | 2015-10-22 12:51:35 (GMT) |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2015-10-24 13:56:27 (GMT) |
commit | 5fd9fd635104f4816da158cdac6917e99e192eac (patch) | |
tree | 18b6a2fd254fa3997278470b12288111d5294f5e /net/tipc/core.c | |
parent | 0043550b0a88b72216161d6f25eb0a2e0e78babf (diff) | |
download | linux-5fd9fd635104f4816da158cdac6917e99e192eac.tar.xz |
tipc: create broadcast transmission link at namespace init
The broadcast transmission link is currently instantiated when the
network subsystem is started, i.e., on order from user space via netlink.
This forces the broadcast transmission code to do unnecessary tests for
the existence of the transmission link, as well in single mode node as
in network mode.
In this commit, we do instead create the link during initialization of
the name space, and remove it when it is stopped. The fact that the
transmission link now has a guaranteed longer life cycle than any of its
potential clients paves the way for further code simplifcations
and optimizations.
Signed-off-by: Jon Maloy <jon.maloy@ericsson.com>
Reviewed-by: Ying Xue <ying.xue@windriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/tipc/core.c')
-rw-r--r-- | net/tipc/core.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/net/tipc/core.c b/net/tipc/core.c index 005ba5e..03a8428 100644 --- a/net/tipc/core.c +++ b/net/tipc/core.c @@ -42,6 +42,7 @@ #include "bearer.h" #include "net.h" #include "socket.h" +#include "bcast.h" #include <linux/module.h> @@ -71,8 +72,15 @@ static int __net_init tipc_init_net(struct net *net) err = tipc_topsrv_start(net); if (err) goto out_subscr; + + err = tipc_bcast_init(net); + if (err) + goto out_bclink; + return 0; +out_bclink: + tipc_bcast_stop(net); out_subscr: tipc_nametbl_stop(net); out_nametbl: @@ -85,6 +93,7 @@ static void __net_exit tipc_exit_net(struct net *net) { tipc_topsrv_stop(net); tipc_net_stop(net); + tipc_bcast_stop(net); tipc_nametbl_stop(net); tipc_sk_rht_destroy(net); } |