aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv4/tcp.c
diff options
context:
space:
mode:
authorEric Dumazet <edumazet@google.com>2017-11-07 03:29:28 -0500
committerDavid S. Miller <davem@davemloft.net>2017-11-10 00:34:58 -0500
commit356d1833b638bd465672aefeb71def3ab93fc17d (patch)
tree68354249261e8de8d367bfc21bb2969ecb9053d6 /net/ipv4/tcp.c
parenta3dcaf17ee54f1d01d22cc2b22cab0b4f60d78cf (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.c21
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;
289EXPORT_SYMBOL_GPL(tcp_orphan_count); 289EXPORT_SYMBOL_GPL(tcp_orphan_count);
290 290
291long sysctl_tcp_mem[3] __read_mostly; 291long sysctl_tcp_mem[3] __read_mostly;
292int sysctl_tcp_wmem[3] __read_mostly;
293int sysctl_tcp_rmem[3] __read_mostly;
294
295EXPORT_SYMBOL(sysctl_tcp_mem); 292EXPORT_SYMBOL(sysctl_tcp_mem);
296EXPORT_SYMBOL(sysctl_tcp_rmem);
297EXPORT_SYMBOL(sysctl_tcp_wmem);
298 293
299atomic_long_t tcp_memory_allocated; /* Current allocated memory. */ 294atomic_long_t tcp_memory_allocated; /* Current allocated memory. */
300EXPORT_SYMBOL(tcp_memory_allocated); 295EXPORT_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);