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;