|
@@ -2687,7 +2687,6 @@ static void tcp_enter_recovery(struct sock *sk, bool ece_ack)
|
|
|
*/
|
|
|
static void tcp_process_loss(struct sock *sk, int flag, bool is_dupack)
|
|
|
{
|
|
|
- struct inet_connection_sock *icsk = inet_csk(sk);
|
|
|
struct tcp_sock *tp = tcp_sk(sk);
|
|
|
bool recovered = !before(tp->snd_una, tp->high_seq);
|
|
|
|
|
@@ -2713,12 +2712,9 @@ static void tcp_process_loss(struct sock *sk, int flag, bool is_dupack)
|
|
|
|
|
|
if (recovered) {
|
|
|
/* F-RTO RFC5682 sec 3.1 step 2.a and 1st part of step 3.a */
|
|
|
- icsk->icsk_retransmits = 0;
|
|
|
tcp_try_undo_recovery(sk);
|
|
|
return;
|
|
|
}
|
|
|
- if (flag & FLAG_DATA_ACKED)
|
|
|
- icsk->icsk_retransmits = 0;
|
|
|
if (tcp_is_reno(tp)) {
|
|
|
/* A Reno DUPACK means new data in F-RTO step 2.b above are
|
|
|
* delivered. Lower inflight to clock out (re)tranmissions.
|
|
@@ -3405,8 +3401,10 @@ static int tcp_ack(struct sock *sk, const struct sk_buff *skb, int flag)
|
|
|
icsk->icsk_pending == ICSK_TIME_LOSS_PROBE)
|
|
|
tcp_rearm_rto(sk);
|
|
|
|
|
|
- if (after(ack, prior_snd_una))
|
|
|
+ if (after(ack, prior_snd_una)) {
|
|
|
flag |= FLAG_SND_UNA_ADVANCED;
|
|
|
+ icsk->icsk_retransmits = 0;
|
|
|
+ }
|
|
|
|
|
|
prior_fackets = tp->fackets_out;
|
|
|
|