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.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/net/tipc/link.c b/net/tipc/link.c
index 67b6ab9f4c8d..7d89f8713d49 100644
--- a/net/tipc/link.c
+++ b/net/tipc/link.c
@@ -349,6 +349,8 @@ void tipc_link_remove_bc_peer(struct tipc_link *snd_l,
349 u16 ack = snd_l->snd_nxt - 1; 349 u16 ack = snd_l->snd_nxt - 1;
350 350
351 snd_l->ackers--; 351 snd_l->ackers--;
352 rcv_l->bc_peer_is_up = true;
353 rcv_l->state = LINK_ESTABLISHED;
352 tipc_link_bc_ack_rcv(rcv_l, ack, xmitq); 354 tipc_link_bc_ack_rcv(rcv_l, ack, xmitq);
353 tipc_link_reset(rcv_l); 355 tipc_link_reset(rcv_l);
354 rcv_l->state = LINK_RESET; 356 rcv_l->state = LINK_RESET;
@@ -1559,7 +1561,12 @@ void tipc_link_bc_sync_rcv(struct tipc_link *l, struct tipc_msg *hdr,
1559 if (!msg_peer_node_is_up(hdr)) 1561 if (!msg_peer_node_is_up(hdr))
1560 return; 1562 return;
1561 1563
1562 l->bc_peer_is_up = true; 1564 /* Open when peer ackowledges our bcast init msg (pkt #1) */
1565 if (msg_ack(hdr))
1566 l->bc_peer_is_up = true;
1567
1568 if (!l->bc_peer_is_up)
1569 return;
1563 1570
1564 /* Ignore if peers_snd_nxt goes beyond receive window */ 1571 /* Ignore if peers_snd_nxt goes beyond receive window */
1565 if (more(peers_snd_nxt, l->rcv_nxt + l->window)) 1572 if (more(peers_snd_nxt, l->rcv_nxt + l->window))