diff options
Diffstat (limited to 'net/tipc/node.c')
-rw-r--r-- | net/tipc/node.c | 6 |
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; |