From 78d97e78f02d345671b6c5300199f3267724b589 Mon Sep 17 00:00:00 2001 From: minoura Date: Sun, 26 May 2002 03:10:02 +0000 Subject: [PATCH] Clear done_head in the HCCA *before* acknoledging the interrupt. Driver lost some completed transfers under heavy loads. --- sys/dev/usb/ohci.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sys/dev/usb/ohci.c b/sys/dev/usb/ohci.c index bad82c35f370..0a76e59605a5 100644 --- a/sys/dev/usb/ohci.c +++ b/sys/dev/usb/ohci.c @@ -1,4 +1,4 @@ -/* $NetBSD: ohci.c,v 1.123 2002/05/19 06:24:31 augustss Exp $ */ +/* $NetBSD: ohci.c,v 1.124 2002/05/26 03:10:02 minoura Exp $ */ /* $FreeBSD: src/sys/dev/usb/ohci.c,v 1.22 1999/11/17 22:33:40 n_hibma Exp $ */ /* @@ -46,7 +46,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: ohci.c,v 1.123 2002/05/19 06:24:31 augustss Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ohci.c,v 1.124 2002/05/26 03:10:02 minoura Exp $"); #include #include @@ -1115,6 +1115,7 @@ ohci_intr1(ohci_softc_t *sc) intrs = OHCI_WDH; if (done & OHCI_DONE_INTRS) intrs |= OREAD4(sc, OHCI_INTERRUPT_STATUS); + sc->sc_hcca->hcca_done_head = 0; } else intrs = OREAD4(sc, OHCI_INTERRUPT_STATUS); @@ -1145,7 +1146,6 @@ ohci_intr1(ohci_softc_t *sc) } if (eintrs & OHCI_WDH) { ohci_add_done(sc, done &~ OHCI_DONE_INTRS); - sc->sc_hcca->hcca_done_head = 0; usb_schedsoftintr(&sc->sc_bus); eintrs &= ~OHCI_WDH; }