From 489ac10c6983b9f2a383804a9de709723099202d Mon Sep 17 00:00:00 2001 From: Kevin Krakauer Date: Wed, 17 Jul 2024 18:06:11 -0700 Subject: [PATCH] Automated rollback of changelist 634071568 PiperOrigin-RevId: 653421213 --- pkg/tcpip/transport/tcp/rack.go | 6 ++---- pkg/tcpip/transport/tcp/snd.go | 14 ++++---------- pkg/tcpip/transport/tcp/test/e2e/tcp_test.go | 1 - 3 files changed, 6 insertions(+), 15 deletions(-) diff --git a/pkg/tcpip/transport/tcp/rack.go b/pkg/tcpip/transport/tcp/rack.go index 35e6cc725..66ea6e5b0 100644 --- a/pkg/tcpip/transport/tcp/rack.go +++ b/pkg/tcpip/transport/tcp/rack.go @@ -357,13 +357,11 @@ func (rc *rackControl) detectLoss(rcvTime tcpip.MonotonicTime) int { var timeout time.Duration numLost := 0 for seg := rc.snd.writeList.Front(); seg != nil && seg.xmitCount != 0; seg = seg.Next() { - // xmitCount can be 0 for packets that are broken up for PMTUD. - // The initial transmission "doesn't count" WRT loss detection. - if rc.snd.ep.scoreboard.IsSACKED(seg.sackBlock()) || seg.xmitCount == 0 { + if rc.snd.ep.scoreboard.IsSACKED(seg.sackBlock()) { continue } - if seg.lost && seg.xmitCount > 1 { + if seg.lost && seg.xmitCount == 1 { numLost++ continue } diff --git a/pkg/tcpip/transport/tcp/snd.go b/pkg/tcpip/transport/tcp/snd.go index 2301ae905..1e20ac2c3 100644 --- a/pkg/tcpip/transport/tcp/snd.go +++ b/pkg/tcpip/transport/tcp/snd.go @@ -342,16 +342,10 @@ func (s *sender) updateMaxPayloadSize(mtu, count int) { break } - if seg.payloadSize() > m { - // xmitCount is used for loss detection, but - // retransmission doesn't indicate congestion here, - // it's just PMTUD. - seg.xmitCount = 0 - if nextSeg == s.writeNext { - // We found a segment exceeding the MTU. Rewind - // writeNext and try to retransmit it. - nextSeg = seg - } + if nextSeg == s.writeNext && seg.payloadSize() > m { + // We found a segment exceeding the MTU. Rewind + // writeNext and try to retransmit it. + nextSeg = seg } if s.ep.SACKPermitted && s.ep.scoreboard.IsSACKED(seg.sackBlock()) { diff --git a/pkg/tcpip/transport/tcp/test/e2e/tcp_test.go b/pkg/tcpip/transport/tcp/test/e2e/tcp_test.go index 5981be60f..9dcb8de85 100644 --- a/pkg/tcpip/transport/tcp/test/e2e/tcp_test.go +++ b/pkg/tcpip/transport/tcp/test/e2e/tcp_test.go @@ -5739,7 +5739,6 @@ func TestPathMTUDiscovery(t *testing.T) { } checker.IPv4(t, p, checker.PayloadLen(size+header.TCPMinimumSize), - checker.FragmentFlags(header.IPv4FlagDontFragment), checker.TCP( checker.DstPort(context.TestPort), checker.TCPSeqNum(seqNum),