aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv4
diff options
context:
space:
mode:
Diffstat (limited to 'net/ipv4')
-rw-r--r--net/ipv4/tcp_input.c14
1 files changed, 5 insertions, 9 deletions
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
index 0f0c1c9829a1..094f8fafaf53 100644
--- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c
@@ -3003,17 +3003,13 @@ static int tcp_process_frto(struct sock *sk, int flag)
3003 } 3003 }
3004 3004
3005 if (tp->frto_counter == 1) { 3005 if (tp->frto_counter == 1) {
3006 /* Sending of the next skb must be allowed or no F-RTO */ 3006 /* tcp_may_send_now needs to see updated state */
3007 if (!tcp_send_head(sk) ||
3008 after(TCP_SKB_CB(tcp_send_head(sk))->end_seq,
3009 tp->snd_una + tp->snd_wnd)) {
3010 tcp_enter_frto_loss(sk, (tp->frto_counter == 1 ? 2 : 3),
3011 flag);
3012 return 1;
3013 }
3014
3015 tp->snd_cwnd = tcp_packets_in_flight(tp) + 2; 3007 tp->snd_cwnd = tcp_packets_in_flight(tp) + 2;
3016 tp->frto_counter = 2; 3008 tp->frto_counter = 2;
3009
3010 if (!tcp_may_send_now(sk))
3011 tcp_enter_frto_loss(sk, 2, flag);
3012
3017 return 1; 3013 return 1;
3018 } else { 3014 } else {
3019 switch (sysctl_tcp_frto_response) { 3015 switch (sysctl_tcp_frto_response) {