diff -drupN a/net/ipv4/tcp_rate.c b/net/ipv4/tcp_rate.c --- a/net/ipv4/tcp_rate.c 2018-08-06 17:23:04.000000000 +0300 +++ b/net/ipv4/tcp_rate.c 2022-06-12 05:28:14.000000000 +0300 @@ -106,7 +106,7 @@ void tcp_rate_skb_delivered(struct sock /* Update the connection delivery information and generate a rate sample. */ void tcp_rate_gen(struct sock *sk, u32 delivered, u32 lost, - bool is_sack_reneg, struct skb_mstamp *now, struct rate_sample *rs) + struct skb_mstamp *now, struct rate_sample *rs) { struct tcp_sock *tp = tcp_sk(sk); u32 snd_us, ack_us; @@ -124,12 +124,8 @@ void tcp_rate_gen(struct sock *sk, u32 d rs->acked_sacked = delivered; /* freshly ACKed or SACKed */ rs->losses = lost; /* freshly marked lost */ - /* Return an invalid sample if no timing information is available or - * in recovery from loss with SACK reneging. Rate samples taken during - * a SACK reneging event may overestimate bw by including packets that - * were SACKed before the reneg. - */ - if (!rs->prior_mstamp.v64 || is_sack_reneg) { + /* Return an invalid sample if no timing information is available. */ + if (!rs->prior_mstamp.v64) { rs->delivered = -1; rs->interval_us = -1; return;