|
@@ -2710,9 +2710,9 @@ static void tcp_process_loss(struct sock *sk, int flag, bool is_dupack)
|
|
|
tcp_try_undo_loss(sk, true))
|
|
|
return;
|
|
|
|
|
|
- if (after(tp->snd_nxt, tp->high_seq) &&
|
|
|
- (flag & FLAG_DATA_SACKED || is_dupack)) {
|
|
|
- tp->frto = 0; /* Loss was real: 2nd part of step 3.a */
|
|
|
+ if (after(tp->snd_nxt, tp->high_seq)) {
|
|
|
+ if (flag & FLAG_DATA_SACKED || is_dupack)
|
|
|
+ tp->frto = 0; /* Step 3.a. loss was real */
|
|
|
} else if (flag & FLAG_SND_UNA_ADVANCED && !recovered) {
|
|
|
tp->high_seq = tp->snd_nxt;
|
|
|
__tcp_push_pending_frames(sk, tcp_current_mss(sk),
|