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