aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv4/tcp_input.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/ipv4/tcp_input.c')
-rw-r--r--net/ipv4/tcp_input.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
index cb715eadf8f5..d894bbcc1d24 100644
--- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c
@@ -2587,14 +2587,15 @@ static void tcp_conservative_spur_to_response(struct tcp_sock *tp)
2587 */ 2587 */
2588static void tcp_ratehalving_spur_to_response(struct sock *sk) 2588static void tcp_ratehalving_spur_to_response(struct sock *sk)
2589{ 2589{
2590 struct tcp_sock *tp = tcp_sk(sk);
2591 tcp_enter_cwr(sk, 0); 2590 tcp_enter_cwr(sk, 0);
2592 tp->high_seq = tp->frto_highmark; /* Smoother w/o this? - ij */
2593} 2591}
2594 2592
2595static void tcp_undo_spur_to_response(struct sock *sk) 2593static void tcp_undo_spur_to_response(struct sock *sk, int flag)
2596{ 2594{
2597 tcp_undo_cwr(sk, 1); 2595 if (flag&FLAG_ECE)
2596 tcp_ratehalving_spur_to_response(sk);
2597 else
2598 tcp_undo_cwr(sk, 1);
2598} 2599}
2599 2600
2600/* F-RTO spurious RTO detection algorithm (RFC4138) 2601/* F-RTO spurious RTO detection algorithm (RFC4138)
@@ -2681,7 +2682,7 @@ static int tcp_process_frto(struct sock *sk, u32 prior_snd_una, int flag)
2681 } else /* frto_counter == 2 */ { 2682 } else /* frto_counter == 2 */ {
2682 switch (sysctl_tcp_frto_response) { 2683 switch (sysctl_tcp_frto_response) {
2683 case 2: 2684 case 2:
2684 tcp_undo_spur_to_response(sk); 2685 tcp_undo_spur_to_response(sk, flag);
2685 break; 2686 break;
2686 case 1: 2687 case 1:
2687 tcp_conservative_spur_to_response(tp); 2688 tcp_conservative_spur_to_response(tp);