tcp: fix >2 iw selection
authorIlpo Järvinen <ilpo.jarvinen@helsinki.fi>
Tue, 14 Apr 2009 09:08:53 +0000 (02:08 -0700)
committerDavid S. Miller <davem@davemloft.net>
Tue, 14 Apr 2009 09:08:53 +0000 (02:08 -0700)
A long-standing feature in tcp_init_metrics() is such that
any of its goto reset prevents call to tcp_init_cwnd().

Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/tcp_input.c

index 2bc8e27a163daafed09a3bf2ee6a145414848d72..c96a6bb254302543288fdae9509205c0bb94947d 100644 (file)
@@ -928,6 +928,8 @@ static void tcp_init_metrics(struct sock *sk)
        tcp_set_rto(sk);
        if (inet_csk(sk)->icsk_rto < TCP_TIMEOUT_INIT && !tp->rx_opt.saw_tstamp)
                goto reset;
+
+cwnd:
        tp->snd_cwnd = tcp_init_cwnd(tp, dst);
        tp->snd_cwnd_stamp = tcp_time_stamp;
        return;
@@ -942,6 +944,7 @@ reset:
                tp->mdev = tp->mdev_max = tp->rttvar = TCP_TIMEOUT_INIT;
                inet_csk(sk)->icsk_rto = TCP_TIMEOUT_INIT;
        }
+       goto cwnd;
 }
 
 static void tcp_update_reordering(struct sock *sk, const int metric,