summaryrefslogtreecommitdiffstats
path: root/include/net
diff options
context:
space:
mode:
authorNeal Cardwell <ncardwell@google.com>2012-04-19 09:55:21 +0000
committerDavid S. Miller <davem@davemloft.net>2012-04-21 16:36:42 -0400
commit900f65d361d333c949ef76a828343075f4fdf523 (patch)
tree8b4474c6c9df1fcad4d946c64bcc1535450d0927 /include/net
parente66e9a31474dcce5be6f1186dc933d8a991c707b (diff)
downloadlinux-stable-900f65d361d333c949ef76a828343075f4fdf523.tar.gz
linux-stable-900f65d361d333c949ef76a828343075f4fdf523.tar.bz2
linux-stable-900f65d361d333c949ef76a828343075f4fdf523.zip
tcp: move duplicate code from tcp_v4_init_sock()/tcp_v6_init_sock()
This commit moves the (substantial) common code shared between tcp_v4_init_sock() and tcp_v6_init_sock() to a new address-family independent function, tcp_init_sock(). Centralizing this functionality should help avoid drift issues, e.g. where the IPv4 side is updated without a corresponding update to IPv6. There was already some drift: IPv4 initialized snd_cwnd to TCP_INIT_CWND, while the IPv6 side was still initializing snd_cwnd to 2 (in this case it should not matter, since snd_cwnd is also initialized in tcp_init_metrics(), but the general risks and maintenance overhead remain). When diffing the old and new code, note that new tcp_init_sock() function uses the order of steps from the tcp_v4_init_sock() implementation (the order is slightly different in tcp_v6_init_sock()). Signed-off-by: Neal Cardwell <ncardwell@google.com> Acked-by: Eric Dumazet <edumazet@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net')
-rw-r--r--include/net/tcp.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/include/net/tcp.h b/include/net/tcp.h
index b4ccb8a6c9c1..fc880e92164a 100644
--- a/include/net/tcp.h
+++ b/include/net/tcp.h
@@ -395,6 +395,7 @@ extern void tcp_enter_loss(struct sock *sk, int how);
extern void tcp_clear_retrans(struct tcp_sock *tp);
extern void tcp_update_metrics(struct sock *sk);
extern void tcp_close(struct sock *sk, long timeout);
+extern void tcp_init_sock(struct sock *sk);
extern unsigned int tcp_poll(struct file * file, struct socket *sock,
struct poll_table_struct *wait);
extern int tcp_getsockopt(struct sock *sk, int level, int optname,