The patch titled tcp: NewReno must count every skb while marking losses has been added to the -mm tree. Its filename is tcp-newreno-must-count-every-skb-while-marking-losses.patch Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/SubmitChecklist when testing your code *** See http://www.zip.com.au/~akpm/linux/patches/stuff/added-to-mm.txt to find out what to do about this The current -mm tree may be found at http://userweb.kernel.org/~akpm/mmotm/ ------------------------------------------------------ Subject: tcp: NewReno must count every skb while marking losses From: Ilpo Järvinen <ilpo.jarvinen@xxxxxxxxxxx> NewReno should add cnt per skb (as with FACK) instead of depending on SACKED_ACKED bits which won't be set with it at all. Effectively, NewReno should always exists after the first iteration anyway (or immediately if there's already head in lost_out. This was fixed earlier in net-2.6.25 but got reverted among other stuff and I didn't notice that this is still necessary (actually wasn't even considering this case while trying to figure out the reports because I lived with different kind of code than it in reality was). This should solve the WARN_ONs in TCP code that as a result of this triggered multiple times in every place we check for this invariant. Special thanks to Dave Young <hidave.darkstar@xxxxxxxxx> and Krishna Kumar2 <krkumar2@xxxxxxxxxx> for trying with my debug patches. Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@xxxxxxxxxxx> Tested-by: Dave Young <hidave.darkstar@xxxxxxxxx> Tested-by: Krishna Kumar2 <krkumar2@xxxxxxxxxx> Cc: "David S. Miller" <davem@xxxxxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- net/ipv4/tcp_input.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff -puN net/ipv4/tcp_input.c~tcp-newreno-must-count-every-skb-while-marking-losses net/ipv4/tcp_input.c --- a/net/ipv4/tcp_input.c~tcp-newreno-must-count-every-skb-while-marking-losses +++ a/net/ipv4/tcp_input.c @@ -2153,7 +2153,7 @@ static void tcp_mark_head_lost(struct so tp->lost_skb_hint = skb; tp->lost_cnt_hint = cnt; - if (tcp_is_fack(tp) || + if (tcp_is_fack(tp) || tcp_is_reno(tp) || (TCP_SKB_CB(skb)->sacked & TCPCB_SACKED_ACKED)) cnt += tcp_skb_pcount(skb); _ Patches currently in -mm which might be from ilpo.jarvinen@xxxxxxxxxxx are git-net.patch tcp-newreno-must-count-every-skb-while-marking-losses.patch git-cryptodev.patch - To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html