tcp: fix mid-wq adjustment helper
authorIlpo Järvinen <ilpo.jarvinen@helsinki.fi>
Sat, 18 Apr 2009 05:48:48 +0000 (05:48 +0000)
committerDavid S. Miller <davem@davemloft.net>
Mon, 20 Apr 2009 09:15:00 +0000 (02:15 -0700)
Just noticed while doing some new work that the recent
mid-wq adjustment logic will misbehave when FACK is not
in use (happens either due sysctl'ed off or auto-detected
reordering) because I forgot the relevant TCPCB tagbit.

Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/tcp_output.c

index 53300fa2359fd66067c2bd36569e20558db7a489..59aec609cec6c6c7d8a721366c9c74fb427937df 100644 (file)
@@ -778,7 +778,7 @@ static void tcp_adjust_pcount(struct sock *sk, struct sk_buff *skb, int decr)
 
        if (tp->lost_skb_hint &&
            before(TCP_SKB_CB(skb)->seq, TCP_SKB_CB(tp->lost_skb_hint)->seq) &&
-           (tcp_is_fack(tp) || TCP_SKB_CB(skb)->sacked))
+           (tcp_is_fack(tp) || (TCP_SKB_CB(skb)->sacked & TCPCB_SACKED_ACKED)))
                tp->lost_cnt_hint -= decr;
 
        tcp_verify_left_out(tp);