View Full Version : usbnet transfers hang between FC4/2.6.14+ & Zaurus

19th February 2006, 06:41 PM

Since kernel 2.6.14 I'm having a problem with my Zaurus C860 and FC4: data transfers (over usbnet) above a certain size hang forever.

I've determined that any file with a size >= 1458 bytes will hang. Any file with a size smaller than this will transfer just fine.

This occurs regardless of the protocol: scp, ftp, and samba all fail. Additionally, browsing large directories with samba will fail (I assume this is related to the number of entries in the directory and, therefore, the size of the directory contents transfer).

The last kernel release that works is 2.6.13-1.1532. All subsequent ones fail (2.6.14-1.*, 2.6.15-1.1831).

I've google'ed some kernel activity and found some interesting stuff but nothing conclusive. I noticed that the kernel guys are still mucking around with usbnet: they've been engaged in a massive refactoring of that module since at least 2.6.11 (which I earlier discovered completely broke connectivity with the C860). I noticed one comment regarding the implementation of some sort of "hard mtu" feature which sounded somewhat suspicious to me, but I haven't researched it any further so it may be a red herring.

Does anyone have any idea how to fix this?



20th February 2006, 11:19 PM
Answering my own question...

The fix apparently is to change the MTU for the connection to 576.

I saw a solution posted to a Zaurus forum that says to change the MTU on the Z using the command: "ifconfig usbd0 mtu 576". This does work but you need to tweak the hotplug scripts to make it permanent.

I've found that it also works to add "MTU=576" to /etc/sysconfig/network-scripts/ifcfg-usb0 (or whatever script configures your Zaurus connection).

There is still no explanation as to why this fix is required. I suspect that it's related to the "hard mtu" feature that was recently added to the usbnet sub-system. I'm not aware of any reason why a reduced MTU to the Zaurus should be needed; the default (1500, I believe) has worked for ages. So I suspect that this was an unintended side-effect of the patch and that the author wasn't aware of it.

I've scanned the usbnet patches and the source code a bit but I don't know enough about the kernel usb and network sub-systems to glean any useful information out of my efforts (and, unfortunately, I don't have time to learn about it right now). Maybe someone else can shed some light.... ?