mbox series

[net,0/3] tcp: 3 fixes for retrans_stamp and undo logic

Message ID 20241001200517.2756803-1-ncardwell.sw@gmail.com (mailing list archive)
Headers show
Series tcp: 3 fixes for retrans_stamp and undo logic | expand

Message

Neal Cardwell Oct. 1, 2024, 8:05 p.m. UTC
From: Neal Cardwell <ncardwell@google.com>

Geumhwan Yu <geumhwan.yu@samsung.com> recently reported and diagnosed a
regression in TCP loss recovery undo logic in the case where a TCP
connection enters fast recovery, is unable to retransmit anything due to
TSQ, and then receives an ACK allowing forward progress. The sender should
be able to undo the spurious loss recovery in this case, but was not doing
so. The first patch fixes this regression.

Running our suite of packetdrill tests with the first fix, the tests
highlighted two other small bugs in the way retrans_stamp is updated in
some rare corner cases. The second two patches fix those other two small
bugs.

Thanks to Geumhwan Yu for the bug report!

Neal Cardwell (3):
  tcp: fix to allow timestamp undo if no retransmits were sent
  tcp: fix tcp_enter_recovery() to zero retrans_stamp when it's safe
  tcp: fix TFO SYN_RECV to not zero retrans_stamp with retransmits out

 net/ipv4/tcp_input.c | 42 ++++++++++++++++++++++++++++++++++++++----
 1 file changed, 38 insertions(+), 4 deletions(-)

Comments

patchwork-bot+netdevbpf@kernel.org Oct. 3, 2024, 11:30 p.m. UTC | #1
Hello:

This series was applied to netdev/net.git (main)
by Jakub Kicinski <kuba@kernel.org>:

On Tue,  1 Oct 2024 20:05:14 +0000 you wrote:
> From: Neal Cardwell <ncardwell@google.com>
> 
> Geumhwan Yu <geumhwan.yu@samsung.com> recently reported and diagnosed a
> regression in TCP loss recovery undo logic in the case where a TCP
> connection enters fast recovery, is unable to retransmit anything due to
> TSQ, and then receives an ACK allowing forward progress. The sender should
> be able to undo the spurious loss recovery in this case, but was not doing
> so. The first patch fixes this regression.
> 
> [...]

Here is the summary with links:
  - [net,1/3] tcp: fix to allow timestamp undo if no retransmits were sent
    https://git.kernel.org/netdev/net/c/e37ab7373696
  - [net,2/3] tcp: fix tcp_enter_recovery() to zero retrans_stamp when it's safe
    https://git.kernel.org/netdev/net/c/b41b4cbd9655
  - [net,3/3] tcp: fix TFO SYN_RECV to not zero retrans_stamp with retransmits out
    https://git.kernel.org/netdev/net/c/27c80efcc204

You are awesome, thank you!