Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 7 Dec 2006 19:37:33 +0300
From:      Ruslan Ermilov <ru@freebsd.org>
To:        Robert Watson <rwatson@freebsd.org>
Cc:        Perforce Change Reviews <perforce@freebsd.org>, Gleb Smirnoff <glebius@freebsd.org>, Andre Oppermann <andre@freebsd.org>, Paolo Pisati <piso@freebsd.org>
Subject:   Re: PERFORCE change 111230 for review
Message-ID:  <20061207163733.GC39204@rambler-co.ru>
In-Reply-To: <20061207161434.O50906@fledge.watson.org>
References:  <200612062319.kB6NJgsq031755@repoman.freebsd.org> <20061207110225.GU32700@FreeBSD.org> <4578070A.2030609@freebsd.org> <20061207142254.GA1195@tin.it> <20061207161434.O50906@fledge.watson.org>

next in thread | previous in thread | raw e-mail | index | archive | help

--C1iGAkRnbeBonpVg
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Thu, Dec 07, 2006 at 04:16:41PM +0000, Robert Watson wrote:
> On Thu, 7 Dec 2006, Paolo Pisati wrote:
>=20
> >Then, after a discussion on irc, pull the plug on any present (and futur=
e)=20
> >hackery & half-baked solution, and declare in kernel libalias incompatib=
le=20
> >with tso.
>=20
> This seems silly -- why is it not compatible?  Perhaps I misunderstand, b=
ut=20
> I thought TSO passed down valid TCP/IP packets, they just happen to be=20
> really long, and will be post-processed by the hardware into a series of=
=20
> shorter segments with the same header properties.  Imagine the ethernet=
=20
> device as a "router" that's performing TCP fragmentation for you, rather=
=20
> than IP fragmentation.
>=20
It's a limitation of the current libalias code which grew
up on top of userland version -- it doesn't currently know
how to traverse mbufs, and instead requires a contiguous
piece of (packet) data to do its job.

: #ifdef _KERNEL
: /*
:  * m_megapullup() function is a big hack (only used in ng_nat and ipfw+na=
t).
:  *
:  * It allocates an mbuf with cluster and copies the whole
:  * chain into cluster, so that it is all contigous and the
:  * whole packet can be accessed via char pointer.
:  * This is required, because libalias doesn't have idea
:  * about mbufs.
:  *=20
:  * On success, m_megapullup returns an mbuf with cluster
:  * containing the input packet, on failure NULL.
:  * In both cases, the input packet is consumed.
:  */


Cheers,
--=20
Ruslan Ermilov
ru@FreeBSD.org
FreeBSD committer

--C1iGAkRnbeBonpVg
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (FreeBSD)

iD8DBQFFeENNqRfpzJluFF4RAgjZAJ9KK4I+XjXBUHw/mRI/AwsSk2DjKACcCTAe
1NPsrs9XfJsrFs0PmjOaPGU=
=j54o
-----END PGP SIGNATURE-----

--C1iGAkRnbeBonpVg--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20061207163733.GC39204>