Turn off hardware assisted transmit checksums by default. In buildworld
authorMatthew Dillon <dillon@dragonflybsd.org>
Sat, 24 Jan 2004 06:40:34 +0000 (06:40 +0000)
committerMatthew Dillon <dillon@dragonflybsd.org>
Sat, 24 Jan 2004 06:40:34 +0000 (06:40 +0000)
commitb876f7acfabe933df458ee70b77fdee98e3bcfb9
treed134fddcf0e45da8c9a46332d5c52e0b85851672
parenta3a1d2d2a9fc086771e3a694606b72a947f461c4
Turn off hardware assisted transmit checksums by default.  In buildworld
loop tests this has been conclusively shown to corrupt transmit packets
about one out of every million packets.  The receive will not know the the
packet is bad because hardware assist also apples the correct checksum
to the corrupted packet.  The result are random failures or corruption
of network data in certain situations.  On DragonFly, for some reason, doing
a 'resident /usr/bin/*' seems to bring the problem out every few buildworlds
with (primarily) mkdep's cpp complaining about odd errors trying to open
non-existant header files (during a header file search), such as
EPROTONOSUPPORT.  A tcpdump on both NFS client and server showed the
client transmitting an access RPC and the server seeing a corrupted access
RPC on its end, and then responding with EPROTONOSUPPORT.  Other uncaught
errors are also almost certainly occuring.  mkdep is more likely to catch
them because it actually checks the errno of a failed open() and does a
huge number of open()'s (and as an NFS client this generates a huge amount
of packet traffic).
sys/dev/netif/xl/if_xl.c