Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=20de20beba6e9bd2e1c83696bfefa3b16cda9a74
Commit:     20de20beba6e9bd2e1c83696bfefa3b16cda9a74
Parent:     f7ab97f78a5c573e49474edbd260ea6898ddccda
Author:     Ilpo Järvinen <[EMAIL PROTECTED]>
AuthorDate: Fri Nov 16 16:17:05 2007 -0800
Committer:  David S. Miller <[EMAIL PROTECTED]>
CommitDate: Mon Jan 28 14:54:15 2008 -0800

    [TCP]: Correct DSACK check placing
    
    Previously one of the in-block skip branches was missing it.
    
    Also, drop it from tail-fully-processed case because the next
    iteration will do exactly the same thing, i.e., process the
    SACK block that contains the DSACK information.
    
    Signed-off-by: Ilpo Järvinen <[EMAIL PROTECTED]>
    Signed-off-by: David S. Miller <[EMAIL PROTECTED]>
---
 net/ipv4/tcp_input.c |   15 +++++----------
 1 files changed, 5 insertions(+), 10 deletions(-)

diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
index 3ad6a19..79996b1 100644
--- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c
@@ -1554,20 +1554,15 @@ tcp_sacktag_write_queue(struct sock *sk, struct sk_buff 
*ack_skb, u32 prior_snd_
                        }
 
                        /* Rest of the block already fully processed? */
-                       if (!after(end_seq, cache->end_seq)) {
-                               skb = tcp_maybe_skipping_dsack(skb, sk, 
next_dup, cache->end_seq,
-                                                              &fack_count, 
&reord, &flag);
+                       if (!after(end_seq, cache->end_seq))
                                goto advance_sp;
-                       }
+
+                       skb = tcp_maybe_skipping_dsack(skb, sk, next_dup, 
cache->end_seq,
+                                                      &fack_count, &reord, 
&flag);
 
                        /* ...tail remains todo... */
                        if (TCP_SKB_CB(tp->highest_sack)->end_seq == 
cache->end_seq) {
-                               /* ...but better entrypoint exists! Check that 
DSACKs are
-                                * properly accounted while skipping here
-                                */
-                               tcp_maybe_skipping_dsack(skb, sk, next_dup, 
cache->end_seq,
-                                                        &fack_count, &reord, 
&flag);
-
+                               /* ...but better entrypoint exists! */
                                skb = tcp_write_queue_next(sk, 
tp->highest_sack);
                                fack_count = tp->fackets_out;
                                cache++;
-
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