tipc: eliminate function tipc_link_activate()

The function tipc_link_activate() is redundant, since it mostly performs
settings that have already been done in a preceding tipc_link_reset().

There are three exceptions to this:
- The actual state change to TIPC_LINK_WORKING. This should anyway be done
  in the FSM, and not in a separate function.
- Registration of the link with the bearer. This should be done by the
  node, since we don't want the link to have any knowledge about its
  specific bearer.
- Call to tipc_node_link_up() for user access registration. With the new
  role distribution between link aggregation and link level this becomes
  the wrong call order; tipc_node_link_up() should instead be called
  directly as a result of a TIPC_LINK_UP event, hence by the node itself.

This commit implements those changes.

Tested-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>
diff --git a/net/tipc/node.c b/net/tipc/node.c
index e92f84a..558df25 100644
--- a/net/tipc/node.c
+++ b/net/tipc/node.c
@@ -295,11 +295,13 @@
 	n->action_flags |= TIPC_NOTIFY_LINK_UP;
 	n->link_id = l->peer_bearer_id << 16 | l->bearer_id;
 
+	tipc_bearer_add_dest(n->net, bearer_id, n->addr);
+
 	pr_debug("Established link <%s> on network plane %c\n",
 		 l->name, l->net_plane);
 
 	/* No active links ? => take both active slots */
-	if (*slot0 < 0) {
+	if (!tipc_node_is_up(n)) {
 		*slot0 = bearer_id;
 		*slot1 = bearer_id;
 		node_established_contact(n);
@@ -896,7 +898,7 @@
 	rc = tipc_link_rcv(l, skb, &xmitq);
 
 	if (unlikely(rc & TIPC_LINK_UP_EVT))
-		tipc_link_activate(l);
+		tipc_node_link_up(n, bearer_id);
 	if (unlikely(rc & TIPC_LINK_DOWN_EVT))
 		tipc_link_reset(l);
 	skb = NULL;