[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <1319198974.2918.35.camel@deadeye>
Date: Fri, 21 Oct 2011 13:09:34 +0100
From: Ben Hutchings <bhutchings@...arflare.com>
To: fengcheng lu <sparking.lu@...il.com>
Cc: netdev@...r.kernel.org
Subject: Re: Questions about CHECKSUM_COMPLETE
On Thu, 2011-10-20 at 23:05 -0400, fengcheng lu wrote:
> Hello everyone
>
> I have one question about the CHECKSUM_COMPLETE. When
> CHECK_SUM_COMPLETE is set, which data does the skb->csum computed by
> hardware cover?
>
> I thought skb->csum only covers the Transport header (e.g. TCP/UDP) +
> Transport payload + pseudo header. However, after I read the vlan
> codes (vlan_skb_recv in the vlan_dev.c of linux kernel 2.6.27.19), I
> become confuse.
>
> The vlan_skb_recv calls skb_pull_rcsum which updates the skb->csum if
> CHECKSUM_COMPLETE is set. It implies the vlan header is also covered
> by the skb->csum. so I wonder if the skb->csum cover the whole data
> besides the eth header (14 bytes).
That's right, it's supposed to cover the complete packet (as seen by
Linux, so not including an Ethernet CRC). The hardware doesn't need to
parse L3/L4 headers to implement this.
If the hardware you're dealing with doesn't calculate the full checksum
but it does parse headers and verify checksums for specific protocols
then you can set ip_summed = CHECKSUM_UNNECESSARY if the checksums are
OK.
Ben.
--
Ben Hutchings, Staff Engineer, Solarflare
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists