Hi Olav, I've been trying to get a USB->Ethernet dongle working on my platofrm with an isp1160. The dongle is a Belkin one[0] that uses the PEGASUS II driver. The dongle works fine on my workstation with 2.6.10 so I'm assuming that part of the driver is OK. (I've backported some pegasus changes from BK head, just in case, but I don't think they matter in this case.)
The device is detected and the driver is loaded, but once I try and ifup the device, which tries to do dhcp, I get lots of "Allowed data underrun" and eventually a failure. I've attached a trace made with DEBUG and URB_TRACE, it's quite big but compresses really well. The interesting parts, I think, are many messages similar to this one: 116x: Enqueue: FA 2 ep1in bulk: len 1544 short_not_ok [SNIP several successful ip3in int transfers] 116x: Allowed data underrun 116x: Finish: FA 2 ep1in bulk: len 72/1544 short_not_ok stat 0 I'm a bit confused since the packet is short (72/1544) and short is not OK, but the stat is 0 (which means OK?). Towards the end there is also a message 116x: start_atl_transfers: load 858, MAX_LOAD_LIMIT 850 I tried to capture a trace with PTD_TRACE enabled, but the control messages never settled down enough that I could bring the interface up and capture the short bulk transfers. The capture is attached and consists of lots and lots of control transfers. Only one was short: 116x: Enqueue: FA 0 ep0in ctrl: len 64 short_not_ok CC=f EP=0 DIR=0 CNT=0 LEN=8 MPS=64 TGL=0 ACT=1 FA=0 SPD=0 LST=1 B5=0 f800 0840 0008 0000 --out-> 80 06 00 01 00 00 40 00 CC=0 EP=0 DIR=0 CNT=8 LEN=8 MPS=64 TGL=1 ACT=0 FA=0 SPD=0 LST=1 B5=0 0408 0840 0008 0000 ----- CC=f EP=0 DIR=2 CNT=0 LEN=64 MPS=64 TGL=1 ACT=1 FA=0 SPD=0 LST=1 B5=0 fc00 0840 0840 0000 CC=9 EP=0 DIR=2 CNT=8 LEN=64 MPS=64 TGL=0 ACT=0 FA=0 SPD=0 LST=1 B5=0 9008 0840 0840 0000 <--in-- 12 01 10 01 00 00 00 08 ----- 116x: Allowed data underrun CC=f EP=0 DIR=1 CNT=0 LEN=0 MPS=64 TGL=1 ACT=1 FA=0 SPD=0 LST=1 B5=0 fc00 0840 0400 0000 CC=0 EP=0 DIR=1 CNT=0 LEN=0 MPS=64 TGL=0 ACT=0 FA=0 SPD=0 LST=1 B5=0 0000 0840 0400 0000 ----- 116x: Finish: FA 0 ep0in ctrl: len 8/64 short_not_ok stat 0 the rest are all much short, 1, 2, 4 bytes and all are complete. I wanted to change it to only print PTDs for the ep1in transfers (hoping to catch the bulk transfers only), but when I did that[1] I still didn't get far enough to bring the interface up. Do you have any ideas where I should look? Is it just that I'm not pulling data out of the FIFO's quick enough, or is there something else you think can be done? Cheers, Ian. [0] ID 050d:0121 Belkin Components F5D5050 100Mbps Ethernet [1] if(PTD_GET_EP(ptd) != 1 && PTD_GET_DIR(ptd) != PTD_DIR_IN) return; at the start of dump_ptd_* in isp16x.h -- Ian Campbell, Senior Design Engineer Web: http://www.arcom.com Arcom, Clifton Road, Direct: +44 (0)1223 403 465 Cambridge CB1 7EA, United Kingdom Phone: +44 (0)1223 411 200
isp116x-pegasus-urbs.log.bz2
Description: application/bzip
isp116x-pegasus-ptds.log.bz2
Description: application/bzip