aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeal Cardwell <ncardwell@google.com>2012-09-22 00:18:54 -0400
committerDavid S. Miller <davem@davemloft.net>2012-09-22 15:47:10 -0400
commit623df484a777f3c00c1ea3d6a7565b8d8ac688a1 (patch)
tree6394f6b3bac15a274dbaecc4c5d46761f838f2ca
parentde46584675fad02b7f8255f31be0ea1be5cd185b (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.h9
-rw-r--r--net/ipv4/tcp_ipv4.c4
-rw-r--r--net/ipv6/tcp_ipv6.c4
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 */
1141static 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
1140extern void tcp_enter_memory_pressure(struct sock *sk); 1149extern void tcp_enter_memory_pressure(struct sock *sk);
1141 1150
1142static inline int keepalive_intvl_when(const struct tcp_sock *tp) 1151static 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;