aboutsummaryrefslogtreecommitdiffstats
path: root/net/tipc/node.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/tipc/node.c')
-rw-r--r--net/tipc/node.c14
1 files changed, 4 insertions, 10 deletions
diff --git a/net/tipc/node.c b/net/tipc/node.c
index 9b4dcb6a16b5..eb728397c810 100644
--- a/net/tipc/node.c
+++ b/net/tipc/node.c
@@ -1284,7 +1284,7 @@ static void tipc_node_bc_sync_rcv(struct tipc_node *n, struct tipc_msg *hdr,
1284 rc = tipc_bcast_sync_rcv(n->net, n->bc_entry.link, hdr); 1284 rc = tipc_bcast_sync_rcv(n->net, n->bc_entry.link, hdr);
1285 1285
1286 if (rc & TIPC_LINK_DOWN_EVT) { 1286 if (rc & TIPC_LINK_DOWN_EVT) {
1287 tipc_bearer_reset_all(n->net); 1287 tipc_node_reset_links(n);
1288 return; 1288 return;
1289 } 1289 }
1290 1290
@@ -1351,15 +1351,9 @@ static void tipc_node_bc_rcv(struct net *net, struct sk_buff *skb, int bearer_id
1351 if (!skb_queue_empty(&be->inputq1)) 1351 if (!skb_queue_empty(&be->inputq1))
1352 tipc_node_mcast_rcv(n); 1352 tipc_node_mcast_rcv(n);
1353 1353
1354 if (rc & TIPC_LINK_DOWN_EVT) { 1354 /* If reassembly or retransmission failure => reset all links to peer */
1355 /* Reception reassembly failure => reset all links to peer */ 1355 if (rc & TIPC_LINK_DOWN_EVT)
1356 if (!tipc_link_is_up(be->link)) 1356 tipc_node_reset_links(n);
1357 tipc_node_reset_links(n);
1358
1359 /* Retransmission failure => reset all links to all peers */
1360 if (!tipc_link_is_up(tipc_bc_sndlink(net)))
1361 tipc_bearer_reset_all(net);
1362 }
1363 1357
1364 tipc_node_put(n); 1358 tipc_node_put(n);
1365} 1359}