On Fri, 28 Sep 2007, Ilpo Järvinen wrote: > On Fri, 28 Sep 2007, Cedric Le Goater wrote: > > > I just found that warning in my logs. It seems that it's been > > happening since rc7-mm1 at least. > > > > WARNING: at /home/legoater/linux/2.6.23-rc8-mm2/net/ipv4/tcp_input.c:2314 > > tcp_fastretrans_alert() > > > > Call Trace: > > <IRQ> [<ffffffff8040fdc3>] tcp_ack+0xcd6/0x1894 > > ...snip... > > ...Thanks for the report, I'll have look what could still break > fackets_out...
I think this one is now clear to me, tcp_fragment/collapse adjusts fackets_out (incorrectly) also for reno flow when there were some dupACKs that made sacked_out != 0. Could you please try if patch below proves all them to be of non-SACK origin... In case that's true, it's rather harmless, I'll send a fix on Monday or so (this would anyway be needed)... If you find out that them occur with SACK enabled flow, that would be more interesting and requires more digging... -- i. diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c index 2286361..e642779 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c @@ -2311,8 +2311,10 @@ tcp_fastretrans_alert(struct sock *sk, int pkts_acked, int flag) if (!tp->packets_out) tp->sacked_out = 0; - if (WARN_ON(!tp->sacked_out && tp->fackets_out)) + if (WARN_ON(!tp->sacked_out && tp->fackets_out)) { + printk(KERN_ERR "TCP %d\n", tcp_is_reno(tp)); tp->fackets_out = 0; + } /* Now state machine starts. * A. ECE, hence prohibit cwnd undoing, the reduction is required. */