netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Baruch Even <baruch@ev-en.org>
To: David Miller <davem@davemloft.net>
Cc: netdev@vger.kernel.org, shemminger@osdl.org
Subject: Re: [PATCH] Fix sorting of SACK blocks
Date: Fri, 26 Jan 2007 08:40:09 +0200	[thread overview]
Message-ID: <20070126064009.GE22455@galon.ev-en.org> (raw)
In-Reply-To: <20070125.155532.78711708.davem@davemloft.net>

* David Miller <davem@davemloft.net> [070126 01:55]:
> From: Baruch Even <baruch@ev-en.org>
> Date: Thu, 25 Jan 2007 20:29:03 +0200
> 
> > The sorting of SACK blocks actually munges them rather than sort, causing the
> > TCP stack to ignore some SACK information and breaking the assumption of
> > ordered SACK blocks after sorting.
> > 
> > The sort takes the data from a second buffer which isn't moved causing
> > subsequent data moves to occur from the wrong location. The fix is to
> > use a temporary buffer as a normal sort does.
> > 
> > Signed-Off-By: Baruch Even <baruch@ev-en.org>
> 
> BTW, in reviewing this I note that there is now only one remaining
> use of tp->recv_sack_cache[] and that is the code earlier in this
> function which is trying to detect if all we are doing is extending
> the leading edge of a SACK block.
> 
> It would be nice to be able to clear out that usage as well, and
> remove recv_sack_cache[] and thus make tcp_sock smaller.

You actually need recv_sack_cache to detect if you can use the fast
path. Another alternative is to somehow hash the values of the sack
blocks but then you rely on probabilty that you will properly detect the
ability to use the fast path. Hashing will save some space but you can't
get rid of it completely unless you go back to the old and slow method
of SACK processing.

There were thoughts thrown a while back about using a different data
structure, I think you said you started working on something like that.
If that comes to fruition the cache might go.

FWIW, my other mail about possible bugs actually says that you might
need to add another value to check, the number of sack blocks in the
cache.

Baruch

  reply	other threads:[~2007-01-26  6:40 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-01-25 18:29 [PATCH] Fix sorting of SACK blocks Baruch Even
2007-01-25 18:36 ` Stephen Hemminger
2007-01-25 19:08   ` Baruch Even
2007-01-25 21:34 ` David Miller
2007-01-25 23:55 ` David Miller
2007-01-26  6:40   ` Baruch Even [this message]
2007-01-26  8:42     ` David Miller

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20070126064009.GE22455@galon.ev-en.org \
    --to=baruch@ev-en.org \
    --cc=davem@davemloft.net \
    --cc=netdev@vger.kernel.org \
    --cc=shemminger@osdl.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).