aboutsummaryrefslogtreecommitdiffstats
path: root/net/tipc/link.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/tipc/link.c')
-rw-r--r--net/tipc/link.c6
1 files changed, 1 insertions, 5 deletions
diff --git a/net/tipc/link.c b/net/tipc/link.c
index 8c81db7b17f9..2ccdb6ffd5c8 100644
--- a/net/tipc/link.c
+++ b/net/tipc/link.c
@@ -566,7 +566,6 @@ void tipc_link_purge_queues(struct tipc_link *l_ptr)
566void tipc_link_reset(struct tipc_link *l_ptr) 566void tipc_link_reset(struct tipc_link *l_ptr)
567{ 567{
568 u32 prev_state = l_ptr->state; 568 u32 prev_state = l_ptr->state;
569 int was_active_link = tipc_link_is_active(l_ptr);
570 struct tipc_node *owner = l_ptr->owner; 569 struct tipc_node *owner = l_ptr->owner;
571 struct tipc_link *pl = tipc_parallel_link(l_ptr); 570 struct tipc_link *pl = tipc_parallel_link(l_ptr);
572 571
@@ -584,10 +583,7 @@ void tipc_link_reset(struct tipc_link *l_ptr)
584 (prev_state == TIPC_LINK_ESTABLISHING)) 583 (prev_state == TIPC_LINK_ESTABLISHING))
585 return; 584 return;
586 585
587 tipc_node_link_down(l_ptr->owner, l_ptr->bearer_id); 586 if (tipc_node_is_up(l_ptr->owner) && (pl != l_ptr)) {
588 tipc_bearer_remove_dest(owner->net, l_ptr->bearer_id, l_ptr->addr);
589
590 if (was_active_link && tipc_node_is_up(l_ptr->owner) && (pl != l_ptr)) {
591 l_ptr->exec_mode = TIPC_LINK_BLOCKED; 587 l_ptr->exec_mode = TIPC_LINK_BLOCKED;
592 l_ptr->failover_checkpt = l_ptr->rcv_nxt; 588 l_ptr->failover_checkpt = l_ptr->rcv_nxt;
593 pl->failover_pkts = FIRST_FAILOVER; 589 pl->failover_pkts = FIRST_FAILOVER;