On Mar 26, 2010, at 3:21 PM, George Harvey wrote: > Good call, the bad checksum count does increment. Wireshark says the IP > and TCP checksums are good so that tends to confirm the problem's in > the SGI. Hi George, Sounds like we may be messing up the receive DMA. Could you try the attached patch (against src/sys/dev/pci/if_tl.c)? I recall correctly, I eventually discovered that this nic's pci<->gio bus bridge can't DMA across page boundaries. I fixed the TX side, but for some reason neglected RX. I don't recall if I just forgot to handle the RX case and it worked well enough, or if I believed it wasn't necessary for some reason. Anyway, if that doesn't work, I'd suspect that if_tl's bus_dma usage isn't quite correct, but I think it has been used by others in SGI O2s without trouble. Let me know if you'd like me to build a kernel. I don't have the toolchain set up, but that'd be easy to do. Steve
Attachment:
if_tl.c.patch
Description: Binary data