bge on 64-bit pci: corrupt packets
Jonathan Chen
jon at freebsd.org
Thu Jul 1 19:50:02 PDT 2004
Hi all,
I've been experiencing a problem with using bge on 64-bit pci slots. After
looking at this for the whole day, I still have no idea what the problem
is. Perhaps one of you can help...
The setup:
SuperMicro P4SCT+ motherboard (E7210 Canterwood ES)
3Com 3c996-SX (Broadcom BCM5701 rev 0x105)
FreeBSD 5.2.1 GENERIC kernel
Using vlan over the bge card
The problem:
TCP packets sent over the vlan would get corrupted while sending. Other
packet types may or may not be corrupted -- I've only been able to catch
TCP so far. The content of the packet would get corrupted, while the
checksum generated remains valid for the non-corrupted packet. tcpdump on
the sending side does not show any errors, while tcpdump on the receive
side shows the problem. (See tcpdump output at bottom of message, bytes
0x210-0x214 should be the string "8901" and not "0123") The corrupted 4
bytes appear to be at the end of the buffer of a write() call.
The problem appears to go away when a 32-bit PCI slot is used. I am also
unable to reproduce the problem on a 64-bit PCI slot without the use of
vlans. Not only were there no tcp checksum errors, datastreams appears
intact after the transfer (using md5).
In the course of trying to track down the problem, I turned off hardware
TCP checksuming for the card (by removing CSUM_TCP from BGE_CSUM_FEATURES).
This appears to make matters worse. Now, not only is TCP over vlans
broken, TCP traffic over the non-vlaned bge is also corrupt in the same
manner. Note that turning off checksuming through ifconfig -txcsum did not
have the same effect. (NB: I think turning on/off bge checksuming through
ifconfig/ioctl is broken? Shouldn't it set ifp->if_hwassist?)
Since the card works fine in a 32-bit slot but breaks in a 64-bit slot, I'm
guessing the problem is somehow related to alignment. However, I have no
idea how I would go about realigning things, especially since the card uses
DMA. Help?
BTW, am I correct in assuming that transmit checksum offloading is not used
with vlans?
-Jon
192.168.1.1.49178 > 192.168.1.2.5001: . [bad tcp cksum 606!] 97779257:97780701(1444) ack 1 win 33212 <nop,nop,timestamp 23564240 23581272> (DF) (ttl 64, id 19704, len 1496)
0x0000 4500 05d8 4cf8 4000 4006 64d4 c0a8 0101 E...L. at .@.d.....
0x0010 c0a8 0102 c01a 1389 affe cfe1 060c 82ee ................
0x0020 8010 81bc 4f61 0000 0101 080a 0167 8fd0 ....Oa.......g..
0x0030 0167 d258 3233 3435 3637 3839 3031 3233 .g.X234567890123
0x0040 3435 3637 3839 3031 3233 3435 3637 3839 4567890123456789
0x0050 3031 3233 3435 3637 3839 3031 3233 3435 0123456789012345
0x0060 3637 3839 3031 3233 3435 3637 3839 3031 6789012345678901
0x0070 3233 3435 3637 3839 3031 3233 3435 3637 2345678901234567
0x0080 3839 3031 3233 3435 3637 3839 3031 3233 8901234567890123
0x0090 3435 3637 3839 3031 3233 3435 3637 3839 4567890123456789
0x00a0 3031 3233 3435 3637 3839 3031 3233 3435 0123456789012345
0x00b0 3637 3839 3031 3233 3435 3637 3839 3031 6789012345678901
0x00c0 3233 3435 3637 3839 3031 3233 3435 3637 2345678901234567
0x00d0 3839 3031 3233 3435 3637 3839 3031 3233 8901234567890123
0x00e0 3435 3637 3839 3031 3233 3435 3637 3839 4567890123456789
0x00f0 3031 3233 3435 3637 3839 3031 3233 3435 0123456789012345
0x0100 3637 3839 3031 3233 3435 3637 3839 3031 6789012345678901
0x0110 3233 3435 3637 3839 3031 3233 3435 3637 2345678901234567
0x0120 3839 3031 3233 3435 3637 3839 3031 3233 8901234567890123
0x0130 3435 3637 3839 3031 3233 3435 3637 3839 4567890123456789
0x0140 3031 3233 3435 3637 3839 3031 3233 3435 0123456789012345
0x0150 3637 3839 3031 3233 3435 3637 3839 3031 6789012345678901
0x0160 3233 3435 3637 3839 3031 3233 3435 3637 2345678901234567
0x0170 3839 3031 3233 3435 3637 3839 3031 3233 8901234567890123
0x0180 3435 3637 3839 3031 3233 3435 3637 3839 4567890123456789
0x0190 3031 3233 3435 3637 3839 3031 3233 3435 0123456789012345
0x01a0 3637 3839 3031 3233 3435 3637 3839 3031 6789012345678901
0x01b0 3233 3435 3637 3839 3031 3233 3435 3637 2345678901234567
0x01c0 3839 3031 3233 3435 3637 3839 3031 3233 8901234567890123
0x01d0 3435 3637 3839 3031 3233 3435 3637 3839 4567890123456789
0x01e0 3031 3233 3435 3637 3839 3031 3233 3435 0123456789012345
0x01f0 3637 3839 3031 3233 3435 3637 3839 3031 6789012345678901
0x0200 3233 3435 3637 3839 3031 3233 3435 3637 2345678901234567
0x0210 3031 3233 0000 0000 0000 0001 0000 1389 0123............
0x0220 0000 0000 0000 0000 ffff fc18 3435 3637 ............4567
0x0230 3839 3031 3233 3435 3637 3839 3031 3233 8901234567890123
0x0240 3435 3637 3839 3031 3233 3435 3637 3839 4567890123456789
0x0250 3031 3233 3435 3637 3839 3031 3233 3435 0123456789012345
0x0260 3637 3839 3031 3233 3435 3637 3839 3031 6789012345678901
0x0270 3233 3435 3637 3839 3031 3233 3435 3637 2345678901234567
0x0280 3839 3031 3233 3435 3637 3839 3031 3233 8901234567890123
0x0290 3435 3637 3839 3031 3233 3435 3637 3839 4567890123456789
0x02a0 3031 3233 3435 3637 3839 3031 3233 3435 0123456789012345
0x02b0 3637 3839 3031 3233 3435 3637 3839 3031 6789012345678901
0x02c0 3233 3435 3637 3839 3031 3233 3435 3637 2345678901234567
0x02d0 3839 3031 3233 3435 3637 3839 3031 3233 8901234567890123
0x02e0 3435 3637 3839 3031 3233 3435 3637 3839 4567890123456789
0x02f0 3031 3233 3435 3637 3839 3031 3233 3435 0123456789012345
0x0300 3637 3839 3031 3233 3435 3637 3839 3031 6789012345678901
0x0310 3233 3435 3637 3839 3031 3233 3435 3637 2345678901234567
0x0320 3839 3031 3233 3435 3637 3839 3031 3233 8901234567890123
0x0330 3435 3637 3839 3031 3233 3435 3637 3839 4567890123456789
0x0340 3031 3233 3435 3637 3839 3031 3233 3435 0123456789012345
0x0350 3637 3839 3031 3233 3435 3637 3839 3031 6789012345678901
0x0360 3233 3435 3637 3839 3031 3233 3435 3637 2345678901234567
0x0370 3839 3031 3233 3435 3637 3839 3031 3233 8901234567890123
0x0380 3435 3637 3839 3031 3233 3435 3637 3839 4567890123456789
0x0390 3031 3233 3435 3637 3839 3031 3233 3435 0123456789012345
0x03a0 3637 3839 3031 3233 3435 3637 3839 3031 6789012345678901
0x03b0 3233 3435 3637 3839 3031 3233 3435 3637 2345678901234567
0x03c0 3839 3031 3233 3435 3637 3839 3031 3233 8901234567890123
0x03d0 3435 3637 3839 3031 3233 3435 3637 3839 4567890123456789
0x03e0 3031 3233 3435 3637 3839 3031 3233 3435 0123456789012345
0x03f0 3637 3839 3031 3233 3435 3637 3839 3031 6789012345678901
0x0400 3233 3435 3637 3839 3031 3233 3435 3637 2345678901234567
0x0410 3839 3031 3233 3435 3637 3839 3031 3233 8901234567890123
0x0420 3435 3637 3839 3031 3233 3435 3637 3839 4567890123456789
0x0430 3031 3233 3435 3637 3839 3031 3233 3435 0123456789012345
0x0440 3637 3839 3031 3233 3435 3637 3839 3031 6789012345678901
0x0450 3233 3435 3637 3839 3031 3233 3435 3637 2345678901234567
0x0460 3839 3031 3233 3435 3637 3839 3031 3233 8901234567890123
0x0470 3435 3637 3839 3031 3233 3435 3637 3839 4567890123456789
0x0480 3031 3233 3435 3637 3839 3031 3233 3435 0123456789012345
0x0490 3637 3839 3031 3233 3435 3637 3839 3031 6789012345678901
0x04a0 3233 3435 3637 3839 3031 3233 3435 3637 2345678901234567
0x04b0 3839 3031 3233 3435 3637 3839 3031 3233 8901234567890123
0x04c0 3435 3637 3839 3031 3233 3435 3637 3839 4567890123456789
0x04d0 3031 3233 3435 3637 3839 3031 3233 3435 0123456789012345
0x04e0 3637 3839 3031 3233 3435 3637 3839 3031 6789012345678901
0x04f0 3233 3435 3637 3839 3031 3233 3435 3637 2345678901234567
0x0500 3839 3031 3233 3435 3637 3839 3031 3233 8901234567890123
0x0510 3435 3637 3839 3031 3233 3435 3637 3839 4567890123456789
0x0520 3031 3233 3435 3637 3839 3031 3233 3435 0123456789012345
0x0530 3637 3839 3031 3233 3435 3637 3839 3031 6789012345678901
0x0540 3233 3435 3637 3839 3031 3233 3435 3637 2345678901234567
0x0550 3839 3031 3233 3435 3637 3839 3031 3233 8901234567890123
0x0560 3435 3637 3839 3031 3233 3435 3637 3839 4567890123456789
0x0570 3031 3233 3435 3637 3839 3031 3233 3435 0123456789012345
0x0580 3637 3839 3031 3233 3435 3637 3839 3031 6789012345678901
0x0590 3233 3435 3637 3839 3031 3233 3435 3637 2345678901234567
0x05a0 3839 3031 3233 3435 3637 3839 3031 3233 8901234567890123
0x05b0 3435 3637 3839 3031 3233 3435 3637 3839 4567890123456789
0x05c0 3031 3233 3435 3637 3839 3031 3233 3435 0123456789012345
0x05d0 3637 3839 3031 3233 67890123
[packet courtasy of iperf]
-Jon
More information about the freebsd-hackers
mailing list