Eric has been kind enough to work with me over the course of several
weeks trying to find the cause of the incredible number of TCPv4
checksum errors I was seeing on a number of Linux machines. The common
aspects among all the machines were (a) the checksum errors were on
received packets, and (b) the interfaces were associated with the NE2000
driver (linux/drivers/net/ne.c).
I finally got desperate enough to try some of the commented-out defines
in that driver, and the one that seems to have gotten me past the
checksum errors was NE8390_RW_BUGFIX (or NE_RW_BUGFIX, depending on
where you look in the 2.1.X code -- I decided to go with NE8390_RW_BUGFIX
in both locations where it appears).
The comment block in that section basically says "bad breath is better
than no breath if you're having problems with your NEx000 card". The
disturbing thing from my perspective is how many NE2000 clones seem to
be afflicted with this problem. I've seen this in Realtek PCI cards
and in LCS-8634 ISA cards (in NE2000 mode) among others. "Lossy"
network connections seem to tickle the bug, although I've seen occasional
checksum errors even on comparatively pristine connections. I was ready
to replace all my NE2000 clones before discovering the NE8390_RW_BUGFIX
workaround...
I would recommend enabling that block of code by default unless there's
some compelling reason why that would be a bad idea. Analysis and
comments appreciated.
--
--------Bob Tracy AFIWC/AFCERT rct@merkin.csap.af.mil--------
"If you make any money, the government shoves you in the creek once a
year with it in your pockets, and all that don't get wet you can keep."
-- Will Rogers