From: David S. Miller Date: Wed, 26 May 2004 08:09:10 +0000 (-0700) Subject: [TCP]: Add tcp_default_win_scale sysctl. X-Git-Tag: v2.6.7-rc2~46^2~3 X-Git-Url: http://git.neil.brown.name/?a=commitdiff_plain;h=4d9d9fa9aa83694cdb96552498d365aee569cca5;p=history.git [TCP]: Add tcp_default_win_scale sysctl. --- diff --git a/Documentation/networking/ip-sysctl.txt b/Documentation/networking/ip-sysctl.txt index b0bc0ede3b10..708e12a20fb0 100644 --- a/Documentation/networking/ip-sysctl.txt +++ b/Documentation/networking/ip-sysctl.txt @@ -340,6 +340,11 @@ tcp_bic_fast_convergence - BOOLEAN more rapidly. Default: 1 +tcp_default_win_scale - INTEGER + Sets the minimum window scale TCP will negotiate for on all + conections. + Default: 7 + ip_local_port_range - 2 INTEGERS Defines the local port range that is used by TCP and UDP to choose the local port. The first number is the first, the diff --git a/include/linux/sysctl.h b/include/linux/sysctl.h index 530911c3a186..1303452c2839 100644 --- a/include/linux/sysctl.h +++ b/include/linux/sysctl.h @@ -336,6 +336,7 @@ enum NET_TCP_BIC=102, NET_TCP_BIC_FAST_CONVERGENCE=103, NET_TCP_BIC_LOW_WINDOW=104, + NET_TCP_DEFAULT_WIN_SCALE=105, }; enum { diff --git a/include/net/tcp.h b/include/net/tcp.h index cba1f701ee24..e92ed816b807 100644 --- a/include/net/tcp.h +++ b/include/net/tcp.h @@ -610,6 +610,7 @@ extern int sysctl_tcp_nometrics_save; extern int sysctl_tcp_bic; extern int sysctl_tcp_bic_fast_convergence; extern int sysctl_tcp_bic_low_window; +extern int sysctl_tcp_default_win_scale; extern atomic_t tcp_memory_allocated; extern atomic_t tcp_sockets_allocated; @@ -1751,6 +1752,9 @@ static inline void tcp_select_initial_window(int __space, __u32 mss, if (*rcv_wscale && sysctl_tcp_app_win && space>=mss && space - max((space>>sysctl_tcp_app_win), mss>>*rcv_wscale) < 65536/2) (*rcv_wscale)--; + + *rcv_wscale = max((__u8)sysctl_tcp_default_win_scale, + *rcv_wscale); } /* Set initial window to value enough for senders, diff --git a/net/ipv4/sysctl_net_ipv4.c b/net/ipv4/sysctl_net_ipv4.c index 4a98b0b72356..23744e18237a 100644 --- a/net/ipv4/sysctl_net_ipv4.c +++ b/net/ipv4/sysctl_net_ipv4.c @@ -665,6 +665,14 @@ ctl_table ipv4_table[] = { .mode = 0644, .proc_handler = &proc_dointvec, }, + { + .ctl_name = NET_TCP_DEFAULT_WIN_SCALE, + .procname = "tcp_default_win_scale", + .data = &sysctl_tcp_default_win_scale, + .maxlen = sizeof(int), + .mode = 0644, + .proc_handler = &proc_dointvec, + }, { .ctl_name = 0 } }; diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c index b8553ef0d32e..e1d3918969b2 100644 --- a/net/ipv4/tcp.c +++ b/net/ipv4/tcp.c @@ -276,6 +276,8 @@ kmem_cache_t *tcp_timewait_cachep; atomic_t tcp_orphan_count = ATOMIC_INIT(0); +int sysctl_tcp_default_win_scale = 7; + int sysctl_tcp_mem[3]; int sysctl_tcp_wmem[3] = { 4 * 1024, 16 * 1024, 128 * 1024 }; int sysctl_tcp_rmem[3] = { 4 * 1024, 87380, 87380 * 2 };