aboutsummaryrefslogtreecommitdiffstats
path: root/net/tipc/node.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/tipc/node.c')
-rw-r--r--net/tipc/node.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/net/tipc/node.c b/net/tipc/node.c
index e92f84afbf95..558df25a7fc6 100644
--- a/net/tipc/node.c
+++ b/net/tipc/node.c
@@ -295,11 +295,13 @@ void tipc_node_link_up(struct tipc_node *n, int bearer_id)
295 n->action_flags |= TIPC_NOTIFY_LINK_UP; 295 n->action_flags |= TIPC_NOTIFY_LINK_UP;
296 n->link_id = l->peer_bearer_id << 16 | l->bearer_id; 296 n->link_id = l->peer_bearer_id << 16 | l->bearer_id;
297 297
298 tipc_bearer_add_dest(n->net, bearer_id, n->addr);
299
298 pr_debug("Established link <%s> on network plane %c\n", 300 pr_debug("Established link <%s> on network plane %c\n",
299 l->name, l->net_plane); 301 l->name, l->net_plane);
300 302
301 /* No active links ? => take both active slots */ 303 /* No active links ? => take both active slots */
302 if (*slot0 < 0) { 304 if (!tipc_node_is_up(n)) {
303 *slot0 = bearer_id; 305 *slot0 = bearer_id;
304 *slot1 = bearer_id; 306 *slot1 = bearer_id;
305 node_established_contact(n); 307 node_established_contact(n);
@@ -896,7 +898,7 @@ void tipc_rcv(struct net *net, struct sk_buff *skb, struct tipc_bearer *b)
896 rc = tipc_link_rcv(l, skb, &xmitq); 898 rc = tipc_link_rcv(l, skb, &xmitq);
897 899
898 if (unlikely(rc & TIPC_LINK_UP_EVT)) 900 if (unlikely(rc & TIPC_LINK_UP_EVT))
899 tipc_link_activate(l); 901 tipc_node_link_up(n, bearer_id);
900 if (unlikely(rc & TIPC_LINK_DOWN_EVT)) 902 if (unlikely(rc & TIPC_LINK_DOWN_EVT))
901 tipc_link_reset(l); 903 tipc_link_reset(l);
902 skb = NULL; 904 skb = NULL;