diff options
Diffstat (limited to 'net/ipv4/tcp.c')
-rw-r--r-- | net/ipv4/tcp.c | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c index 4b0272c92d66..591e96dffc28 100644 --- a/net/ipv4/tcp.c +++ b/net/ipv4/tcp.c | |||
@@ -276,8 +276,8 @@ atomic_t tcp_orphan_count = ATOMIC_INIT(0); | |||
276 | EXPORT_SYMBOL_GPL(tcp_orphan_count); | 276 | EXPORT_SYMBOL_GPL(tcp_orphan_count); |
277 | 277 | ||
278 | int sysctl_tcp_mem[3]; | 278 | int sysctl_tcp_mem[3]; |
279 | int sysctl_tcp_wmem[3] = { 4 * 1024, 16 * 1024, 128 * 1024 }; | 279 | int sysctl_tcp_wmem[3]; |
280 | int sysctl_tcp_rmem[3] = { 4 * 1024, 87380, 87380 * 2 }; | 280 | int sysctl_tcp_rmem[3]; |
281 | 281 | ||
282 | EXPORT_SYMBOL(sysctl_tcp_mem); | 282 | EXPORT_SYMBOL(sysctl_tcp_mem); |
283 | EXPORT_SYMBOL(sysctl_tcp_rmem); | 283 | EXPORT_SYMBOL(sysctl_tcp_rmem); |
@@ -2081,7 +2081,8 @@ __setup("thash_entries=", set_thash_entries); | |||
2081 | void __init tcp_init(void) | 2081 | void __init tcp_init(void) |
2082 | { | 2082 | { |
2083 | struct sk_buff *skb = NULL; | 2083 | struct sk_buff *skb = NULL; |
2084 | int order, i; | 2084 | unsigned long limit; |
2085 | int order, i, max_share; | ||
2085 | 2086 | ||
2086 | if (sizeof(struct tcp_skb_cb) > sizeof(skb->cb)) | 2087 | if (sizeof(struct tcp_skb_cb) > sizeof(skb->cb)) |
2087 | __skb_cb_too_small_for_tcp(sizeof(struct tcp_skb_cb), | 2088 | __skb_cb_too_small_for_tcp(sizeof(struct tcp_skb_cb), |
@@ -2155,12 +2156,16 @@ void __init tcp_init(void) | |||
2155 | sysctl_tcp_mem[1] = 1024 << order; | 2156 | sysctl_tcp_mem[1] = 1024 << order; |
2156 | sysctl_tcp_mem[2] = 1536 << order; | 2157 | sysctl_tcp_mem[2] = 1536 << order; |
2157 | 2158 | ||
2158 | if (order < 3) { | 2159 | limit = ((unsigned long)sysctl_tcp_mem[1]) << (PAGE_SHIFT - 7); |
2159 | sysctl_tcp_wmem[2] = 64 * 1024; | 2160 | max_share = min(4UL*1024*1024, limit); |
2160 | sysctl_tcp_rmem[0] = PAGE_SIZE; | 2161 | |
2161 | sysctl_tcp_rmem[1] = 43689; | 2162 | sysctl_tcp_wmem[0] = SK_STREAM_MEM_QUANTUM; |
2162 | sysctl_tcp_rmem[2] = 2 * 43689; | 2163 | sysctl_tcp_wmem[1] = 16*1024; |
2163 | } | 2164 | sysctl_tcp_wmem[2] = max(64*1024, max_share); |
2165 | |||
2166 | sysctl_tcp_rmem[0] = SK_STREAM_MEM_QUANTUM; | ||
2167 | sysctl_tcp_rmem[1] = 87380; | ||
2168 | sysctl_tcp_rmem[2] = max(87380, max_share); | ||
2164 | 2169 | ||
2165 | printk(KERN_INFO "TCP: Hash tables configured " | 2170 | printk(KERN_INFO "TCP: Hash tables configured " |
2166 | "(established %d bind %d)\n", | 2171 | "(established %d bind %d)\n", |