gvisor/pkg
Bhasker Hariharan 08f4846ebe Fix bugs in SACK recovery.
Every call to sender.NextSeg does not need to iterate from the
front of the writeList as in a given recovery episode we can cache
the last nextSeg returned. There cannot be a lower sequenced segment
that matches the next call to NextSeg as otherwise we would have
returned that instead in the previous call.

This fixes the issue of excessive CPU usage w/ large send buffers
where we spend a lot of time iterating from the front of the list on
every NextSeg invocation.

Further the following other bugs were also fixed:
  * Iteration of segments never sent in NextSeg() when looking for segments for
    retransmission that match step1/3/4 of the NextSeg algorithm
  * Correctly setting rescueRxt only if the rescue segment was actually sent.
  * Correctly initializing rescueRxt/highRxt when entering SACK recovery.
  * Correctly re-arming the timer only on retransmissions when SACK is in use
    and not for every segment being sent as it was being done before.
  * Copy over xmitTime and xmitCount on segment clone.
  * Move writeNext along when skipping over SACKED segments. This is required
    to prevent spurious retransmissions where we end up retransmitting data
    that was never lost.

PiperOrigin-RevId: 310387671
2020-05-07 10:26:00 -07:00
..
abi Enable automated marshalling for signals and the arch package. 2020-04-25 23:56:04 -07:00
amutex
atomicbitops Automated rollback of changelist 303799678 2020-04-01 11:06:26 -07:00
binary
bits
bpf
buffer Clean-up buffer implementation. 2020-03-11 19:52:14 -07:00
compressio Standardize on tools directory. 2020-01-27 12:21:00 -08:00
context Remove obsolete TODOs for b/38173783 2020-04-13 11:02:14 -07:00
control
cpuid Fix 386 build tags 2020-04-01 10:00:03 -07:00
eventchannel
fd
fdchannel
fdnotifier
flipcall Specify a memory file in platform.New(). 2020-04-22 17:50:10 -07:00
fspath Port most syscalls to VFS2. 2020-02-25 13:37:34 -08:00
gate
gohacks
goid Standardize on tools directory. 2020-01-27 12:21:00 -08:00
ilist
linewriter
log Fix all copy locks violations. 2020-04-08 10:00:14 -07:00
memutil Standardize on tools directory. 2020-01-27 12:21:00 -08:00
metric
p9 Return EIO from p9 if sending/receiving fails. 2020-04-10 11:36:57 -07:00
pool
procid Standardize on tools directory. 2020-01-27 12:21:00 -08:00
rand
refs Standardize on tools directory. 2020-01-27 12:21:00 -08:00
safecopy Don't use REP string instructions in safecopy.memcpy. 2020-04-09 11:03:43 -07:00
safemem Ensure that safemem.BlockSeqOf(safemem.Block{}) produces an empty BlockSeq. 2020-03-04 14:30:27 -08:00
seccomp Specify a memory file in platform.New(). 2020-04-22 17:50:10 -07:00
secio
segment Fix all printf formatting errors. 2020-04-08 10:14:34 -07:00
sentry Update privateunixsocket TODOs. 2020-05-07 10:20:48 -07:00
sleep Simplify atomic operations 2020-02-11 20:37:01 -08:00
state Fix all copy locks violations. 2020-04-08 10:00:14 -07:00
sync Rename files in //pkg/sync to better reflect what they contain. 2020-04-02 11:57:06 -07:00
syncevent Add //pkg/syncevent. 2020-02-18 15:18:48 -08:00
syserr
syserror Add BoundEndpointAt filesystem operation. 2020-03-26 21:52:24 -07:00
tcpip Fix bugs in SACK recovery. 2020-05-07 10:26:00 -07:00
test
tmutex
unet
urpc
usermem Remove obsolete TODOs for b/38173783 2020-04-13 11:02:14 -07:00
waiter Standardize on tools directory. 2020-01-27 12:21:00 -08:00