On Tue, 2007-07-31 at 13:34 -0400, Andrew Gallatin wrote:
> Garrett D'Amore writes:
>  > On Tue, 2007-07-31 at 12:31 -0400, Andrew Gallatin wrote:
>  > > Garrett D'Amore writes:
>  > >  > On Tue, 2007-07-31 at 08:58 -0400, Andrew Gallatin wrote:
>  > >  > > Garrett D'Amore writes:
>  > >  > >  > I suspect that we will need to stop using TX checksum offload 
> for one or
>  > >  > >  > the other of TCP or UDP, at least for NICs that do partial 
> checksum
>  > >  > >  > offload.  (Having, of course, a nasty performance impact on the 
> other
>  > >  > >  > side.)
>  > >  > > 
>  > >  > > Can you please do this per-driver, or at allow an exemption for
>  > >  > > hardware which is not broken?  
>  > >  > 
>  > >  > Sorry, I only meant "partial checksum".  Do you know of any
>  > >  > implementations of "partial checksum" that are not broken?
>  > > 
>  > > Myri10ge, for one.. 
>  > > 
>  > > But wait, maybe I mis-understood what you mean by "partial".  Your
>  > > reference to software workarounds for tiny packets confused me.  I
>  > > think of partial as HCK_PARTIALCKSUM.  Or did you mean sometimes doing
>  > > the checksum in hardware, and sometimes in software?
>  > 
>  > No, I mean HCK_PARTIALCKSUM.
>  > 
>  > So does Myri10ge support this variation of checksum, and is somehow not
>  > broken with respect to UDP vs. TCP and zero checksums?  (Recall that
>  > when the UDP checksum results in a zero value, UDP requires that
>  > all-ones (0xffff) be transmitted instead, to differentiate it from
>  > packets with checksum disabled (checksum = 0).  For TCP (and pretty much
>  > all other protocols that use this checksum operation) checksum is always
>  > used, and a zero checksum is sent unmodifed as 0.)
> 
> Yes, exactly.
> 
>  > I can imagine that the only way for hardware to get this "right" is to
>  > examine the IP protocol field.  Since that is not part of the data that
>  > is covered by the checksum, it implies that there is some classification
>  > done in either software or hardware, to pick which interpretation for
>  > the zero result to use.
> 
> Yes.
> 
>  > It shocks me that IETF would have been so cavalier about this seemingly
>  > minor difference.
>  > 
>  > If you have hardware which can do "the right thing" depending on which
>  > protocol is used (or upon instruction from the driver), then perhaps we
>  > need a way to differentiate that behavior for your driver's benefit.
> 
> Yes, that would be nice.  Which is why I was requesting that we
> don't assume all HCK_PARTIALCKSUM hardware is broken.

Well, we might make that assumption, but then create a new flag for you
to indicate that you can do UDP.

The reason being that we can't assume that all hardware is *working*,
because it clearly isn't, and it will be faster to disable everything
for UDP and selectively add back in, then go and touch *every* Sun NIC
driver (and what other unbundled ones may or may not be broken I don't
know about...)

I think prior to S10, we only did TCP checksum offload, no UDP checksum
offload.

        -- Garrett


_______________________________________________
networking-discuss mailing list
[email protected]

Reply via email to