From: Jon M. <jm...@re...> - 2020-07-16 14:12:45
|
On 7/16/20 1:13 AM, Tung Nguyen wrote: > Commit 02288248b051 ("tipc: eliminate gap indicator from ACK messages") > eliminated sending of the 'gap' indicator in regular ACK messages and > only allowed to build NACK message with enabled probe/probe_reply. > However, necessary correction for building NACK message was missed > in tipc_link_timeout() function. This leads to significant delay and > link reset (due to retransmission failure) in lossy environment. > > This commit fixes it by setting the 'probe' flag to 'true' when > the receive deferred queue is not empty. As a result, NACK message > will be built to send back to another peer. > > Fixes: commit 02288248b051 ("tipc: eliminate gap indicator from ACK messages") > Signed-off-by: Tung Nguyen <tun...@de...> > --- > net/tipc/link.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/net/tipc/link.c b/net/tipc/link.c > index 263d950e70e9..d40f8e5b7683 100644 > --- a/net/tipc/link.c > +++ b/net/tipc/link.c > @@ -827,11 +827,11 @@ int tipc_link_timeout(struct tipc_link *l, struct sk_buff_head *xmitq) > state |= l->bc_rcvlink->rcv_unacked; > state |= l->rcv_unacked; > state |= !skb_queue_empty(&l->transmq); > - state |= !skb_queue_empty(&l->deferdq); > probe = mstate->probing; > probe |= l->silent_intv_cnt; > if (probe || mstate->monitoring) > l->silent_intv_cnt++; > + probe |= !skb_queue_empty(&l->deferdq); > if (l->snd_nxt == l->checkpoint) { > tipc_link_update_cwin(l, 0, 0); > probe = true; Acked-by: Jon Maloy <jm...@re...> |