diff options
author | Eric Dumazet <edumazet@google.com> | 2017-11-07 03:29:28 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2017-11-10 00:34:58 -0500 |
commit | 356d1833b638bd465672aefeb71def3ab93fc17d (patch) | |
tree | 68354249261e8de8d367bfc21bb2969ecb9053d6 /net/ipv4/tcp.c | |
parent | a3dcaf17ee54f1d01d22cc2b22cab0b4f60d78cf (diff) |
tcp: Namespace-ify sysctl_tcp_rmem and sysctl_tcp_wmem
Note that when a new netns is created, it inherits its
sysctl_tcp_rmem and sysctl_tcp_wmem from initial netns.
This change is needed so that we can refine TCP rcvbuf autotuning,
to take RTT into consideration.
Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Wei Wang <weiwan@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4/tcp.c')
-rw-r--r-- | net/ipv4/tcp.c | 21 |
1 files changed, 8 insertions, 13 deletions
diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c index c4cb19ed4628..bc71a27d5ad9 100644 --- a/net/ipv4/tcp.c +++ b/net/ipv4/tcp.c | |||
@@ -289,12 +289,7 @@ struct percpu_counter tcp_orphan_count; | |||
289 | EXPORT_SYMBOL_GPL(tcp_orphan_count); | 289 | EXPORT_SYMBOL_GPL(tcp_orphan_count); |
290 | 290 | ||
291 | long sysctl_tcp_mem[3] __read_mostly; | 291 | long sysctl_tcp_mem[3] __read_mostly; |
292 | int sysctl_tcp_wmem[3] __read_mostly; | ||
293 | int sysctl_tcp_rmem[3] __read_mostly; | ||
294 | |||
295 | EXPORT_SYMBOL(sysctl_tcp_mem); | 292 | EXPORT_SYMBOL(sysctl_tcp_mem); |
296 | EXPORT_SYMBOL(sysctl_tcp_rmem); | ||
297 | EXPORT_SYMBOL(sysctl_tcp_wmem); | ||
298 | 293 | ||
299 | atomic_long_t tcp_memory_allocated; /* Current allocated memory. */ | 294 | atomic_long_t tcp_memory_allocated; /* Current allocated memory. */ |
300 | EXPORT_SYMBOL(tcp_memory_allocated); | 295 | EXPORT_SYMBOL(tcp_memory_allocated); |
@@ -456,8 +451,8 @@ void tcp_init_sock(struct sock *sk) | |||
456 | 451 | ||
457 | icsk->icsk_sync_mss = tcp_sync_mss; | 452 | icsk->icsk_sync_mss = tcp_sync_mss; |
458 | 453 | ||
459 | sk->sk_sndbuf = sysctl_tcp_wmem[1]; | 454 | sk->sk_sndbuf = sock_net(sk)->ipv4.sysctl_tcp_wmem[1]; |
460 | sk->sk_rcvbuf = sysctl_tcp_rmem[1]; | 455 | sk->sk_rcvbuf = sock_net(sk)->ipv4.sysctl_tcp_rmem[1]; |
461 | 456 | ||
462 | sk_sockets_allocated_inc(sk); | 457 | sk_sockets_allocated_inc(sk); |
463 | } | 458 | } |
@@ -3636,13 +3631,13 @@ void __init tcp_init(void) | |||
3636 | max_wshare = min(4UL*1024*1024, limit); | 3631 | max_wshare = min(4UL*1024*1024, limit); |
3637 | max_rshare = min(6UL*1024*1024, limit); | 3632 | max_rshare = min(6UL*1024*1024, limit); |
3638 | 3633 | ||
3639 | sysctl_tcp_wmem[0] = SK_MEM_QUANTUM; | 3634 | init_net.ipv4.sysctl_tcp_wmem[0] = SK_MEM_QUANTUM; |
3640 | sysctl_tcp_wmem[1] = 16*1024; | 3635 | init_net.ipv4.sysctl_tcp_wmem[1] = 16*1024; |
3641 | sysctl_tcp_wmem[2] = max(64*1024, max_wshare); | 3636 | init_net.ipv4.sysctl_tcp_wmem[2] = max(64*1024, max_wshare); |
3642 | 3637 | ||
3643 | sysctl_tcp_rmem[0] = SK_MEM_QUANTUM; | 3638 | init_net.ipv4.sysctl_tcp_rmem[0] = SK_MEM_QUANTUM; |
3644 | sysctl_tcp_rmem[1] = 87380; | 3639 | init_net.ipv4.sysctl_tcp_rmem[1] = 87380; |
3645 | sysctl_tcp_rmem[2] = max(87380, max_rshare); | 3640 | init_net.ipv4.sysctl_tcp_rmem[2] = max(87380, max_rshare); |
3646 | 3641 | ||
3647 | pr_info("Hash tables configured (established %u bind %u)\n", | 3642 | pr_info("Hash tables configured (established %u bind %u)\n", |
3648 | tcp_hashinfo.ehash_mask + 1, tcp_hashinfo.bhash_size); | 3643 | tcp_hashinfo.ehash_mask + 1, tcp_hashinfo.bhash_size); |