diff options
author | Neal Cardwell <ncardwell@google.com> | 2012-09-22 00:18:54 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-09-22 15:47:10 -0400 |
commit | 623df484a777f3c00c1ea3d6a7565b8d8ac688a1 (patch) | |
tree | 6394f6b3bac15a274dbaecc4c5d46761f838f2ca | |
parent | de46584675fad02b7f8255f31be0ea1be5cd185b (diff) |
tcp: extract code to compute SYNACK RTT
In preparation for adding another spot where we compute the SYNACK
RTT, extract this code so that it can be shared.
Signed-off-by: Neal Cardwell <ncardwell@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | include/net/tcp.h | 9 | ||||
-rw-r--r-- | net/ipv4/tcp_ipv4.c | 4 | ||||
-rw-r--r-- | net/ipv6/tcp_ipv6.c | 4 |
3 files changed, 11 insertions, 6 deletions
diff --git a/include/net/tcp.h b/include/net/tcp.h index a8cb00c0c6d9..a718d0e3d8e7 100644 --- a/include/net/tcp.h +++ b/include/net/tcp.h | |||
@@ -1137,6 +1137,15 @@ static inline void tcp_openreq_init(struct request_sock *req, | |||
1137 | ireq->loc_port = tcp_hdr(skb)->dest; | 1137 | ireq->loc_port = tcp_hdr(skb)->dest; |
1138 | } | 1138 | } |
1139 | 1139 | ||
1140 | /* Compute time elapsed between SYNACK and the ACK completing 3WHS */ | ||
1141 | static inline void tcp_synack_rtt_meas(struct sock *sk, | ||
1142 | struct request_sock *req) | ||
1143 | { | ||
1144 | if (tcp_rsk(req)->snt_synack) | ||
1145 | tcp_valid_rtt_meas(sk, | ||
1146 | tcp_time_stamp - tcp_rsk(req)->snt_synack); | ||
1147 | } | ||
1148 | |||
1140 | extern void tcp_enter_memory_pressure(struct sock *sk); | 1149 | extern void tcp_enter_memory_pressure(struct sock *sk); |
1141 | 1150 | ||
1142 | static inline int keepalive_intvl_when(const struct tcp_sock *tp) | 1151 | static inline int keepalive_intvl_when(const struct tcp_sock *tp) |
diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c index e64abed249cc..1e66f7fb4fe6 100644 --- a/net/ipv4/tcp_ipv4.c +++ b/net/ipv4/tcp_ipv4.c | |||
@@ -1733,9 +1733,7 @@ struct sock *tcp_v4_syn_recv_sock(struct sock *sk, struct sk_buff *skb, | |||
1733 | newtp->advmss = tcp_sk(sk)->rx_opt.user_mss; | 1733 | newtp->advmss = tcp_sk(sk)->rx_opt.user_mss; |
1734 | 1734 | ||
1735 | tcp_initialize_rcv_mss(newsk); | 1735 | tcp_initialize_rcv_mss(newsk); |
1736 | if (tcp_rsk(req)->snt_synack) | 1736 | tcp_synack_rtt_meas(newsk, req); |
1737 | tcp_valid_rtt_meas(newsk, | ||
1738 | tcp_time_stamp - tcp_rsk(req)->snt_synack); | ||
1739 | newtp->total_retrans = req->retrans; | 1737 | newtp->total_retrans = req->retrans; |
1740 | 1738 | ||
1741 | #ifdef CONFIG_TCP_MD5SIG | 1739 | #ifdef CONFIG_TCP_MD5SIG |
diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c index f3bfb8bbfdec..cfeeeb7fcf54 100644 --- a/net/ipv6/tcp_ipv6.c +++ b/net/ipv6/tcp_ipv6.c | |||
@@ -1348,9 +1348,7 @@ static struct sock * tcp_v6_syn_recv_sock(struct sock *sk, struct sk_buff *skb, | |||
1348 | newtp->advmss = tcp_sk(sk)->rx_opt.user_mss; | 1348 | newtp->advmss = tcp_sk(sk)->rx_opt.user_mss; |
1349 | 1349 | ||
1350 | tcp_initialize_rcv_mss(newsk); | 1350 | tcp_initialize_rcv_mss(newsk); |
1351 | if (tcp_rsk(req)->snt_synack) | 1351 | tcp_synack_rtt_meas(newsk, req); |
1352 | tcp_valid_rtt_meas(newsk, | ||
1353 | tcp_time_stamp - tcp_rsk(req)->snt_synack); | ||
1354 | newtp->total_retrans = req->retrans; | 1352 | newtp->total_retrans = req->retrans; |
1355 | 1353 | ||
1356 | newinet->inet_daddr = newinet->inet_saddr = LOOPBACK4_IPV6; | 1354 | newinet->inet_daddr = newinet->inet_saddr = LOOPBACK4_IPV6; |