Greg Lopp on 8 Feb 2005 23:14:01 -0000


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

[PLUG] ICMP ok, TCP fails


Here's the problem: I'm trying to teach a USB device how to look like and behave like a CDC ethernet device (i.e. pass ethernet frames across USB, USB is my datalink layer).

I have the "look like" part working, as linux 2.6.10 and windows both recognize my descriptors. I type "ifup usb0" and can pass packets back and forth....up to a point.

I can ping in either direction, so ICMP, wrapped inside IP, wrapped inside ethernet works in both directions. But when I fire up ethereal and try wget or ftp to the device, I see linux send a SYN and the device returns it's SYN/ACK, but linux never sends back it's ACK. It sits there, times out and sends its SYN again. When I use strace, the process never returns from connect().

What could possibly be going on here? I've used ethereal and tcpdump to witness the SYN/ACK packet return...so it shouldn't be a problem with my device. Are there any other tools I can use to watch these packets work their way further up the stack? I'd rather not have to hack around in libc.so.6 Have have been inside the usbnet module, but that only covers the DL layer.


Additional details: The target is running a third party "embedded TCP/IP" stack. There are no such problems when using a conventional ethernet connection. I can provide dumps and capture files upon request.

___________________________________________________________________________
Philadelphia Linux Users Group         --        http://www.phillylinux.org
Announcements - http://lists.phillylinux.org/mailman/listinfo/plug-announce
General Discussion  --   http://lists.phillylinux.org/mailman/listinfo/plug