Hi,

 I'm getting -ENOSPC when opening /dev/ttyUSB0 with following setup:

        PL2303 --> USB 2.0 TT hub (Cypress CY7C65640) --> ehci PCI Card (NEC)
        No other devices.

dmesg says:
pl2303.c: pl2303_open - failed submitting interrupt urb, error -28

Incase it helps, my pathetic debuging attempts are attached.

Do the two 256ms interrupt endpoints of the hub have something to do with the check failing on frame 255 ?


Test with 2.6 ? .. ok, now just tested with 2.6.6: basically the same thing.

ice:~ # cat /proc/version
Linux version 2.6.6 ([EMAIL PROTECTED]) (gcc version 2.95.3 20010315 (SuSE)) #1 SMP Mon May 17 10:00:58 CEST 2004
ice:~ # cat /dev/ttyUSB0
cat: /dev/ttyUSB0: Protocol error


dmesg:
May 17 10:13:39 ice kernel: PL-2303 ttyUSB0: pl2303_open - failed submitting interrupt urb, error -28
May 17 10:13:39 ice kernel: PL-2303 ttyUSB0: PL-2303 converter now disconnected from ttyUSB0



Thanks, - sda



added some dbg's:
--------- /usr/src/linux-2.4.26/drivers/usb/host/ehci-sched.c ---------
static int check_period (
        struct ehci_hcd *ehci,
        unsigned        frame,
        unsigned        uframe,
        unsigned        period,
        unsigned        usecs
) {
        /* complete split running into next frame?
         * given FSTN support, we could sometimes check...
         */
        if (uframe >= 8){
                dbg(" check_period() ... nope: uframe=%d",uframe);
                return 0;
        }

/*
* 80% periodic == 100 usec/uframe available
* convert "usecs we need" to "max already claimed"
*/
usecs = 100 - usecs;

dbg(" check_period() ... max usecs claimed: %d periodic_size %d)",usecs,ehci->periodic_size);


        do {

                int     claimed;


// FIXME delete when intr_submit handles non-empty queues // this gives us a one intr/frame limit (vs N/uframe) // ... and also lets us avoid tracking split transactions // that might collide at a given TT/hub. if (ehci->pshadow [frame].ptr){ dbg(" check_period() ... frame %d ptr'd ??",frame); return 0; }

                claimed = periodic_usecs (ehci, frame, uframe);
                if (claimed > usecs){
                        dbg(" check_period() ... frame %d/%d --> %d 
claimed",frame,uframe,claimed);
                        return 0;
                }

// FIXME update to handle sub-frame periods
        } while ((frame += period) < ehci->periodic_size);

        // success!
        return 1;
}

static int check_intr_schedule (
        struct ehci_hcd         *ehci,
        unsigned                frame,
        unsigned                uframe,
        const struct ehci_qh    *qh,
        u32                     *c_maskp
)
{
        int             retval = -ENOSPC;

if (!check_period (ehci, frame, uframe, qh->period, qh->usecs)){
dbg("check_period #1 (,%d,%d,%d,%d ) failed.\n",frame, uframe, qh->period, qh->usecs);
goto done;
}
...
-----------


May 17 09:12:07 dfs1 kernel: ehci-sched.c: check_period() ... max usecs claimed: 92 periodic_size 256)
May 17 09:12:07 dfs1 kernel: ehci-sched.c: check_period() ... frame 255 ptr'd ??
May 17 09:12:07 dfs1 kernel: ehci-sched.c: check_period #1 (,0,0,1,8 ) failed.
May 17 09:12:07 dfs1 kernel:
May 17 09:12:07 dfs1 kernel: ehci-sched.c: check_period() ... max usecs claimed: 92 periodic_size 256)
May 17 09:12:07 dfs1 kernel: ehci-sched.c: check_period() ... frame 255 ptr'd ??
May 17 09:12:07 dfs1 kernel: ehci-sched.c: check_period #1 (,0,1,1,8 ) failed.
May 17 09:12:07 dfs1 kernel:
May 17 09:12:07 dfs1 kernel: ehci-sched.c: check_period() ... max usecs claimed: 92 periodic_size 256)
May 17 09:12:07 dfs1 kernel: ehci-sched.c: check_period() ... frame 255 ptr'd ??
May 17 09:12:07 dfs1 kernel: ehci-sched.c: check_period #1 (,0,2,1,8 ) failed.
May 17 09:12:07 dfs1 kernel:
May 17 09:12:07 dfs1 kernel: ehci-sched.c: check_period() ... max usecs claimed: 92 periodic_size 256)
May 17 09:12:07 dfs1 kernel: ehci-sched.c: check_period() ... frame 255 ptr'd ??
May 17 09:12:07 dfs1 kernel: ehci-sched.c: check_period #1 (,0,3,1,8 ) failed.
May 17 09:12:07 dfs1 kernel:
May 17 09:12:07 dfs1 kernel: ehci-sched.c: check_period() ... max usecs claimed: 92 periodic_size 256)
May 17 09:12:07 dfs1 kernel: ehci-sched.c: check_period() ... frame 255 ptr'd ??
May 17 09:12:07 dfs1 kernel: ehci-sched.c: check_period #1 (,0,4,1,8 ) failed.
May 17 09:12:07 dfs1 kernel:
May 17 09:12:07 dfs1 kernel: ehci-sched.c: check_period() ... max usecs claimed: 92 periodic_size 256)
May 17 09:12:07 dfs1 kernel: ehci-sched.c: check_period() ... frame 255 ptr'd ??
May 17 09:12:07 dfs1 kernel: ehci-sched.c: check_period #1 (,0,5,1,8 ) failed.
May 17 09:12:07 dfs1 kernel:
May 17 09:12:07 dfs1 kernel: ehci-sched.c: check_period() ... max usecs claimed: 92 periodic_size 256)
May 17 09:12:07 dfs1 kernel: ehci-sched.c: check_period() ... frame 255 ptr'd ??
May 17 09:12:07 dfs1 kernel: ehci-sched.c: check_period #1 (,0,6,1,8 ) failed.
May 17 09:12:07 dfs1 kernel:
May 17 09:12:07 dfs1 kernel: ehci-sched.c: check_period() ... max usecs claimed: 92 periodic_size 256)
May 17 09:12:07 dfs1 kernel: ehci-sched.c: check_period() ... frame 255 ptr'd ??
May 17 09:12:07 dfs1 kernel: ehci-sched.c: check_period #1 (,0,7,1,8 ) failed.
May 17 09:12:07 dfs1 kernel:
May 17 09:12:07 dfs1 kernel: ehci-sched.c: qh_schedule fails.
May 17 09:12:07 dfs1 kernel:
May 17 09:12:07 dfs1 kernel: pl2303.c: pl2303_open - failed submitting interrupt urb, error -28





