diff options
Diffstat (limited to 'net/tipc/link.c')
-rw-r--r-- | net/tipc/link.c | 9 |
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)) |