aboutsummaryrefslogtreecommitdiffstats
path: root/net/tipc
diff options
context:
space:
mode:
Diffstat (limited to 'net/tipc')
-rw-r--r--net/tipc/link.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/net/tipc/link.c b/net/tipc/link.c
index aefb5b40c535..9e265eb89726 100644
--- a/net/tipc/link.c
+++ b/net/tipc/link.c
@@ -1598,14 +1598,17 @@ static int tipc_link_proto_rcv(struct tipc_link *l, struct sk_buff *skb,
1598 if (in_range(peers_prio, l->priority + 1, TIPC_MAX_LINK_PRI)) 1598 if (in_range(peers_prio, l->priority + 1, TIPC_MAX_LINK_PRI))
1599 l->priority = peers_prio; 1599 l->priority = peers_prio;
1600 1600
1601 /* ACTIVATE_MSG serves as PEER_RESET if link is already down */ 1601 /* If peer is going down we want full re-establish cycle */
1602 if (msg_peer_stopping(hdr)) 1602 if (msg_peer_stopping(hdr)) {
1603 rc = tipc_link_fsm_evt(l, LINK_FAILURE_EVT); 1603 rc = tipc_link_fsm_evt(l, LINK_FAILURE_EVT);
1604 else if ((mtyp == RESET_MSG) || !link_is_up(l)) 1604 break;
1605 }
1606 /* ACTIVATE_MSG serves as PEER_RESET if link is already down */
1607 if (mtyp == RESET_MSG || !link_is_up(l))
1605 rc = tipc_link_fsm_evt(l, LINK_PEER_RESET_EVT); 1608 rc = tipc_link_fsm_evt(l, LINK_PEER_RESET_EVT);
1606 1609
1607 /* ACTIVATE_MSG takes up link if it was already locally reset */ 1610 /* ACTIVATE_MSG takes up link if it was already locally reset */
1608 if ((mtyp == ACTIVATE_MSG) && (l->state == LINK_ESTABLISHING)) 1611 if (mtyp == ACTIVATE_MSG && l->state == LINK_ESTABLISHING)
1609 rc = TIPC_LINK_UP_EVT; 1612 rc = TIPC_LINK_UP_EVT;
1610 1613
1611 l->peer_session = msg_session(hdr); 1614 l->peer_session = msg_session(hdr);