Commit 316c1592 authored by Stephen Hemminger's avatar Stephen Hemminger Committed by David S. Miller

[TCP]: Limit window scaling if window is clamped.

This small change allows for easy per-route workarounds for broken hosts or
middleboxes that are not compliant with TCP standards for window scaling.
Rather than having to turn off window scaling globally. This patch allows
reducing or disabling window scaling if window clamp is present.

Example: Mark Lord reported a problem with 2.6.17 kernel being unable to
access http://www.everymac.com

# ip route add 216.145.246.23/32 via 10.8.0.1 window 65535
Signed-off-by: default avatarStephen Hemminger <shemminger@osdl.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent e0b7cde9
...@@ -201,6 +201,7 @@ void tcp_select_initial_window(int __space, __u32 mss, ...@@ -201,6 +201,7 @@ void tcp_select_initial_window(int __space, __u32 mss,
* See RFC1323 for an explanation of the limit to 14 * See RFC1323 for an explanation of the limit to 14
*/ */
space = max_t(u32, sysctl_tcp_rmem[2], sysctl_rmem_max); space = max_t(u32, sysctl_tcp_rmem[2], sysctl_rmem_max);
space = min_t(u32, space, *window_clamp);
while (space > 65535 && (*rcv_wscale) < 14) { while (space > 65535 && (*rcv_wscale) < 14) {
space >>= 1; space >>= 1;
(*rcv_wscale)++; (*rcv_wscale)++;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment