diff options
author | joe <joe@FreeBSD.org> | 2002-05-26 22:11:34 +0000 |
---|---|---|
committer | joe <joe@FreeBSD.org> | 2002-05-26 22:11:34 +0000 |
commit | 514cd97aa3ef26bf53c44a29665eb406ca902ed8 (patch) | |
tree | a57d3c6ec9d1459a1d0cef137aa799dde9f5e55e | |
parent | 7a6410c018f342a4765593d0b728aeea5defd36b (diff) | |
download | FreeBSD-src-514cd97aa3ef26bf53c44a29665eb406ca902ed8.zip FreeBSD-src-514cd97aa3ef26bf53c44a29665eb406ca902ed8.tar.gz |
MFNetBSD:
revision 1.124
date: 2002/05/26 03:10:02; author: minoura; state: Exp; lines: +3 -3
Clear done_head in the HCCA *before* acknoledging the interrupt.
Driver lost some completed transfers under heavy loads.
-rw-r--r-- | sys/dev/usb/ohci.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/dev/usb/ohci.c b/sys/dev/usb/ohci.c index de48324..dd312e5 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$ */ /* @@ -1152,6 +1152,7 @@ ohci_intr1(ohci_softc_t *sc) intrs |= OREAD4(sc, OHCI_INTERRUPT_STATUS); done &= ~OHCI_DONE_INTRS; } + sc->sc_hcca->hcca_done_head = 0; } else intrs = OREAD4(sc, OHCI_INTERRUPT_STATUS); @@ -1182,7 +1183,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; } |