summaryrefslogtreecommitdiff
path: root/sys/dev/usb
diff options
context:
space:
mode:
authorDavid Gwynne <dlg@cvs.openbsd.org>2004-08-11 04:17:23 +0000
committerDavid Gwynne <dlg@cvs.openbsd.org>2004-08-11 04:17:23 +0000
commitf6f7b7dab05e4a3f14046ac44b19674fbd0ea20a (patch)
treeff0bd0d420d0f5ce61f4e20dfb7f1114d8d15ae5 /sys/dev/usb
parentdc1a42c30e36f84bee21d44551650b91f6511f3d (diff)
Fixes a merge error as well as being from netbsd-bugs, pr 26546:
The cancellation of the timeout in ohci_softintr should predicate on the transfer being the last of the batch
Diffstat (limited to 'sys/dev/usb')
-rw-r--r--sys/dev/usb/ohci.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/dev/usb/ohci.c b/sys/dev/usb/ohci.c
index a6a81b0aacb..11b77de62d6 100644
--- a/sys/dev/usb/ohci.c
+++ b/sys/dev/usb/ohci.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ohci.c,v 1.47 2004/08/11 04:15:10 dlg Exp $ */
+/* $OpenBSD: ohci.c,v 1.48 2004/08/11 04:17:22 dlg Exp $ */
/* $NetBSD: ohci.c,v 1.139 2003/02/22 05:24:16 tsutsui Exp $ */
/* $FreeBSD: src/sys/dev/usb/ohci.c,v 1.22 1999/11/17 22:33:40 n_hibma Exp $ */
@@ -1342,6 +1342,9 @@ ohci_softintr(void *v)
continue;
}
+ if (std->flags & OHCI_CALL_DONE)
+ usb_uncallout(xfer->timeout_handle, ohci_timeout, xfer);
+
len = std->len;
if (std->td.td_cbp != 0)
len -= le32toh(std->td.td_be) -
@@ -1351,7 +1354,6 @@ ohci_softintr(void *v)
if (std->flags & OHCI_ADD_LEN)
xfer->actlen += len;
- usb_uncallout(xfer->timeout_handle, ohci_timeout, xfer);
cc = OHCI_TD_GET_CC(le32toh(std->td.td_flags));
if (cc == OHCI_CC_NO_ERROR) {
if (std->flags & OHCI_CALL_DONE) {