tcp: Add tcp_retransmit_stamp() helper routine
authorJon Maxwell <jmaxwell37@gmail.com>
Thu, 19 Jul 2018 01:14:43 +0000 (11:14 +1000)
committerDavid S. Miller <davem@davemloft.net>
Sat, 21 Jul 2018 17:28:55 +0000 (10:28 -0700)
Create a seperate helper routine as per Neal Cardwells suggestion. To
be used by the final commit in this series and retransmits_timed_out().

Signed-off-by: Jon Maxwell <jmaxwell37@gmail.com>
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/tcp_timer.c

index fa34984..d212f18 100644 (file)
 #include <linux/gfp.h>
 #include <net/tcp.h>
 
+u32 tcp_retransmit_stamp(const struct sock *sk)
+{
+       u32 start_ts = tcp_sk(sk)->retrans_stamp;
+
+       if (unlikely(!start_ts)) {
+               struct sk_buff *head = tcp_rtx_queue_head(sk);
+
+               if (!head)
+                       return 0;
+               start_ts = tcp_skb_timestamp(head);
+       }
+       return start_ts;
+}
+
 /**
  *  tcp_write_err() - close socket and save error info
  *  @sk:  The socket the error has appeared on.
@@ -166,14 +180,9 @@ static bool retransmits_timed_out(struct sock *sk,
        if (!inet_csk(sk)->icsk_retransmits)
                return false;
 
-       start_ts = tcp_sk(sk)->retrans_stamp;
-       if (unlikely(!start_ts)) {
-               struct sk_buff *head = tcp_rtx_queue_head(sk);
-
-               if (!head)
-                       return false;
-               start_ts = tcp_skb_timestamp(head);
-       }
+       start_ts = tcp_retransmit_stamp(sk);
+       if (!start_ts)
+               return false;
 
        if (likely(timeout == 0)) {
                linear_backoff_thresh = ilog2(TCP_RTO_MAX/rto_base);