diff options
author | Stefano Brivio <sbrivio@redhat.com> | 2021-06-08 02:20:28 +0200 |
---|---|---|
committer | Stefano Brivio <sbrivio@redhat.com> | 2021-06-08 02:20:28 +0200 |
commit | 90078ebc5911f2dc7cb2290e92db67b78a0b9f1e (patch) | |
tree | d55e269e7e3e2d1299271b0785cff3391802d78a /util.c | |
parent | 8b39b0b47f86e5bab88634cba1a8e9932e275f77 (diff) | |
download | passt-90078ebc5911f2dc7cb2290e92db67b78a0b9f1e.tar passt-90078ebc5911f2dc7cb2290e92db67b78a0b9f1e.tar.gz passt-90078ebc5911f2dc7cb2290e92db67b78a0b9f1e.tar.bz2 passt-90078ebc5911f2dc7cb2290e92db67b78a0b9f1e.tar.lz passt-90078ebc5911f2dc7cb2290e92db67b78a0b9f1e.tar.xz passt-90078ebc5911f2dc7cb2290e92db67b78a0b9f1e.tar.zst passt-90078ebc5911f2dc7cb2290e92db67b78a0b9f1e.zip |
tcp: Add support for kernels not exporting tcpi_snd_wnd via TCP_INFO
Before commit 8f7baad7f035 ("tcp: Add snd_wnd to TCP_INFO"), the
kernel didn't export tcpi_snd_wnd via TCP_INFO, which means we don't
know what's the window size of the receiver, socket-side.
To get TCP connections working in that case, ignore this value if
it's zero during handshake, and use the initial window value as
suggested by RFC 6928 (14 600 bytes, instead of 4 380 bytes), to
keep network performance usable.
To make the TCP dynamic responsive enough in this case, also check
the socket for available data whenever we get an ACK segment from
tap, instead of waiting until all the data from the tap is dequeued.
While at it, fix the window scaling value sent for SYN and SYN, ACK
segments: we want to increase the data pointer after writing the
option, not the value itself.
Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
Diffstat (limited to 'util.c')
0 files changed, 0 insertions, 0 deletions