Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=580e572a4a1bfea2f42af63ba4785ac7dfbcb45d
Commit:     580e572a4a1bfea2f42af63ba4785ac7dfbcb45d
Parent:     463236557db4b5d4de9eb3fafa2e7d7905ac65ab
Author:     Ilpo Järvinen <[EMAIL PROTECTED]>
AuthorDate: Sat May 19 13:56:57 2007 -0700
Committer:  David S. Miller <[EMAIL PROTECTED]>
CommitDate: Sat May 19 13:56:57 2007 -0700

    [TCP] FRTO: Prevent state inconsistency in corner cases
    
    State could become inconsistent in two cases:
    
    1) Userspace disabled FRTO by tuning sysctl when one of the TCP
       flows was in the middle of FRTO algorithm (and then RTO is
       again triggered)
    
    2) SACK reneging occurs during FRTO algorithm
    
    A simple solution is just to abort the previous FRTO when such
    obscure condition occurs...
    
    Signed-off-by: Ilpo Järvinen <[EMAIL PROTECTED]>
    Signed-off-by: David S. Miller <[EMAIL PROTECTED]>
---
 net/ipv4/tcp_input.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
index 7ecdc89..38cb25b 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)
        tcp_set_ca_state(sk, TCP_CA_Loss);
        tp->high_seq = tp->snd_nxt;
        TCP_ECN_queue_cwr(tp);
+       /* Abort FRTO algorithm if one is in progress */
+       tp->frto_counter = 0;
 
        clear_all_retrans_hints(tp);
 }
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to