Re: [PATCH net] tcp: fix TLP timer not set when CA_STATE changes from DISORDER to OPEN
From: Yuchung Cheng <hidden>
Date: 2021-01-22 21:05:16
On Fri, Jan 22, 2021 at 6:37 AM Neal Cardwell [off-list ref] wrote:
On Fri, Jan 22, 2021 at 5:53 AM Eric Dumazet [off-list ref] wrote:quoted
On Fri, Jan 22, 2021 at 11:28 AM Pengcheng Yang [off-list ref] wrote:quoted
When CA_STATE is in DISORDER, the TLP timer is not set when receiving an ACK (a cumulative ACK covered out-of-order data) causes CA_STATE to change from DISORDER to OPEN. If the sender is app-limited, it can only
Could you point which line of code causes the state to flip incorrectly due to the TLP timer setting?
quoted
quoted
wait for the RTO timer to expire and retransmit. The reason for this is that the TLP timer is set before CA_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/1611139794-11254-1-git-send-email-yangpc@wangsu.com (local) Signed-off-by: Pengcheng Yang <redacted> Cc: Neal Cardwell <ncardwell@google.com> ---This looks like a very nice patch, let me run packetdrill tests on it. By any chance, have you cooked a packetdrill test showing the issue (failing on unpatched kernel) ?Thanks, Pengcheng. This patch looks good to me as well, assuming it passes our packetdrill tests. I agree with Eric that it would be good to have an explicit packetdrill test for this case. neal