Subject: Re: WARNING: at net/ipv4/tcp_input.c:2054 tcp_mark_head_lost()

From: Bill Fink <[email-masked]>
Date: Thu, 28 Feb 2008 23:35:14 -0500

On Thu, 28 Feb 2008, Andrew Morton wrote:

> On Thu, 28 Feb 2008 10:22:27 +0200 (EET) "Ilpo Järvinen" <[email-masked]> wrote:
> 
> > [PATCH] TCP debug S+L (for 2.6.25-rcs, incompatible with 2.6.24.y)
> > 
> > ---
> >  include/net/tcp.h     |    9 +++-
> >  net/ipv4/tcp_input.c  |   18 +++++++-
> >  net/ipv4/tcp_ipv4.c   |  127 +++++++++++++++++++++++++++++++++++++++++++++++++
> >  net/ipv4/tcp_output.c |   23 +++++++--
> 
> I'll put this in -mm, see if we can flush anything out.  Please let me know
> if/when it's obsolete, updated, etc.
> 
> What is "S+L"?

I'll let Ilpo give the definitive answer.  But to test if I'm starting
to grasp this, I'll give my understanding.  I believe 'S' means that a
transmitted TCP skb has been acknowledged by a SACK, while 'L' means
that a transmitted SKB is believed lost.  Since the 'S' state implies
that the packet has actually been successfully received, it should not be
possible for it to be considered lost ('L' state).  Thus an "S+L" state
for a TCP skb is an internally inconsistent state and an indication of
a TCP bug.

Anyone feel free to correct me if I'm way off base in my understanding.

						-Bill