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