What's the deal with hardware checksum and net.inet.udp.checksum?

gnn at FreeBSD.org gnn at FreeBSD.org
Thu Jul 10 19:54:00 UTC 2008

At Thu, 10 Jul 2008 11:43:23 +0100 (BST),
rwatson wrote:
> On Wed, 9 Jul 2008, gnn at freebsd.org wrote:
> > I would assume that if a card, say the em, has hardware TX checksum that the 
> > UDP checksum could be calculated by the hardware, but this seems not to be 
> > the case.  The manual pages are unhelpful in this regard.
> On the whole, they should be generated in hardware as long as it's
> not administratively disabled with ifconfig, and as long as there
> aren't know bugs in the hardware for the rev you're using.  Just for
> example, hardware checksumming is disabled in software for quite a
> few early 1gbps cards due to bugs in the hardware causing rather
> nasty side effects.  What specific problem are you seeing?  We do do
> a software checksum of the pseudo-header, but the UDP data should be
> checksummed by hardware.
> (The usual test for hardware checksum being enabled on transmit is
> to tcpdump the interface and see tcpdump reporting lots of bad
> checksums, as the BPF capture happens before hardware checksumming
> is run -- in principle on the receive side that shouldn't happen!)

If the sysctl it turned off on the transmitter then the receiving
machine sees UDP checksums of 0.


More information about the freebsd-net mailing list