ICMP: failed checksum during ping

Sean Farley (sean@seen.far.org)
Wed, 29 Jan 1997 22:23:25 -0500 (EST)


I have been having trouble between two machines concerning the network.

System 1: Linux v2.0.27
(seen) 3c590 Combo (32k buffer) with 3c59x.c (v0.30-all 12/23/96)

Here is the syslog of the 3c590Combo during boot:

Jan 23 22:13:13 seen kernel: 3Com EtherLink III: Overriding PCI latency
timer (CFLT) setting of 32, new value is 255.
Jan 23 22:13:13 seen kernel: eth0: 3Com 3c590 Vortex 10Mbps at 0xff80,
00:20:af:f0:e8:5d, IRQ 9
Jan 23 22:13:13 seen kernel: Internal config register is 1320012,
transceivers 0xe138.
Jan 23 22:13:13 seen kernel: 32K byte-wide RAM 1:1 Rx:Tx split,
autoselect/10base2 interface.
Jan 23 22:13:13 seen kernel: 3c59x.c:v0.30-all 12/23/96
becker@cesdis.gsfc.nasa.
Jan 23 22:13:13 seen kernel: eth0: Initial media type 10baseT.
Jan 23 22:13:13 seen kernel: eth0: vortex_open() InternalConfig 01020012.
Jan 23 22:13:13 seen kernel: eth0: vortex_open() irq 9 media status 8800.
Jan 23 22:13:13 seen kernel: eth0: Media selection timer tick happened,
10baseT.
Jan 23 22:13:13 seen kernel: eth0: Media 10baseT is has no link beat, 80c0.
Jan 23 22:13:13 seen kernel: eth0: Media selection failed, now trying
10base2 port.
Jan 23 22:13:13 seen kernel: eth0: Media selection timer finished, 10base2.
Jan 23 22:13:13 seen kernel: eth0: Media selection timer tick happened,
10base2.Jan 23 22:13:13 seen kernel: eth0: Media 10base2 is has no
indication, 4800.
Jan 23 22:13:13 seen kernel: eth0: Media selection timer finished, 10base2.

System 2: Linux v2.0.23 and Win95
(nich) WD8003E

Transfers of any size from system1 to system2 have no problems but not the
other direction.

If I ping system2 from system1 with 64-byte packets, everything works as
expected. If I increase it to 136-byte packets (for example), it works
mostly except once in a while I get a checksum error:

Jan 29 20:29:55 seen kernel: ICMP: failed checksum from 192.168.1.3!

# ping -s 128 nich
PING nich.far.org (192.168.1.3): 128 data bytes
136 bytes from 192.168.1.3: icmp_seq=0 ttl=32 time=1.8 ms
136 bytes from 192.168.1.3: icmp_seq=1 ttl=32 time=1.1 ms
136 bytes from 192.168.1.3: icmp_seq=2 ttl=32 time=1.1 ms
136 bytes from 192.168.1.3: icmp_seq=3 ttl=32 time=2.4 ms
wrong data byte #54 should be 0x36 but was 0x16
52 0 f0 32 8c 8 5 0 8 9 a b c d e f 10 11 12 13 14 15 16 17 18 19
1a 1b 1c 1d 1e 1f
20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 34 35
16 17 18 19 1a 1b 1c 1d 1e 1f
20 41 22 23 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f 50 51 52 53 54 55
56 57 58 59 5a 5b 5c 5d 5e 5f
60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75
76 77
...
<snip>
...
136 bytes from 192.168.1.3: icmp_seq=42 ttl=32 time=1.9 ms
wrong data byte #70 should be 0x46 but was 0x26
db 0 f0 32 20 bb d 0 8 9 a b c d e f 10 11 12 13 14 15 16 17 18 19
1a 1b 1c 1d 1e 1f
20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 34 35
36 37 38 39 3a 3b 3c 3d 3e 3f
40 41 42 43 44 45 26 27 28 29 2a 2b 2c 2d 2e 2f 50 51 32 53 54 55
56 57 58 59 5a 5b 5c 5d 5e 5f
60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75
76 77
136 bytes from 192.168.1.3: icmp_seq=43 ttl=32 time=1.2 ms
136 bytes from 192.168.1.3: icmp_seq=44 ttl=32 time=1.9 ms
wrong data byte #54 should be 0x36 but was 0x16
dd 0 f0 32 2b bb d 0 8 9 a b c d e f 10 11 12 13 14 15 16 17 18 19
1a 1b 1c 1d 1e 1f
20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 34 35
16 17
18 19 1a 1b 1c 1d 1e 1f
20 41 22 23 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f 50 51 52 53 54 55
56 57
58 59 5a 5b 5c 5d 5e 5f
60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75
76 77

--- nich.far.org ping statistics ---
45 packets transmitted, 45 packets received, 0% packet loss
round-trip min/avg/max = 1.1/1.2/2.4 ms

The unusual thing is that whatever byte is off it is always off by 0x20.

Pinging from system2 to system1 shows no checksum error, but it does pause
briefly at various times as if it was pondering something.

With the 3COM card, I ran the software that 3COM provides for diagnosing
problems, without any failures. I don't have anything to test the WD
with.

I suspect that one of the cards is broken (bad memory) or the driver for
the 3c590 is having trouble with the Combo card. The driver does not
explicitly mention support for my card.

Is there anyway to find out which card is broken if the driver checks out?
I am inexperienced at testing network cards.

TIA,
Sean
-------
scf@tctc.com