Thread (5 messages) flat view 5 messages, 3 authors, 2021-08-25

Re: [PATCH net-next v2] tcp: enable mid stream window clamp

From: Eric Dumazet <hidden>
Date: 2021-08-25 02:45:05


On 8/19/21 12:54 PM, Neil Spring wrote:
quoted hunk ↗ jump to hunk
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


 net/ipv4/tcp.c | 2 ++
 1 file changed, 2 insertions(+)
diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c
index f931def6302e..2dc6212d5888 100644
--- a/net/ipv4/tcp.c
+++ b/net/ipv4/tcp.c
@@ -3338,6 +3338,8 @@ 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_ssthresh,
+				       tp->window_clamp);
This fits in a single line I think.
		tp->rcv_ssthresh = min(tp->rcv_ssthresh, tp->window_clamp);
 	}
 	return 0;
 }
Hi Neil

Can you provide a packetdrill test showing the what the new expected behavior is ?

It is not really clear why you need this.

Also if we are unable to increase tp->rcv_ssthresh, this means the following sequence
will not work as we would expect :

+0 setsockopt(5, IPPROTO_TCP, TCP_WINDOW_CLAMP, [10000], 4) = 0
+0 setsockopt(5, IPPROTO_TCP, TCP_WINDOW_CLAMP, [100000], 4) = 0


Thanks.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help