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>