]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - net/ipv4/tcp_illinois.c
[TCP] illinois: Incorrect beta usage
[linux-2.6-omap-h63xx.git] / net / ipv4 / tcp_illinois.c
index 4adc47c55351a49d09d172b1cb5a3baa194207bc..5aa5f5496d6d79e4553fcb2cdf0f5f8283f33e45 100644 (file)
@@ -83,14 +83,15 @@ static void tcp_illinois_init(struct sock *sk)
 }
 
 /* Measure RTT for each ack. */
-static void tcp_illinois_acked(struct sock *sk, u32 pkts_acked, ktime_t last)
+static void tcp_illinois_acked(struct sock *sk, u32 pkts_acked, s32 rtt)
 {
        struct illinois *ca = inet_csk_ca(sk);
-       u32 rtt;
 
        ca->acked = pkts_acked;
 
-       rtt = ktime_to_us(net_timedelta(last));
+       /* dup ack, no rtt sample */
+       if (rtt < 0)
+               return;
 
        /* ignore bogus values, this prevents wraparound in alpha math */
        if (rtt > RTT_MAX)
@@ -255,7 +256,7 @@ static void tcp_illinois_state(struct sock *sk, u8 new_state)
 /*
  * Increase window in response to successful acknowledgment.
  */
-static void tcp_illinois_cong_avoid(struct sock *sk, u32 ack, u32 rtt,
+static void tcp_illinois_cong_avoid(struct sock *sk, u32 ack,
                                    u32 in_flight, int flag)
 {
        struct tcp_sock *tp = tcp_sk(sk);
@@ -297,7 +298,7 @@ static u32 tcp_illinois_ssthresh(struct sock *sk)
        struct illinois *ca = inet_csk_ca(sk);
 
        /* Multiplicative decrease */
-       return max((tp->snd_cwnd * ca->beta) >> BETA_SHIFT, 2U);
+       return max(tp->snd_cwnd - ((tp->snd_cwnd * ca->beta) >> BETA_SHIFT), 2U);
 }