mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-02-22 13:18:25 +07:00
tcp: fix stretch ACK bugs in Scalable
Change Scalable to properly handle stretch ACKs in additive increase mode by passing in the count of ACKed packets to tcp_cong_avoid_ai(). In addition, because we are now precisely accounting for stretch ACKs, including delayed ACKs, we can now change TCP_SCALABLE_AI_CNT to 100. Signed-off-by: Pengcheng Yang <yangpc@wangsu.com> Acked-by: Neal Cardwell <ncardwell@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
be0d935ebf
commit
5415e3c37a
@ -10,10 +10,9 @@
|
|||||||
#include <net/tcp.h>
|
#include <net/tcp.h>
|
||||||
|
|
||||||
/* These factors derived from the recommended values in the aer:
|
/* These factors derived from the recommended values in the aer:
|
||||||
* .01 and and 7/8. We use 50 instead of 100 to account for
|
* .01 and and 7/8.
|
||||||
* delayed ack.
|
|
||||||
*/
|
*/
|
||||||
#define TCP_SCALABLE_AI_CNT 50U
|
#define TCP_SCALABLE_AI_CNT 100U
|
||||||
#define TCP_SCALABLE_MD_SCALE 3
|
#define TCP_SCALABLE_MD_SCALE 3
|
||||||
|
|
||||||
static void tcp_scalable_cong_avoid(struct sock *sk, u32 ack, u32 acked)
|
static void tcp_scalable_cong_avoid(struct sock *sk, u32 ack, u32 acked)
|
||||||
@ -23,11 +22,13 @@ static void tcp_scalable_cong_avoid(struct sock *sk, u32 ack, u32 acked)
|
|||||||
if (!tcp_is_cwnd_limited(sk))
|
if (!tcp_is_cwnd_limited(sk))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (tcp_in_slow_start(tp))
|
if (tcp_in_slow_start(tp)) {
|
||||||
tcp_slow_start(tp, acked);
|
acked = tcp_slow_start(tp, acked);
|
||||||
else
|
if (!acked)
|
||||||
tcp_cong_avoid_ai(tp, min(tp->snd_cwnd, TCP_SCALABLE_AI_CNT),
|
return;
|
||||||
1);
|
}
|
||||||
|
tcp_cong_avoid_ai(tp, min(tp->snd_cwnd, TCP_SCALABLE_AI_CNT),
|
||||||
|
acked);
|
||||||
}
|
}
|
||||||
|
|
||||||
static u32 tcp_scalable_ssthresh(struct sock *sk)
|
static u32 tcp_scalable_ssthresh(struct sock *sk)
|
||||||
|
Loading…
Reference in New Issue
Block a user