Message ID | 20200721015705.2333-1-tung.q.nguyen@dektech.com.au |
---|---|
State | Accepted |
Delegated to: | David Miller |
Headers | show |
Series | [tipc-discussion,net,v1,1/1] tipc: allow to build NACK message in link timeout function | expand |
From: Tung Nguyen <tung.q.nguyen@dektech.com.au> Date: Tue, 21 Jul 2020 08:57:05 +0700 > 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") "commit" doesn't belong here, I removed it when I applied your patch. > Acked-by: Jon Maloy <jmaloy@redhat.com> > Signed-off-by: Tung Nguyen <tung.q.nguyen@dektech.com.au> Applied and queued up for -stable, thanks.
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;