void tcp_rate_skb_delivered(struct sock *sk, struct sk_buff *skb,
                            struct rate_sample *rs);
 void tcp_rate_gen(struct sock *sk, u32 delivered, u32 lost,
-                 struct skb_mstamp *now, struct rate_sample *rs);
+                 struct rate_sample *rs);
 void tcp_rate_check_app_limited(struct sock *sk);
 
 /* These functions determine how the current flow behaves in respect of SACK
 
                tcp_schedule_loss_probe(sk);
        delivered = tp->delivered - delivered;  /* freshly ACKed or SACKed */
        lost = tp->lost - lost;                 /* freshly marked lost */
-       tcp_rate_gen(sk, delivered, lost, &sack_state.ack_time,
-                    sack_state.rate);
+       tcp_rate_gen(sk, delivered, lost, sack_state.rate);
        tcp_cong_control(sk, ack, delivered, flag, sack_state.rate);
        tcp_xmit_recovery(sk, rexmit);
        return 1;
 
 
 /* Update the connection delivery information and generate a rate sample. */
 void tcp_rate_gen(struct sock *sk, u32 delivered, u32 lost,
-                 struct skb_mstamp *now, struct rate_sample *rs)
+                 struct rate_sample *rs)
 {
        struct tcp_sock *tp = tcp_sk(sk);
        u32 snd_us, ack_us;
         * to carry current time, flags, stats like "tcp_sacktag_state".
         */
        if (delivered)
-               tp->delivered_mstamp = *now;
+               tp->delivered_mstamp = tp->tcp_mstamp;
 
        rs->acked_sacked = delivered;   /* freshly ACKed or SACKed */
        rs->losses = lost;              /* freshly marked lost */
         * longer phase.
         */
        snd_us = rs->interval_us;                               /* send phase */
-       ack_us = skb_mstamp_us_delta(now, &rs->prior_mstamp);   /* ack phase */
+       ack_us = skb_mstamp_us_delta(&tp->tcp_mstamp,
+                                    &rs->prior_mstamp); /* ack phase */
        rs->interval_us = max(snd_us, ack_us);
 
        /* Normally we expect interval_us >= min-rtt.