summaryrefslogtreecommitdiff
path: root/sys/dev/ic
diff options
context:
space:
mode:
authorpk <pk@NetBSD.org>2000-07-04 14:58:36 +0000
committerpk <pk@NetBSD.org>2000-07-04 14:58:36 +0000
commite7adcbdb13ee53519eefdf605f70a9f458da80cf (patch)
tree323b3911d66fdaaa3c85799d922657fbe562da1f /sys/dev/ic
parent7411709050393ccf14cd7cbdd98176ab563bb260 (diff)
enet dma: claim interrupt as appropriate.
Diffstat (limited to 'sys/dev/ic')
-rw-r--r--sys/dev/ic/lsi64854.c8
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));
}
/*