diff options
Diffstat (limited to 'sys/dev/usb/usbdi.c')
-rw-r--r-- | sys/dev/usb/usbdi.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/sys/dev/usb/usbdi.c b/sys/dev/usb/usbdi.c index 2949b23..41df727 100644 --- a/sys/dev/usb/usbdi.c +++ b/sys/dev/usb/usbdi.c @@ -845,8 +845,9 @@ usb_transfer_complete(xfer) if (!repeat) { /* XXX should we stop the queue on all errors? */ - if (xfer->status == USBD_CANCELLED || - xfer->status == USBD_TIMEOUT) + if ((xfer->status == USBD_CANCELLED + || xfer->status == USBD_TIMEOUT) + && pipe->iface != NULL) /* not control pipe */ pipe->running = 0; else usbd_start_next(pipe); @@ -934,7 +935,7 @@ usbd_do_request_flags(dev, req, data, flags, actlen) #ifdef DIAGNOSTIC #if defined(__i386__) && defined(__FreeBSD__) KASSERT(intr_nesting_level == 0, - ("ohci_abort_req in interrupt context")); + ("usbd_do_request: in interrupt context")); #endif if (dev->bus->intr_context) { printf("usbd_do_request: not in process context\n"); |