aboutsummaryrefslogtreecommitdiff
path: root/net/ipv4/tcp_input.c
diff options
context:
space:
mode:
authorMark Brown <broonie@kernel.org>2018-07-23 16:49:59 +0100
committerMark Brown <broonie@kernel.org>2018-07-23 16:49:59 +0100
commita9c613d774e602d7c008acb374cb2185b5be2ee4 (patch)
treee4c81d684d9cb0518179aac4df64ed5eb497755f /net/ipv4/tcp_input.c
parent5b49d48e6165b258428c871a8fc6a09cf75fdb0a (diff)
parent1c6a1d5ae62dbaec8922761f56332e6e830b32a4 (diff)
Merge branch 'linux-linaro-lsk-v4.4' into linux-linaro-lsk-v4.4-androidlsk-v4.4-18.09-androidlsk-v4.4-18.07-android
Diffstat (limited to 'net/ipv4/tcp_input.c')
-rw-r--r--net/ipv4/tcp_input.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
index 667a2573317f..8677461230f6 100644
--- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c
@@ -3219,6 +3219,15 @@ static int tcp_clean_rtx_queue(struct sock *sk, int prior_fackets,
if (tcp_is_reno(tp)) {
tcp_remove_reno_sacks(sk, pkts_acked);
+
+ /* If any of the cumulatively ACKed segments was
+ * retransmitted, non-SACK case cannot confirm that
+ * progress was due to original transmission due to
+ * lack of TCPCB_SACKED_ACKED bits even if some of
+ * the packets may have been never retransmitted.
+ */
+ if (flag & FLAG_RETRANS_DATA_ACKED)
+ flag &= ~FLAG_ORIG_SACK_ACKED;
} else {
int delta;