dfs1:/home/sda # cat /proc/bus/usb/devices T: Bus=03 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=480 MxCh= 5 B: Alloc= 0/800 us ( 0%), #Int= 1, #Iso= 0 D: Ver= 2.00 Cls=09(hub ) Sub=00 Prot=01 MxPS= 8 #Cfgs= 1 P: Vendor=0000 ProdID=0000 Rev= 2.04 S: Manufacturer=Linux 2.4.26 ehci_hcd S: Product=PCI device 1033:00e0 S: SerialNumber=00:0a.2 C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr= 0mA I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub E: Ad=81(I) Atr=03(Int.) MxPS= 2 Ivl=256ms T: Bus=03 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 2 Spd=480 MxCh= 4 D: Ver= 2.00 Cls=09(hub ) Sub=00 Prot=02 MxPS=64 #Cfgs= 1 P: Vendor=04b4 ProdID=6560 Rev= 0.08 C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=100mA I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=01 Driver=hub E: Ad=81(I) Atr=03(Int.) MxPS= 1 Ivl=256ms I: If#= 0 Alt= 1 #EPs= 1 Cls=09(hub ) Sub=00 Prot=02 Driver=hub E: Ad=81(I) Atr=03(Int.) MxPS= 1 Ivl=256ms T: Bus=03 Lev=02 Prnt=02 Port=03 Cnt=01 Dev#= 3 Spd=12 MxCh= 0 D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 P: Vendor=067b ProdID=2303 Rev= 2.02 C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=100mA I: If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=serial E: Ad=81(I) Atr=03(Int.) MxPS= 10 Ivl=1ms E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms E: Ad=83(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms


lspci -v parts: 00:0a.0 USB Controller: NEC Corporation USB (rev 41) (prog-if 10 [OHCI]) Subsystem: Micro-star International Co Ltd: Unknown device 9516 Flags: bus master, medium devsel, latency 32, IRQ 18 Memory at ed000000 (32-bit, non-prefetchable) [size=4K] Capabilities: [40] Power Management version 2

00:0a.1 USB Controller: NEC Corporation USB (rev 41) (prog-if 10 [OHCI])
        Subsystem: Micro-star International Co Ltd: Unknown device 9516
        Flags: bus master, medium devsel, latency 32, IRQ 19
        Memory at ec800000 (32-bit, non-prefetchable) [size=4K]
        Capabilities: [40] Power Management version 2

00:0a.2 USB Controller: NEC Corporation USB Enhanced Host Controller (rev 02) (prog-if 20)
Subsystem: Micro-star International Co Ltd: Unknown device 9516
Flags: bus master, medium devsel, latency 32, IRQ 16
Memory at ec000000 (32-bit, non-prefetchable) [size=256]
Capabilities: [40] Power Management version 2




-------------------------------------------------------
This SF.Net email is sponsored by: SourceForge.net Broadband
Sign-up now for SourceForge Broadband and get the fastest
6.0/768 connection for only $19.95/mo for the first 3 months!
http://ads.osdn.com/?ad_id=2562&alloc_id=6184&op=click
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to