Re: [PATCH v2 net] tcp: fix TLP timer not set when CA_STATE changes from DISORDER to OPEN
From: Neal Cardwell <ncardwell@google.com>
Date: 2021-01-24 18:27:17
On Sun, Jan 24, 2021 at 12:11 AM Pengcheng Yang [off-list ref] wrote:
Upon receiving a cumulative ACK that changes the congestion state from Disorder to Open, the TLP timer is not set. If the sender is app-limited, it can only wait for the RTO timer to expire and retransmit. The reason for this is that the TLP timer is set before the congestion state changes in tcp_ack(), so we delay the time point of calling tcp_set_xmit_timer() until after tcp_fastretrans_alert() returns and remove the FLAG_SET_XMIT_TIMER from ack_flag when the RACK reorder timer is set. This commit has two additional benefits: 1) Make sure to reset RTO according to RFC6298 when receiving ACK, to avoid spurious RTO caused by RTO timer early expires. 2) Reduce the xmit timer reschedule once per ACK when the RACK reorder timer is set. Link: https://lore.kernel.org/netdev/1611311242-6675-1-git-send-email-yangpc@wangsu.com (local) Signed-off-by: Pengcheng Yang <redacted> Cc: Neal Cardwell <ncardwell@google.com> Cc: Yuchung Cheng <redacted> Cc: Eric Dumazet <edumazet@google.com> --- v2: - modify the commit message according to Yuchung's suggestion
Thanks, Pengcheng! This seems to be missing the Fixes tag, but I guess
the maintainers can add it:
Fixes: df92c8394e6e ("tcp: fix xmit timer to only be reset if data
ACKed/SACKed")
Acked-by: Neal Cardwell <ncardwell@google.com>
neal