Currently a link is declared stale and reset if stale limit time is longer than link tolerance time. But, this stale limit does not initial correctly when the link is resetting. This lead to a link declared as failure because reset criteria always passed though no packet re-transmitted when link is re-establishing.
To fix this, we set stale limit time far into the future in two places: reset a link and acked from peer. Fixes: 77cf8edbc0e7 ("tipc: simplify stale link failure criteria") Signed-off-by: Hoang Le <hoang.h...@dektech.com.au> --- net/tipc/link.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/net/tipc/link.c b/net/tipc/link.c index 66d3a07bc571..2ba79d451f08 100644 --- a/net/tipc/link.c +++ b/net/tipc/link.c @@ -909,6 +909,7 @@ void tipc_link_reset(struct tipc_link *l) l->silent_intv_cnt = 0; l->rst_cnt = 0; l->bc_peer_is_up = false; + l->stale_limit = msecs_to_jiffies(~0); memset(&l->mon_state, 0, sizeof(l->mon_state)); tipc_link_reset_stats(l); } @@ -1510,6 +1511,7 @@ int tipc_link_rcv(struct tipc_link *l, struct sk_buff *skb, /* Forward queues and wake up waiting users */ if (likely(tipc_link_release_pkts(l, msg_ack(hdr)))) { + l->stale_limit = msecs_to_jiffies(~0); tipc_link_advance_backlog(l, xmitq); if (unlikely(!skb_queue_empty(&l->wakeupq))) link_prepare_wakeup(l); -- 2.17.1 _______________________________________________ tipc-discussion mailing list tipc-discussion@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/tipc-discussion