Re: git: 7146ad04f18e - main - tcp: refactor tcp_autosndbuf() and associated sysctls
Date: Thu, 22 Oct 2026 10:51:34 UTC
On 22 Oct 2026, at 11:29, Kristof Provost wrote:
> On 22 Oct 2026, at 5:31, Gleb Smirnoff wrote:
>> The branch main has been updated by glebius:
>>
>> URL:
>> https://cgit.FreeBSD.org/src/commit/?id=7146ad04f18e7f0767a4d44cff43c1c67ea98cec
>>
>> commit 7146ad04f18e7f0767a4d44cff43c1c67ea98cec
>> Author: Gleb Smirnoff <glebius@FreeBSD.org>
>> AuthorDate: 2026-10-22 03:27:47 +0000
>> Commit: Gleb Smirnoff <glebius@FreeBSD.org>
>> CommitDate: 2026-10-22 03:27:47 +0000
>>
>> tcp: refactor tcp_autosndbuf() and associated sysctls
>>
>> Rename tcp_sndbuf_autoscale() to tcp_autosndbuf(). This matches
>> complementary tcp_autorcvbuf() that was factored out as a
>> separate
>> function a few months before tcp_sndbuf_autoscale() was. Move
>> the large
>> comment to the header of the function. Use unsigned types for
>> all sizing
>> sysctls and variables and use bool for the switching sysctl. Add
>> a
>> comment above net.inet.tcp.sendbuf_auto_lowat (default to off)
>> providing a
>> reference to its origins. Add DTrace probe tcp::send-autoresize,
>> complementary to the existing tcp::receive-autoresize.
>>
>> Rack has its own function, just enable the DTrace probe there.
>>
>> Reviewed by: tuexen
>> Differential Revision: https://reviews.freebsd.org/D60732
>> ---
>> sys/netinet/in_kdtrace.c | 4 ++
>> sys/netinet/in_kdtrace.h | 1 +
>> sys/netinet/tcp_output.c | 142
>> +++++++++++++++++++++---------------------
>> sys/netinet/tcp_stacks/bbr.c | 2 +-
>> sys/netinet/tcp_stacks/rack.c | 5 +-
>> sys/netinet/tcp_var.h | 10 +--
>> 6 files changed, 85 insertions(+), 79 deletions(-)
>>
> …
>> index 09295544855f..d11a2b745382 100644
>> --- a/sys/netinet/tcp_output.c
>> +++ b/sys/netinet/tcp_output.c
> …
>> void
>> -tcp_sndbuf_autoscale(struct tcpcb *tp, struct socket *so, uint32_t
>> sendwin)
>> +tcp_autosndbuf(struct tcpcb *tp, u_int sendwin)
>> {
>>
> …
>> + SOCK_RECVBUF_LOCK_ASSERT(so);
>> +
> Is this assert right? I’d think autosndbuf is about the send buffer,
> not the receive buffer.
>
With this patch the system does just work for me:
diff --git a/sys/netinet/tcp_output.c b/sys/netinet/tcp_output.c
index d11a2b745382..b5f36d83f5a2 100644
--- a/sys/netinet/tcp_output.c
+++ b/sys/netinet/tcp_output.c
@@ -2154,7 +2154,7 @@ tcp_autosndbuf(struct tcpcb *tp, u_int sendwin)
struct socket *so = tptosocket(tp);
u_int lowat, newsize;
- SOCK_RECVBUF_LOCK_ASSERT(so);
+ SOCK_SENDBUF_LOCK_ASSERT(so);
if (!V_tcp_do_autosndbuf || (so->so_snd.sb_flags & SB_AUTOSIZE)
== 0)
return;
—
Kristof