tcp: fix RTT for quick packets in congestion control
authorstephen hemminger <shemminger@vyatta.com>
Mon, 14 Mar 2011 07:52:12 +0000 (07:52 +0000)
committerDavid S. Miller <davem@davemloft.net>
Mon, 14 Mar 2011 22:54:38 +0000 (15:54 -0700)
In the congestion control interface, the callback for each ACK
includes an estimated round trip time in microseconds.
Some algorithms need high resolution (Vegas style) but most only
need jiffie resolution.  If RTT is not accurate (like a retransmission)
-1 is used as a flag value.

When doing coarse resolution if RTT is less than a a jiffie
then 0 should be returned rather than no estimate. Otherwise algorithms
that expect good ack's to trigger slow start (like CUBIC Hystart)
will be confused.

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/tcp_input.c

index 65f6c04062453aefdffa2317781921990616e796..e16b17efcf57bf5c4ea2ad60545a5bd444aac5e3 100644 (file)
@@ -3350,7 +3350,7 @@ static int tcp_clean_rtx_queue(struct sock *sk, int prior_fackets,
                                                 net_invalid_timestamp()))
                                        rtt_us = ktime_us_delta(ktime_get_real(),
                                                                last_ackt);
-                               else if (ca_seq_rtt > 0)
+                               else if (ca_seq_rtt >= 0)
                                        rtt_us = jiffies_to_usecs(ca_seq_rtt);
                        }