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

Attachment: isp116x-pegasus-urbs.log.bz2
Description: application/bzip

Attachment: isp116x-pegasus-ptds.log.bz2
Description: application/bzip

Reply via email to