Commit 4d9d9fa9 authored by David S. Miller's avatar David S. Miller Committed by Dmitry Torokhov

[TCP]: Add tcp_default_win_scale sysctl.

parent d8777cc1
...@@ -340,6 +340,11 @@ tcp_bic_fast_convergence - BOOLEAN ...@@ -340,6 +340,11 @@ tcp_bic_fast_convergence - BOOLEAN
more rapidly. more rapidly.
Default: 1 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 ip_local_port_range - 2 INTEGERS
Defines the local port range that is used by TCP and UDP to Defines the local port range that is used by TCP and UDP to
choose the local port. The first number is the first, the choose the local port. The first number is the first, the
......
...@@ -336,6 +336,7 @@ enum ...@@ -336,6 +336,7 @@ enum
NET_TCP_BIC=102, NET_TCP_BIC=102,
NET_TCP_BIC_FAST_CONVERGENCE=103, NET_TCP_BIC_FAST_CONVERGENCE=103,
NET_TCP_BIC_LOW_WINDOW=104, NET_TCP_BIC_LOW_WINDOW=104,
NET_TCP_DEFAULT_WIN_SCALE=105,
}; };
enum { enum {
......
...@@ -610,6 +610,7 @@ extern int sysctl_tcp_nometrics_save; ...@@ -610,6 +610,7 @@ extern int sysctl_tcp_nometrics_save;
extern int sysctl_tcp_bic; extern int sysctl_tcp_bic;
extern int sysctl_tcp_bic_fast_convergence; extern int sysctl_tcp_bic_fast_convergence;
extern int sysctl_tcp_bic_low_window; extern int sysctl_tcp_bic_low_window;
extern int sysctl_tcp_default_win_scale;
extern atomic_t tcp_memory_allocated; extern atomic_t tcp_memory_allocated;
extern atomic_t tcp_sockets_allocated; extern atomic_t tcp_sockets_allocated;
...@@ -1751,6 +1752,9 @@ static inline void tcp_select_initial_window(int __space, __u32 mss, ...@@ -1751,6 +1752,9 @@ static inline void tcp_select_initial_window(int __space, __u32 mss,
if (*rcv_wscale && sysctl_tcp_app_win && space>=mss && if (*rcv_wscale && sysctl_tcp_app_win && space>=mss &&
space - max((space>>sysctl_tcp_app_win), mss>>*rcv_wscale) < 65536/2) space - max((space>>sysctl_tcp_app_win), mss>>*rcv_wscale) < 65536/2)
(*rcv_wscale)--; (*rcv_wscale)--;
*rcv_wscale = max((__u8)sysctl_tcp_default_win_scale,
*rcv_wscale);
} }
/* Set initial window to value enough for senders, /* Set initial window to value enough for senders,
......
...@@ -665,6 +665,14 @@ ctl_table ipv4_table[] = { ...@@ -665,6 +665,14 @@ ctl_table ipv4_table[] = {
.mode = 0644, .mode = 0644,
.proc_handler = &proc_dointvec, .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 } { .ctl_name = 0 }
}; };
......
...@@ -276,6 +276,8 @@ kmem_cache_t *tcp_timewait_cachep; ...@@ -276,6 +276,8 @@ kmem_cache_t *tcp_timewait_cachep;
atomic_t tcp_orphan_count = ATOMIC_INIT(0); atomic_t tcp_orphan_count = ATOMIC_INIT(0);
int sysctl_tcp_default_win_scale = 7;
int sysctl_tcp_mem[3]; int sysctl_tcp_mem[3];
int sysctl_tcp_wmem[3] = { 4 * 1024, 16 * 1024, 128 * 1024 }; int sysctl_tcp_wmem[3] = { 4 * 1024, 16 * 1024, 128 * 1024 };
int sysctl_tcp_rmem[3] = { 4 * 1024, 87380, 87380 * 2 }; int sysctl_tcp_rmem[3] = { 4 * 1024, 87380, 87380 * 2 };
......
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