Am Donnerstag, 17. September 2009 01:42:36 schrieb Sarah Sharp: > @@ -794,6 +795,17 @@ int xhci_urb_dequeue(struct usb_hcd *hcd, struct urb > *urb, int status) ret = usb_hcd_check_unlink_urb(hcd, urb, status); > if (ret || !urb->hcpriv) > goto done; > + temp = xhci_readl(xhci, &xhci->op_regs->status); > + if (temp == 0xffffffff) { > + xhci_dbg(xhci, "HW died, freeing TD.\n"); > + td = (struct xhci_td *) urb->hcpriv; > + > + usb_hcd_unlink_urb_from_ep(hcd, urb); > + spin_unlock_irqrestore(&xhci->lock, flags); > + usb_hcd_giveback_urb(xhci_to_hcd(xhci), urb, 0); This should be -ESHUTDOWN, not 0. Regards Oliver ÿôèº{.nÇ+?·?®??+%?Ëÿ±éݶ¥?wÿº{.nÇ+?·¥?{±þëþ)í?æèw*jg¬±¨¶????Ý¢jÿ¾«þG«?éÿ¢¸¢·¦j:+v?¨?wèjØm¶?ÿþø¯ù®w¥þ?àþf£¢·h??â?úÿ?Ù¥