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