diff options
author | Neal Cardwell <ncardwell@google.com> | 2012-04-19 09:55:21 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-04-21 16:36:42 -0400 |
commit | 900f65d361d333c949ef76a828343075f4fdf523 (patch) | |
tree | 8b4474c6c9df1fcad4d946c64bcc1535450d0927 /include/net | |
parent | e66e9a31474dcce5be6f1186dc933d8a991c707b (diff) | |
download | linux-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.h | 1 |
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, |