Messages in this thread | | | Subject | Re: [PATCH] lro: IP fragment checking | From | Ben Hutchings <> | Date | Tue, 02 Dec 2008 00:18:49 +0000 |
| |
On Mon, 2008-12-01 at 19:02 -0500, Andrew Gallatin wrote: > Ben Hutchings wrote: > > On Mon, 2008-12-01 at 16:53 -0500, Andrew Gallatin wrote: > >> David Miller wrote: > >>> From: Andrew Gallatin <gallatin@myri.com> > >>> Date: Mon, 01 Dec 2008 12:50:15 -0500 > >>> > >>>> As to whether or not to do it in the drivers/hardware or in the > >>>> LRO code, I favor doing it in the LRO code just so that it is not > >>>> missed in some driver. > >>> Then there is no point in the hardware doing the check, if > >>> we're going to check it anyways. > >>> > >>> That's part of my point about why this check doesn't belong > >>> here. > >> What hardware does an explicit check for fragmentation? > > > > Any that implements TCP/UDP checksumming properly. > > How many do?
Good question. ;-)
> >> In most cases, aren't we just relying on the hardware checksum > >> to be wrong on fragmented packets? That works 99.999% of the time, > >> but the TCP checksum is pretty weak, and it is possible to > >> have a fragmented packet where the first fragment has the same > >> checksum as the entire packet. > > [...] > > > > If your hardware/firmware wrongly claims to be able to verify the > > TCP/UDP checksum for an IP fragment, it seems to me you should deal with > > that in your driver or fix the firmware. > > We do partial checksums.
So you should check for IP fragmentation in your get_frag_header() along with all the other checks you've got to do.
Ben.
-- Ben Hutchings, Senior Software Engineer, Solarflare Communications Not speaking for my employer; that's the marketing department's job. They asked us to note that Solarflare product names are trademarked.
| |