From a2a1f74d131eebd0f34eb1cc605161f0dd77a4f6 Mon Sep 17 00:00:00 2001 From: John Heffner Date: Sat, 25 Mar 2006 01:34:07 -0800 Subject: [PATCH] --- yaml --- r: 23663 b: refs/heads/master c: 7b4f4b5ebceab67ce440a61081a69f0265e17c2a h: refs/heads/master i: 23661: 4d3fb1b70a9fe0992c3bb9ddab95dfe94e885f1b 23659: 9fc469460ec85c8547d2ebe629212c9a92531e04 23655: 3ed5017487bb05b61571e32aa75870261c44042f 23647: c5c412c73d6ef6c1599faecac9a0cefbcb7e9039 v: v3 --- [refs] | 2 +- trunk/net/ipv4/tcp.c | 23 ++++++++++++++--------- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/[refs] b/[refs] index a34336ef96ea..769c2215a36c 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 2babf9daae4a3561f3264638a22ac7d0b14a6f52 +refs/heads/master: 7b4f4b5ebceab67ce440a61081a69f0265e17c2a diff --git a/trunk/net/ipv4/tcp.c b/trunk/net/ipv4/tcp.c index 4b0272c92d66..591e96dffc28 100644 --- a/trunk/net/ipv4/tcp.c +++ b/trunk/net/ipv4/tcp.c @@ -276,8 +276,8 @@ atomic_t tcp_orphan_count = ATOMIC_INIT(0); EXPORT_SYMBOL_GPL(tcp_orphan_count); 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 }; +int sysctl_tcp_wmem[3]; +int sysctl_tcp_rmem[3]; EXPORT_SYMBOL(sysctl_tcp_mem); EXPORT_SYMBOL(sysctl_tcp_rmem); @@ -2081,7 +2081,8 @@ __setup("thash_entries=", set_thash_entries); void __init tcp_init(void) { struct sk_buff *skb = NULL; - int order, i; + unsigned long limit; + int order, i, max_share; if (sizeof(struct tcp_skb_cb) > sizeof(skb->cb)) __skb_cb_too_small_for_tcp(sizeof(struct tcp_skb_cb), @@ -2155,12 +2156,16 @@ void __init tcp_init(void) sysctl_tcp_mem[1] = 1024 << order; sysctl_tcp_mem[2] = 1536 << order; - if (order < 3) { - sysctl_tcp_wmem[2] = 64 * 1024; - sysctl_tcp_rmem[0] = PAGE_SIZE; - sysctl_tcp_rmem[1] = 43689; - sysctl_tcp_rmem[2] = 2 * 43689; - } + limit = ((unsigned long)sysctl_tcp_mem[1]) << (PAGE_SHIFT - 7); + max_share = min(4UL*1024*1024, limit); + + sysctl_tcp_wmem[0] = SK_STREAM_MEM_QUANTUM; + sysctl_tcp_wmem[1] = 16*1024; + sysctl_tcp_wmem[2] = max(64*1024, max_share); + + sysctl_tcp_rmem[0] = SK_STREAM_MEM_QUANTUM; + sysctl_tcp_rmem[1] = 87380; + sysctl_tcp_rmem[2] = max(87380, max_share); printk(KERN_INFO "TCP: Hash tables configured " "(established %d bind %d)\n",