rtt_us ? : jiffies_to_usecs(1));
 }
 
-static inline bool tcp_ack_update_rtt(struct sock *sk, const int flag,
-                                     long seq_rtt_us, long sack_rtt_us,
-                                     long ca_rtt_us)
+static bool tcp_ack_update_rtt(struct sock *sk, const int flag,
+                              long seq_rtt_us, long sack_rtt_us,
+                              long ca_rtt_us, struct rate_sample *rs)
 {
        const struct tcp_sock *tp = tcp_sk(sk);
 
 
                seq_rtt_us = ca_rtt_us = delta_us;
        }
+       rs->rtt_us = ca_rtt_us; /* RTT of last (S)ACKed packet (or -1) */
        if (seq_rtt_us < 0)
                return false;
 
 /* Compute time elapsed between (last) SYNACK and the ACK completing 3WHS. */
 void tcp_synack_rtt_meas(struct sock *sk, struct request_sock *req)
 {
+       struct rate_sample rs;
        long rtt_us = -1L;
 
        if (req && !req->num_retrans && tcp_rsk(req)->snt_synack)
                rtt_us = tcp_stamp_us_delta(tcp_clock_us(), tcp_rsk(req)->snt_synack);
 
-       tcp_ack_update_rtt(sk, FLAG_SYN_ACKED, rtt_us, -1L, rtt_us);
+       tcp_ack_update_rtt(sk, FLAG_SYN_ACKED, rtt_us, -1L, rtt_us, &rs);
 }
 
 
                sack_rtt_us = tcp_stamp_us_delta(tp->tcp_mstamp, sack->first_sackt);
                ca_rtt_us = tcp_stamp_us_delta(tp->tcp_mstamp, sack->last_sackt);
        }
-       sack->rate->rtt_us = ca_rtt_us; /* RTT of last (S)ACKed packet, or -1 */
        rtt_update = tcp_ack_update_rtt(sk, flag, seq_rtt_us, sack_rtt_us,
-                                       ca_rtt_us);
+                                       ca_rtt_us, sack->rate);
 
        if (flag & FLAG_ACKED) {
                tcp_rearm_rto(sk);
 
        if (icsk->icsk_ca_ops->pkts_acked) {
                struct ack_sample sample = { .pkts_acked = pkts_acked,
-                                            .rtt_us = ca_rtt_us,
+                                            .rtt_us = sack->rate->rtt_us,
                                             .in_flight = last_in_flight };
 
                icsk->icsk_ca_ops->pkts_acked(sk, &sample);