]> git.neil.brown.name Git - history.git/commitdiff
[TCP]: Add tcp_default_win_scale sysctl.
authorDavid S. Miller <davem@nuts.davemloft.net>
Wed, 26 May 2004 08:09:10 +0000 (01:09 -0700)
committerDmitry Torokhov <dtor_core@ameritech.net>
Wed, 26 May 2004 08:09:10 +0000 (01:09 -0700)
Documentation/networking/ip-sysctl.txt
include/linux/sysctl.h
include/net/tcp.h
net/ipv4/sysctl_net_ipv4.c
net/ipv4/tcp.c

index b0bc0ede3b109598eb64f4ad89b102bba2d26f66..708e12a20fb07c75df0f87be7d5efc42b8970c8c 100644 (file)
@@ -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 
index 530911c3a18600564ff64f9a1117660f9cb3a722..1303452c2839ac1f63305e4d5a21e84bafc32f0d 100644 (file)
@@ -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 {
index cba1f701ee24221323a29ad5e108c48744c89aa9..e92ed816b807929694be06b48cf459eec32a77e7 100644 (file)
@@ -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,
index 4a98b0b723564132afe6b64d3ee9df5564e51c46..23744e18237a17ca1ac4801df9fed0ad4722c45f 100644 (file)
@@ -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 }
 };
 
index b8553ef0d32ec4165fca61e5fa9fa20e0dace3d4..e1d3918969b29c4e8203f52c8678059f32aafad4 100644 (file)
@@ -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 };