summaryrefslogtreecommitdiffstats
path: root/net/ipv4/tcp.c
diff options
context:
space:
mode:
authorFlorian Westphal <fw@strlen.de>2014-09-26 16:37:32 -0400
committerDavid S. Miller <davem@davemloft.net>2014-09-29 00:13:10 -0400
commit55d8694fa82c9b5858ae5a78a210353961f908f9 (patch)
treebf74f0684a951ecef52bd00300ad1db5d47fb05f /net/ipv4/tcp.c
parent53dfd501819a6e9c3a7d56cac1ddaf03fe90800d (diff)
net: tcp: assign tcp cong_ops when tcp sk is created
Split assignment and initialization from one into two functions. This is required by followup patches that add Datacenter TCP (DCTCP) congestion control algorithm - we need to be able to determine if the connection is moderated by DCTCP before the 3WHS has finished. As we walk the available congestion control list during the assignment, we are always guaranteed to have Reno present as it's fixed compiled-in. Therefore, since we're doing the early assignment, we don't have a real use for the Reno alias tcp_init_congestion_ops anymore and can thus remove it. Actual usage of the congestion control operations are being made after the 3WHS has finished, in some cases however we can access get_info() via diag if implemented, therefore we need to zero out the private area for those modules. Joint work with Daniel Borkmann and Glenn Judd. Signed-off-by: Florian Westphal <fw@strlen.de> Signed-off-by: Daniel Borkmann <dborkman@redhat.com> Signed-off-by: Glenn Judd <glenn.judd@morganstanley.com> Acked-by: Stephen Hemminger <stephen@networkplumber.org> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4/tcp.c')
-rw-r--r--net/ipv4/tcp.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c
index 87289e51be00..cf5e508e1ef5 100644
--- a/net/ipv4/tcp.c
+++ b/net/ipv4/tcp.c
@@ -405,7 +405,7 @@ void tcp_init_sock(struct sock *sk)
405 405
406 tp->reordering = sysctl_tcp_reordering; 406 tp->reordering = sysctl_tcp_reordering;
407 tcp_enable_early_retrans(tp); 407 tcp_enable_early_retrans(tp);
408 icsk->icsk_ca_ops = &tcp_init_congestion_ops; 408 tcp_assign_congestion_control(sk);
409 409
410 tp->tsoffset = 0; 410 tp->tsoffset = 0;
411 411
@@ -3258,8 +3258,6 @@ void __init tcp_init(void)
3258 tcp_hashinfo.ehash_mask + 1, tcp_hashinfo.bhash_size); 3258 tcp_hashinfo.ehash_mask + 1, tcp_hashinfo.bhash_size);
3259 3259
3260 tcp_metrics_init(); 3260 tcp_metrics_init();
3261 3261 BUG_ON(tcp_register_congestion_control(&tcp_reno) != 0);
3262 tcp_register_congestion_control(&tcp_reno);
3263
3264 tcp_tasklet_init(); 3262 tcp_tasklet_init();
3265} 3263}