diff options
Diffstat (limited to 'net/tipc/node.c')
| -rw-r--r-- | net/tipc/node.c | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/net/tipc/node.c b/net/tipc/node.c index 3e4f04897c03..22c059ad2999 100644 --- a/net/tipc/node.c +++ b/net/tipc/node.c | |||
| @@ -254,8 +254,8 @@ void tipc_node_link_up(struct tipc_node *n_ptr, struct tipc_link *l_ptr) | |||
| 254 | active[0] = active[1] = l_ptr; | 254 | active[0] = active[1] = l_ptr; |
| 255 | exit: | 255 | exit: |
| 256 | /* Leave room for changeover header when returning 'mtu' to users: */ | 256 | /* Leave room for changeover header when returning 'mtu' to users: */ |
| 257 | n_ptr->act_mtus[0] = active[0]->max_pkt - INT_H_SIZE; | 257 | n_ptr->act_mtus[0] = active[0]->mtu - INT_H_SIZE; |
| 258 | n_ptr->act_mtus[1] = active[1]->max_pkt - INT_H_SIZE; | 258 | n_ptr->act_mtus[1] = active[1]->mtu - INT_H_SIZE; |
| 259 | } | 259 | } |
| 260 | 260 | ||
| 261 | /** | 261 | /** |
| @@ -319,11 +319,10 @@ void tipc_node_link_down(struct tipc_node *n_ptr, struct tipc_link *l_ptr) | |||
| 319 | 319 | ||
| 320 | /* Leave room for changeover header when returning 'mtu' to users: */ | 320 | /* Leave room for changeover header when returning 'mtu' to users: */ |
| 321 | if (active[0]) { | 321 | if (active[0]) { |
| 322 | n_ptr->act_mtus[0] = active[0]->max_pkt - INT_H_SIZE; | 322 | n_ptr->act_mtus[0] = active[0]->mtu - INT_H_SIZE; |
| 323 | n_ptr->act_mtus[1] = active[1]->max_pkt - INT_H_SIZE; | 323 | n_ptr->act_mtus[1] = active[1]->mtu - INT_H_SIZE; |
| 324 | return; | 324 | return; |
| 325 | } | 325 | } |
| 326 | |||
| 327 | /* Loopback link went down? No fragmentation needed from now on. */ | 326 | /* Loopback link went down? No fragmentation needed from now on. */ |
| 328 | if (n_ptr->addr == tn->own_addr) { | 327 | if (n_ptr->addr == tn->own_addr) { |
| 329 | n_ptr->act_mtus[0] = MAX_MSG_SIZE; | 328 | n_ptr->act_mtus[0] = MAX_MSG_SIZE; |
| @@ -394,18 +393,17 @@ static void node_lost_contact(struct tipc_node *n_ptr) | |||
| 394 | n_ptr->bclink.recv_permitted = false; | 393 | n_ptr->bclink.recv_permitted = false; |
| 395 | } | 394 | } |
| 396 | 395 | ||
| 397 | /* Abort link changeover */ | 396 | /* Abort any ongoing link failover */ |
| 398 | for (i = 0; i < MAX_BEARERS; i++) { | 397 | for (i = 0; i < MAX_BEARERS; i++) { |
| 399 | struct tipc_link *l_ptr = n_ptr->links[i]; | 398 | struct tipc_link *l_ptr = n_ptr->links[i]; |
| 400 | if (!l_ptr) | 399 | if (!l_ptr) |
| 401 | continue; | 400 | continue; |
| 402 | l_ptr->reset_checkpoint = l_ptr->next_in_no; | 401 | l_ptr->flags &= ~LINK_FAILINGOVER; |
| 403 | l_ptr->exp_msg_count = 0; | 402 | l_ptr->failover_checkpt = 0; |
| 403 | l_ptr->failover_pkts = 0; | ||
| 404 | kfree_skb(l_ptr->failover_skb); | ||
| 405 | l_ptr->failover_skb = NULL; | ||
| 404 | tipc_link_reset_fragments(l_ptr); | 406 | tipc_link_reset_fragments(l_ptr); |
| 405 | |||
| 406 | /* Link marked for deletion after failover? => do it now */ | ||
| 407 | if (l_ptr->flags & LINK_STOPPED) | ||
| 408 | tipc_link_delete(l_ptr); | ||
| 409 | } | 407 | } |
| 410 | 408 | ||
| 411 | n_ptr->action_flags &= ~TIPC_WAIT_OWN_LINKS_DOWN; | 409 | n_ptr->action_flags &= ~TIPC_WAIT_OWN_LINKS_DOWN; |
