|
@@ -3209,7 +3209,7 @@ void __init tcp_init(void)
|
|
|
{
|
|
|
struct sk_buff *skb = NULL;
|
|
|
unsigned long nr_pages, limit;
|
|
|
- int order, i, max_share;
|
|
|
+ int i, max_share, cnt;
|
|
|
unsigned long jiffy = jiffies;
|
|
|
|
|
|
BUILD_BUG_ON(sizeof(struct tcp_skb_cb) > sizeof(skb->cb));
|
|
@@ -3258,22 +3258,12 @@ void __init tcp_init(void)
|
|
|
INIT_HLIST_HEAD(&tcp_hashinfo.bhash[i].chain);
|
|
|
}
|
|
|
|
|
|
- /* Try to be a bit smarter and adjust defaults depending
|
|
|
- * on available memory.
|
|
|
- */
|
|
|
- for (order = 0; ((1 << order) << PAGE_SHIFT) <
|
|
|
- (tcp_hashinfo.bhash_size * sizeof(struct inet_bind_hashbucket));
|
|
|
- order++)
|
|
|
- ;
|
|
|
- if (order >= 4) {
|
|
|
- tcp_death_row.sysctl_max_tw_buckets = 180000;
|
|
|
- sysctl_tcp_max_orphans = 4096 << (order - 4);
|
|
|
- sysctl_max_syn_backlog = 1024;
|
|
|
- } else if (order < 3) {
|
|
|
- tcp_death_row.sysctl_max_tw_buckets >>= (3 - order);
|
|
|
- sysctl_tcp_max_orphans >>= (3 - order);
|
|
|
- sysctl_max_syn_backlog = 128;
|
|
|
- }
|
|
|
+
|
|
|
+ cnt = tcp_hashinfo.ehash_mask + 1;
|
|
|
+
|
|
|
+ tcp_death_row.sysctl_max_tw_buckets = cnt / 2;
|
|
|
+ sysctl_tcp_max_orphans = cnt / 2;
|
|
|
+ sysctl_max_syn_backlog = max(128, cnt / 256);
|
|
|
|
|
|
/* Set the pressure threshold to be a fraction of global memory that
|
|
|
* is up to 1/2 at 256 MB, decreasing toward zero with the amount of
|