mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-04 01:24:12 +08:00
[TCP]: Two RFC3465 Appropriate Byte Count fixes.
1) fix slow start after retransmit timeout 2) fix case of L=2*SMSS acked bytes comparison Signed-off-by: Daikichi Osuga <osugad@s1.nttdocomo.co.jp> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
76d0cc1b64
commit
3fdf3f0c99
@ -189,7 +189,7 @@ void tcp_slow_start(struct tcp_sock *tp)
|
||||
return;
|
||||
|
||||
/* We MAY increase by 2 if discovered delayed ack */
|
||||
if (sysctl_tcp_abc > 1 && tp->bytes_acked > 2*tp->mss_cache) {
|
||||
if (sysctl_tcp_abc > 1 && tp->bytes_acked >= 2*tp->mss_cache) {
|
||||
if (tp->snd_cwnd < tp->snd_cwnd_clamp)
|
||||
tp->snd_cwnd++;
|
||||
}
|
||||
|
@ -2505,8 +2505,13 @@ static int tcp_ack(struct sock *sk, struct sk_buff *skb, int flag)
|
||||
if (before(ack, prior_snd_una))
|
||||
goto old_ack;
|
||||
|
||||
if (sysctl_tcp_abc && icsk->icsk_ca_state < TCP_CA_CWR)
|
||||
tp->bytes_acked += ack - prior_snd_una;
|
||||
if (sysctl_tcp_abc) {
|
||||
if (icsk->icsk_ca_state < TCP_CA_CWR)
|
||||
tp->bytes_acked += ack - prior_snd_una;
|
||||
else if (icsk->icsk_ca_state == TCP_CA_Loss)
|
||||
/* we assume just one segment left network */
|
||||
tp->bytes_acked += min(ack - prior_snd_una, tp->mss_cache);
|
||||
}
|
||||
|
||||
if (!(flag&FLAG_SLOWPATH) && after(ack, prior_snd_una)) {
|
||||
/* Window is constant, pure forward advance.
|
||||
|
Loading…
Reference in New Issue
Block a user