[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