From: Neil Spring <hidden> Date: 2021-08-25 21:02:02
The TCP_WINDOW_CLAMP socket option is defined in tcp(7) to "Bound the size
of the advertised window to this value." Window clamping is distributed
across two variables, window_clamp ("Maximal window to advertise" in
tcp.h) and rcv_ssthresh ("Current window clamp").
This patch updates the function where the window clamp is set to also
reduce the current window clamp, rcv_sshthresh, if needed. With this,
setting the TCP_WINDOW_CLAMP option has the documented effect of limiting
the window.
Signed-off-by: Neil Spring <redacted>
---
v2: - fix email formatting
v3: - address comments by setting rcv_ssthresh based on prior window
net/ipv4/tcp.c | 1 +
1 file changed, 1 insertion(+)
@@ -3338,6 +3338,7 @@ int tcp_set_window_clamp(struct sock *sk, int val)}else{tp->window_clamp=val<SOCK_MIN_RCVBUF/2?SOCK_MIN_RCVBUF/2:val;+tp->rcv_ssthresh=min(tp->rcv_wnd,tp->window_clamp);}return0;}
On Wed, Aug 25, 2021 at 2:02 PM Neil Spring [off-list ref] wrote:
The TCP_WINDOW_CLAMP socket option is defined in tcp(7) to "Bound the size
of the advertised window to this value." Window clamping is distributed
across two variables, window_clamp ("Maximal window to advertise" in
tcp.h) and rcv_ssthresh ("Current window clamp").
This patch updates the function where the window clamp is set to also
reduce the current window clamp, rcv_sshthresh, if needed. With this,
setting the TCP_WINDOW_CLAMP option has the documented effect of limiting
the window.
This patch looks like a bug-fix so it should be applied to net not net-next?
quoted hunk
Signed-off-by: Neil Spring <redacted>
---
v2: - fix email formatting
v3: - address comments by setting rcv_ssthresh based on prior window
net/ipv4/tcp.c | 1 +
1 file changed, 1 insertion(+)
@@ -3338,6 +3338,7 @@ int tcp_set_window_clamp(struct sock *sk, int val)}else{tp->window_clamp=val<SOCK_MIN_RCVBUF/2?SOCK_MIN_RCVBUF/2:val;+tp->rcv_ssthresh=min(tp->rcv_wnd,tp->window_clamp);}return0;}--
From: Eric Dumazet <edumazet@google.com> Date: 2021-08-26 19:32:27
On Thu, Aug 26, 2021 at 12:11 PM Yuchung Cheng [off-list ref] wrote:
On Wed, Aug 25, 2021 at 2:02 PM Neil Spring [off-list ref] wrote:
quoted
The TCP_WINDOW_CLAMP socket option is defined in tcp(7) to "Bound the size
of the advertised window to this value." Window clamping is distributed
across two variables, window_clamp ("Maximal window to advertise" in
tcp.h) and rcv_ssthresh ("Current window clamp").
This patch updates the function where the window clamp is set to also
reduce the current window clamp, rcv_sshthresh, if needed. With this,
setting the TCP_WINDOW_CLAMP option has the documented effect of limiting
the window.
This patch looks like a bug-fix so it should be applied to net not net-next?
It seems TCP_WINDOW_CLAMP never worked in this context, not sure
if any application was expecting it to work.
Note that if we target net tree, we would like a Fixes: tag.
I will give my SOB a bit later in the day, I have to run some errands.
Thanks.
From: Eric Dumazet <hidden> Date: 2021-08-26 22:52:00
On 8/25/21 2:01 PM, Neil Spring wrote:
The TCP_WINDOW_CLAMP socket option is defined in tcp(7) to "Bound the size
of the advertised window to this value." Window clamping is distributed
across two variables, window_clamp ("Maximal window to advertise" in
tcp.h) and rcv_ssthresh ("Current window clamp").
This patch updates the function where the window clamp is set to also
reduce the current window clamp, rcv_sshthresh, if needed. With this,
setting the TCP_WINDOW_CLAMP option has the documented effect of limiting
the window.
Signed-off-by: Neil Spring <redacted>
---
v2: - fix email formatting
v3: - address comments by setting rcv_ssthresh based on prior window
SGTM, thanks.
Signed-off-by: Eric Dumazet <edumazet@google.com>
Hello:
This patch was applied to netdev/net-next.git (refs/heads/master):
On Wed, 25 Aug 2021 14:01:17 -0700 you wrote:
The TCP_WINDOW_CLAMP socket option is defined in tcp(7) to "Bound the size
of the advertised window to this value." Window clamping is distributed
across two variables, window_clamp ("Maximal window to advertise" in
tcp.h) and rcv_ssthresh ("Current window clamp").
This patch updates the function where the window clamp is set to also
reduce the current window clamp, rcv_sshthresh, if needed. With this,
setting the TCP_WINDOW_CLAMP option has the documented effect of limiting
the window.
[...]