diff options
| author | pk <pk@NetBSD.org> | 2000-07-04 14:58:36 +0000 |
|---|---|---|
| committer | pk <pk@NetBSD.org> | 2000-07-04 14:58:36 +0000 |
| commit | e7adcbdb13ee53519eefdf605f70a9f458da80cf (patch) | |
| tree | 323b3911d66fdaaa3c85799d922657fbe562da1f /sys/dev/ic | |
| parent | 7411709050393ccf14cd7cbdd98176ab563bb260 (diff) | |
enet dma: claim interrupt as appropriate.
Diffstat (limited to 'sys/dev/ic')
| -rw-r--r-- | sys/dev/ic/lsi64854.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/sys/dev/ic/lsi64854.c b/sys/dev/ic/lsi64854.c index b58ab785366..c216c12962b 100644 --- a/sys/dev/ic/lsi64854.c +++ b/sys/dev/ic/lsi64854.c @@ -1,4 +1,4 @@ -/* $NetBSD: lsi64854.c,v 1.10 2000/06/12 05:25:48 mrg Exp $ */ +/* $NetBSD: lsi64854.c,v 1.11 2000/07/04 14:58:36 pk Exp $ */ /*- * Copyright (c) 1998 The NetBSD Foundation, Inc. @@ -455,9 +455,13 @@ lsi64854_enet_intr(arg) char bits[64]; u_int32_t csr; static int dodrain = 0; + int rv; csr = L64854_GCSR(sc); + /* If the DMA logic shows an interrupt, claim it */ + rv = ((csr & E_INT_PEND) != 0) ? 1 : 0; + if (csr & (E_ERR_PEND|E_SLAVE_ERR)) { printf("%s: error: csr=%s\n", sc->sc_dev.dv_xname, bitmask_snprintf(csr, EDMACSR_BITS, bits,sizeof(bits))); @@ -478,7 +482,7 @@ lsi64854_enet_intr(arg) delay(1); } - return (*sc->sc_intrchain)(sc->sc_intrchainarg); + return (rv | (*sc->sc_intrchain)(sc->sc_intrchainarg)); } /* |
