diff options
author | n_hibma <n_hibma@FreeBSD.org> | 2000-03-15 22:09:53 +0000 |
---|---|---|
committer | n_hibma <n_hibma@FreeBSD.org> | 2000-03-15 22:09:53 +0000 |
commit | 011df3599c57ec4221a9950da4eea68b8b89d406 (patch) | |
tree | 6b414ff4bef3a8aea5007a66bf1da0572f6a6fc8 /sys | |
parent | 3cd34ddf191d921376c0dcf8cbdf9580467dae0b (diff) | |
download | FreeBSD-src-011df3599c57ec4221a9950da4eea68b8b89d406.zip FreeBSD-src-011df3599c57ec4221a9950da4eea68b8b89d406.tar.gz |
Never stop the control pipe
Diffstat (limited to 'sys')
-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"); |