Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3fdf3f0c authored by Daikichi Osuga's avatar Daikichi Osuga Committed by David S. Miller
Browse files

[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: default avatarDaikichi Osuga <osugad@s1.nttdocomo.co.jp>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 76d0cc1b
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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++;
		}
+7 −2
Original line number Diff line number Diff line
@@ -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)
	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.