usb-ehci: Remove dead nakcnt code
This patch removes 2 bits of dead nakcnt code:
1) usb_ehci_execute calls ehci_qh_do_overlay which does:nakcnt = reload;and then has a block of code which is conditional on:if (reload && !nakcnt) {which ofcourse is never true now as nakcnt == reload....
usb-ehci: Fix and simplify nakcnt handling
The nakcnt code in ehci_execute_complete() marked transactions as finishedwhen a packet completed with a result of USB_RET_NAK, but USB_RET_NAKmeans that the device cannot receive / send data at that time and that...
usb-ehci: Cleanup itd error handling
All error statuses except for NAK are handled in a switch case, move thehandling of NAK into the same switch case.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
usb: add USB_RET_IOERROR
We already have USB_RET_NAK, but that means that a device does not wantto send/receive right now. But with host / network redirection we canactually have a transaction fail due to some io error, rather then iethe device just not having any data atm....
usb-ehci: split our qh queue into async and periodic queues
qhs can be part of both the async and the periodic schedule, as is shownin later patches in this series it is useful to keep track of the qhs ona per schedule basis.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>...
usb-ehci: always call ehci_queues_rip_unused for period queues
Before this patch USB 2 devices with interrupt endpoints were not workingproperly. The problem is that to avoid loops we stop processing as soonas we encounter a queue-head (qh) we've already seen since qhs can be linked...
usb-ehci: Drop cached qhs when the doorbell gets rung
The purpose of the IAAD bit / the doorbell is to make the ehci controllerforget about cached qhs, this is mainly used when cancelling transactions,the qh is unlinked from the async schedule and then the doorbell gets rung,...
usb-ehci: Rip the queues when the async or period schedule is halted
usb-ehci: Any packet completion except for NAK should set the interrupt
As clearly stated in the 2.3.2 of the EHCI spec, any time USBERRINT getsets then if the td has its IOC bit set USBINT should be set as well.
This means that for any status except for USB_RET_NAK we should set...
usb-ehci: Fix cerr tracking
cerr should only be decremented on errors which cause XactErr to be set, andwhen that happens the failing transaction should be retried until cerr reaches0 and only then should USBSTS_ERRINT be set (and inactive cleared andUSBSTS_INT set if requested)....
View revisions
Also available in: Atom