Only advance the SACK fast-path pointer for the first block, the fast-path assumes that only the first block advances next time so we should not move the skb for the next sack blocks.
Signed-Off-By: Baruch Even <[EMAIL PROTECTED]> --- I'm not sure about the fack_count part, this patch changes the value that is maintained in this case. Index: 2.6-rc6/net/ipv4/tcp_input.c =================================================================== --- 2.6-rc6.orig/net/ipv4/tcp_input.c 2007-01-27 14:53:27.000000000 +0200 +++ 2.6-rc6/net/ipv4/tcp_input.c 2007-01-27 15:59:22.000000000 +0200 @@ -1048,8 +1048,13 @@ int in_sack, pcount; u8 sacked; - tp->fastpath_skb_hint = skb; - tp->fastpath_cnt_hint = fack_count; + if (i == 0) { + /* Only advance the hint for the first SACK + * block, the hint is for quickly handling the + * advancing of the first SACK blocks only. */ + tp->fastpath_skb_hint = skb; + tp->fastpath_cnt_hint = fack_count; + } /* The retransmission queue is always in order, so * we can short-circuit the walk early. - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html