|
@@ -3788,6 +3788,10 @@ static int tcp_ack(struct sock *sk, const struct sk_buff *skb, int flag)
|
|
return 1;
|
|
return 1;
|
|
|
|
|
|
no_queue:
|
|
no_queue:
|
|
|
|
+ /* If data was DSACKed, see if we can undo a cwnd reduction. */
|
|
|
|
+ if (flag & FLAG_DSACKING_ACK)
|
|
|
|
+ tcp_fastretrans_alert(sk, pkts_acked, newly_acked_sacked,
|
|
|
|
+ is_dupack, flag);
|
|
/* If this ack opens up a zero window, clear backoff. It was
|
|
/* If this ack opens up a zero window, clear backoff. It was
|
|
* being used to time the probes, and is probably far higher than
|
|
* being used to time the probes, and is probably far higher than
|
|
* it needs to be for normal retransmission.
|
|
* it needs to be for normal retransmission.
|