summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIlpo Järvinen <ilpo.jarvinen@helsinki.fi>2009-04-14 02:08:53 -0700
committerDavid S. Miller <davem@davemloft.net>2009-04-14 02:08:53 -0700
commit86bcebafc5e7f5163ccf828792fe694b112ed6fa (patch)
treefa383567eae0553e73a834ad97f64e07d1b47dfe
parent1a31f2042e938f1b467aa3d807cc5666352bf8a3 (diff)
downloadlinux-stable-86bcebafc5e7f5163ccf828792fe694b112ed6fa.tar.gz
linux-stable-86bcebafc5e7f5163ccf828792fe694b112ed6fa.tar.bz2
linux-stable-86bcebafc5e7f5163ccf828792fe694b112ed6fa.zip
tcp: fix >2 iw selection
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>
-rw-r--r--net/ipv4/tcp_input.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
index 2bc8e27a163d..c96a6bb25430 100644
--- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c
@@ -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,