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.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/net/tipc/link.c b/net/tipc/link.c
index ac26f8a657d9..3d73144a1ccc 100644
--- a/net/tipc/link.c
+++ b/net/tipc/link.c
@@ -488,10 +488,11 @@ static void link_state_event(struct tipc_link *l_ptr, unsigned int event)
488 if (!l_ptr->started && (event != STARTING_EVT)) 488 if (!l_ptr->started && (event != STARTING_EVT))
489 return; /* Not yet. */ 489 return; /* Not yet. */
490 490
491 if (link_blocked(l_ptr)) { 491 /* Check whether changeover is going on */
492 if (l_ptr->exp_msg_count) {
492 if (event == TIMEOUT_EVT) 493 if (event == TIMEOUT_EVT)
493 link_set_timer(l_ptr, cont_intv); 494 link_set_timer(l_ptr, cont_intv);
494 return; /* Changeover going on */ 495 return;
495 } 496 }
496 497
497 switch (l_ptr->state) { 498 switch (l_ptr->state) {
@@ -1731,7 +1732,8 @@ void tipc_link_send_proto_msg(struct tipc_link *l_ptr, u32 msg_typ,
1731 l_ptr->proto_msg_queue = NULL; 1732 l_ptr->proto_msg_queue = NULL;
1732 } 1733 }
1733 1734
1734 if (link_blocked(l_ptr)) 1735 /* Don't send protocol message during link changeover */
1736 if (l_ptr->exp_msg_count)
1735 return; 1737 return;
1736 1738
1737 /* Abort non-RESET send if communication with node is prohibited */ 1739 /* Abort non-RESET send if communication with node is prohibited */
@@ -1824,7 +1826,8 @@ static void link_recv_proto_msg(struct tipc_link *l_ptr, struct sk_buff *buf)
1824 u32 msg_tol; 1826 u32 msg_tol;
1825 struct tipc_msg *msg = buf_msg(buf); 1827 struct tipc_msg *msg = buf_msg(buf);
1826 1828
1827 if (link_blocked(l_ptr)) 1829 /* Discard protocol message during link changeover */
1830 if (l_ptr->exp_msg_count)
1828 goto exit; 1831 goto exit;
1829 1832
1830 /* record unnumbered packet arrival (force mismatch on next timeout) */ 1833 /* record unnumbered packet arrival (force mismatch on next timeout) */