These patches reduce latency of error reporting in some cases related to 'error mid TD' and Missed Service events and sometimes fix a failure to give back such TDs altogether until they are cancelled. Also included are fixes for potential packet loss or memory corruption due to an obscure race. Whether it causes problems IRL is not known and the worst case would be hard to reproduce, but exactly for this reason if the worst case actually happens, it could be hard to debug too. 2/5 is a cleanup which makes 3/5 implementation shorter and simpler. The first three should be safe. The fourth should also be safe, but it relies on HC functionality Linux never relied on before, so I placed it towards the end in case it would need some tweaks. I tested it on all hardware I have and it worked just fine. The last one is perhaps the most controversial, though it should be OK with typical "complete -> resubmit" drivers. It's the only one here which increases latency in some severe error cases. The intent is to avoid potentially giving back URBs not yet executed by hardware. Michal Pecio (5): usb: xhci: Complete 'error mid TD' transfers when handling Missed Service usb: xhci: Clean up the TD skipping loop usb: xhci: Fix isochronous Ring Underrun/Overrun event handling usb: xhci: Expedite skipping missed isoch TDs on modern HCs usb: xhci: Skip only one TD on Ring Underrun/Overrun drivers/usb/host/xhci-ring.c | 110 +++++++++++++++++++++-------------- 1 file changed, 67 insertions(+), 43 deletions(-)