diff options
Diffstat (limited to 'net/ipv4/tcp_input.c')
-rw-r--r-- | net/ipv4/tcp_input.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c index 7641b2761a14..74683d81c3f1 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c | |||
@@ -1501,6 +1501,8 @@ void tcp_enter_loss(struct sock *sk, int how) | |||
1501 | tcp_set_ca_state(sk, TCP_CA_Loss); | 1501 | tcp_set_ca_state(sk, TCP_CA_Loss); |
1502 | tp->high_seq = tp->snd_nxt; | 1502 | tp->high_seq = tp->snd_nxt; |
1503 | TCP_ECN_queue_cwr(tp); | 1503 | TCP_ECN_queue_cwr(tp); |
1504 | /* Abort FRTO algorithm if one is in progress */ | ||
1505 | tp->frto_counter = 0; | ||
1504 | 1506 | ||
1505 | clear_all_retrans_hints(tp); | 1507 | clear_all_retrans_hints(tp); |
1506 | } | 1508 | } |
@@ -2405,8 +2407,8 @@ static int tcp_clean_rtx_queue(struct sock *sk, __s32 *seq_rtt_p) | |||
2405 | struct sk_buff *skb; | 2407 | struct sk_buff *skb; |
2406 | __u32 now = tcp_time_stamp; | 2408 | __u32 now = tcp_time_stamp; |
2407 | int acked = 0; | 2409 | int acked = 0; |
2410 | int prior_packets = tp->packets_out; | ||
2408 | __s32 seq_rtt = -1; | 2411 | __s32 seq_rtt = -1; |
2409 | u32 pkts_acked = 0; | ||
2410 | ktime_t last_ackt = ktime_set(0,0); | 2412 | ktime_t last_ackt = ktime_set(0,0); |
2411 | 2413 | ||
2412 | while ((skb = tcp_write_queue_head(sk)) && | 2414 | while ((skb = tcp_write_queue_head(sk)) && |
@@ -2435,7 +2437,6 @@ static int tcp_clean_rtx_queue(struct sock *sk, __s32 *seq_rtt_p) | |||
2435 | */ | 2437 | */ |
2436 | if (!(scb->flags & TCPCB_FLAG_SYN)) { | 2438 | if (!(scb->flags & TCPCB_FLAG_SYN)) { |
2437 | acked |= FLAG_DATA_ACKED; | 2439 | acked |= FLAG_DATA_ACKED; |
2438 | ++pkts_acked; | ||
2439 | } else { | 2440 | } else { |
2440 | acked |= FLAG_SYN_ACKED; | 2441 | acked |= FLAG_SYN_ACKED; |
2441 | tp->retrans_stamp = 0; | 2442 | tp->retrans_stamp = 0; |
@@ -2479,6 +2480,7 @@ static int tcp_clean_rtx_queue(struct sock *sk, __s32 *seq_rtt_p) | |||
2479 | } | 2480 | } |
2480 | 2481 | ||
2481 | if (acked&FLAG_ACKED) { | 2482 | if (acked&FLAG_ACKED) { |
2483 | u32 pkts_acked = prior_packets - tp->packets_out; | ||
2482 | const struct tcp_congestion_ops *ca_ops | 2484 | const struct tcp_congestion_ops *ca_ops |
2483 | = inet_csk(sk)->icsk_ca_ops; | 2485 | = inet_csk(sk)->icsk_ca_ops; |
2484 | 2486 | ||
@@ -2608,6 +2610,7 @@ static void tcp_conservative_spur_to_response(struct tcp_sock *tp) | |||
2608 | { | 2610 | { |
2609 | tp->snd_cwnd = min(tp->snd_cwnd, tp->snd_ssthresh); | 2611 | tp->snd_cwnd = min(tp->snd_cwnd, tp->snd_ssthresh); |
2610 | tp->snd_cwnd_cnt = 0; | 2612 | tp->snd_cwnd_cnt = 0; |
2613 | TCP_ECN_queue_cwr(tp); | ||
2611 | tcp_moderate_cwnd(tp); | 2614 | tcp_moderate_cwnd(tp); |
2612 | } | 2615 | } |
2613 | 2616 | ||