summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorn_hibma <n_hibma@FreeBSD.org>2000-03-15 22:09:53 +0000
committern_hibma <n_hibma@FreeBSD.org>2000-03-15 22:09:53 +0000
commit011df3599c57ec4221a9950da4eea68b8b89d406 (patch)
tree6b414ff4bef3a8aea5007a66bf1da0572f6a6fc8 /sys
parent3cd34ddf191d921376c0dcf8cbdf9580467dae0b (diff)
downloadFreeBSD-src-011df3599c57ec4221a9950da4eea68b8b89d406.zip
FreeBSD-src-011df3599c57ec4221a9950da4eea68b8b89d406.tar.gz
Never stop the control pipe
Diffstat (limited to 'sys')
-rw-r--r--sys/dev/usb/usbdi.c7
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");
OpenPOWER on IntegriCloud