diff options
author | Linus Torvalds <torvalds@g5.osdl.org> | 2006-03-25 11:39:20 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-03-25 11:39:20 -0500 |
commit | b55813a2e50088ca30df33fa62aeed5d3adb1796 (patch) | |
tree | be50fe404e94869fe854766e190a5753dbc7dd49 /net/ipv4/tcp.c | |
parent | 368d17e068f691dba5a4f122c271db5ec9b2ebd6 (diff) | |
parent | 9e19bb6d7a0959f5028d46e1ab99c50f0d36eda8 (diff) |
Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
* master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6:
[NETFILTER] x_table.c: sem2mutex
[IPV4]: Aggregate route entries with different TOS values
[TCP]: Mark tcp_*mem[] __read_mostly.
[TCP]: Set default max buffers from memory pool size
[SCTP]: Fix up sctp_rcv return value
[NET]: Take RTNL when unregistering notifier
[WIRELESS]: Fix config dependencies.
[NET]: Fill in a 32-bit hole in struct sock on 64-bit platforms.
[NET]: Ensure device name passed to SO_BINDTODEVICE is NULL terminated.
[MODULES]: Don't allow statically declared exports
[BRIDGE]: Unaligned accesses in the ethernet bridge
Diffstat (limited to 'net/ipv4/tcp.c')
-rw-r--r-- | net/ipv4/tcp.c | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c index 19ea5c0b094b..87f68e787d0c 100644 --- a/net/ipv4/tcp.c +++ b/net/ipv4/tcp.c | |||
@@ -257,6 +257,7 @@ | |||
257 | #include <linux/fs.h> | 257 | #include <linux/fs.h> |
258 | #include <linux/random.h> | 258 | #include <linux/random.h> |
259 | #include <linux/bootmem.h> | 259 | #include <linux/bootmem.h> |
260 | #include <linux/cache.h> | ||
260 | 261 | ||
261 | #include <net/icmp.h> | 262 | #include <net/icmp.h> |
262 | #include <net/tcp.h> | 263 | #include <net/tcp.h> |
@@ -275,9 +276,9 @@ atomic_t tcp_orphan_count = ATOMIC_INIT(0); | |||
275 | 276 | ||
276 | EXPORT_SYMBOL_GPL(tcp_orphan_count); | 277 | EXPORT_SYMBOL_GPL(tcp_orphan_count); |
277 | 278 | ||
278 | int sysctl_tcp_mem[3]; | 279 | int sysctl_tcp_mem[3] __read_mostly; |
279 | int sysctl_tcp_wmem[3] = { 4 * 1024, 16 * 1024, 128 * 1024 }; | 280 | int sysctl_tcp_wmem[3] __read_mostly; |
280 | int sysctl_tcp_rmem[3] = { 4 * 1024, 87380, 87380 * 2 }; | 281 | int sysctl_tcp_rmem[3] __read_mostly; |
281 | 282 | ||
282 | EXPORT_SYMBOL(sysctl_tcp_mem); | 283 | EXPORT_SYMBOL(sysctl_tcp_mem); |
283 | EXPORT_SYMBOL(sysctl_tcp_rmem); | 284 | EXPORT_SYMBOL(sysctl_tcp_rmem); |
@@ -2081,7 +2082,8 @@ __setup("thash_entries=", set_thash_entries); | |||
2081 | void __init tcp_init(void) | 2082 | void __init tcp_init(void) |
2082 | { | 2083 | { |
2083 | struct sk_buff *skb = NULL; | 2084 | struct sk_buff *skb = NULL; |
2084 | int order, i; | 2085 | unsigned long limit; |
2086 | int order, i, max_share; | ||
2085 | 2087 | ||
2086 | if (sizeof(struct tcp_skb_cb) > sizeof(skb->cb)) | 2088 | if (sizeof(struct tcp_skb_cb) > sizeof(skb->cb)) |
2087 | __skb_cb_too_small_for_tcp(sizeof(struct tcp_skb_cb), | 2089 | __skb_cb_too_small_for_tcp(sizeof(struct tcp_skb_cb), |
@@ -2155,12 +2157,16 @@ void __init tcp_init(void) | |||
2155 | sysctl_tcp_mem[1] = 1024 << order; | 2157 | sysctl_tcp_mem[1] = 1024 << order; |
2156 | sysctl_tcp_mem[2] = 1536 << order; | 2158 | sysctl_tcp_mem[2] = 1536 << order; |
2157 | 2159 | ||
2158 | if (order < 3) { | 2160 | limit = ((unsigned long)sysctl_tcp_mem[1]) << (PAGE_SHIFT - 7); |
2159 | sysctl_tcp_wmem[2] = 64 * 1024; | 2161 | max_share = min(4UL*1024*1024, limit); |
2160 | sysctl_tcp_rmem[0] = PAGE_SIZE; | 2162 | |
2161 | sysctl_tcp_rmem[1] = 43689; | 2163 | sysctl_tcp_wmem[0] = SK_STREAM_MEM_QUANTUM; |
2162 | sysctl_tcp_rmem[2] = 2 * 43689; | 2164 | sysctl_tcp_wmem[1] = 16*1024; |
2163 | } | 2165 | sysctl_tcp_wmem[2] = max(64*1024, max_share); |
2166 | |||
2167 | sysctl_tcp_rmem[0] = SK_STREAM_MEM_QUANTUM; | ||
2168 | sysctl_tcp_rmem[1] = 87380; | ||
2169 | sysctl_tcp_rmem[2] = max(87380, max_share); | ||
2164 | 2170 | ||
2165 | printk(KERN_INFO "TCP: Hash tables configured " | 2171 | printk(KERN_INFO "TCP: Hash tables configured " |
2166 | "(established %d bind %d)\n", | 2172 | "(established %d bind %d)\n", |