OK, so I added those printks and I think I know what's going on.

Apparently, ed_schedule failure triggers 'goto fail' and leaves the ed
in some non-IDLE state so that it never gets added to the list indeed.

The failing EP 0x88 is 1kB isochronous, btw, so it all looks plausible.

Code (v3.18, newer is similar):

        /* schedule the ed if needed */
        if (ed->state == ED_IDLE) {
                printk(KERN_INFO "ed %p is ED_IDLE\n", ed);
                retval = ed_schedule (ohci, ed);
                if (retval < 0) {
                        printk(KERN_INFO "ed %p ed_schedule()=%d\n", ed, 
retval);
                        usb_hcd_unlink_urb_from_ep(hcd, urb);
                        goto fail;
                }

                --- snip ---

                printk(KERN_INFO "list_add ed %p\n", ed);
                list_add(&ed->in_use_list, &ohci->eds_in_use);

Log (ffff8800dface5b0 is the bad ed):

[   30.115100] got ed ffff8800dface5b0 for ep ffff8800dfbcb1e0 (0x88) urb 
ffff8800dfbac000
[   30.116053] list_del ed ffff8800dface4d0
[   30.127030] ed ffff8800dface5b0 state=0 in_use_list.next=          (null)
[   30.133817] ed ffff8800dface5b0 is ED_IDLE
[   30.137914] ohci-pci 0000:00:12.0: ERR -28, interval 1 msecs, load 793
[   30.144439] ed ffff8800dface5b0 ed_schedule()=-28
[   30.149143] ATM dev 0: usbatm_submit_urb: urb 0xffff8800dfbac000 submission 
failed (-28)!
[   30.157318] got ed ffff8800dface5b0 for ep ffff8800dfbcb1e0 (0x88) urb 
ffff8800dfbac800
[   30.165313] ed ffff8800dface5b0 state=2 in_use_list.next=          (null)
[   30.172119] got ed ffff8800dface5b0 for ep ffff8800dfbcb1e0 (0x88) urb 
ffff8800dfbac200
[   30.180116] ed ffff8800dface5b0 state=2 in_use_list.next=          (null)
[   30.186905] got ed ffff8800dface5b0 for ep ffff8800dfbcb1e0 (0x88) urb 
ffff8800dfbac300
[   30.194900] ed ffff8800dface5b0 state=2 in_use_list.next=          (null)
[   30.201708] usb 1-3: [ueagle-atm] (re)booting started
[   30.206785] got ed ffff8800dface4d0 for ep ffff8800dfae5048 (0x00) urb 
ffff8800dfb69f00
[   30.214792] ed ffff8800dface4d0 state=0 in_use_list.next=dead000000000100
[   30.221571] ed ffff8800dface4d0 is ED_IDLE
[   30.225666] list_add ed ffff8800dface4d0
[   30.230147] got ed ffff8800dface4d0 for ep ffff8800dfae5048 (0x00) urb 
ffff8800dfb96600
[   30.231115] list_del ed ffff8800dface4d0
[   30.242073] ed ffff8800dface4d0 state=0 in_use_list.next=dead000000000100
[   30.248853] ed ffff8800dface4d0 is ED_IDLE
[   30.252945] list_add ed ffff8800dface4d0
[   30.279862] got ed ffff8800dface5b0 for ep ffff8800dfbcb1e0 (0x88) urb 
ffff8800dfbac000
[   30.287870] ed ffff8800dface5b0 state=2 in_use_list.next=          (null)

--- snip ---

[   36.405670] usb 1-3: USB disconnect, device number 4
[   36.410663] ohci-pci 0000:00:12.0: unlink iso ed ffff8800dface5b0 branch 0 
[793us.], interval 1
[   36.419543] ATM dev 0: usbatm_complete: urb 0xffff8800dfbac000 failed (-2)!
[   36.426515] ohci-pci 0000:00:12.0: link iso ed ffff8800dface5b0 branch 0 
[793us.], interval 1
[   36.435056] ohci-pci 0000:00:12.0: unlink iso ed ffff8800dface5b0 branch 0 
[793us.], interval 1
[   36.444550] ATM dev 0: usbatm_complete: urb 0xffff8800dfbac800 failed (-2)!
[   36.451515] ohci-pci 0000:00:12.0: link iso ed ffff8800dface5b0 branch 0 
[793us.], interval 1
[   36.460057] ohci-pci 0000:00:12.0: unlink iso ed ffff8800dface5b0 branch 0 
[793us.], interval 1
[   36.469571] ATM dev 0: usbatm_complete: urb 0xffff8800dfbac200 failed (-2)!
[   36.476540] ohci-pci 0000:00:12.0: link iso ed ffff8800dface5b0 branch 0 
[793us.], interval 1
[   36.485083] ohci-pci 0000:00:12.0: unlink iso ed ffff8800dface5b0 branch 0 
[793us.], interval 1
[   36.494602] ATM dev 0: usbatm_complete: urb 0xffff8800dfbac300 failed (-2)!
[   36.501572] list_del ed ffff8800dface5b0
[   36.505492] fuck fuck fuck null null null
[   36.508266] usb 1-3: [UEAGLE-ATM] usb_control_msg error -19
[   36.513872] usb 1-3: [ueagle-atm] ADSL device removed
[   36.518978] freeing ed ffff8800dface4d0
[   36.522813] freeing ed ffff8800dface620
[   36.526653] freeing ed ffff8800dface540
[   36.530486] freeing ed ffff8800dface5b0
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to