diff options
author | glebius <glebius@FreeBSD.org> | 2005-12-28 13:21:05 +0000 |
---|---|---|
committer | glebius <glebius@FreeBSD.org> | 2005-12-28 13:21:05 +0000 |
commit | a8f22162f695d8f0ce22f99b3ee4b1aea5b892df (patch) | |
tree | 6c941fb6bc29e339e05058ddcbd55e05440a8813 /sys/dev/dc | |
parent | f867a5733bf2a9c10ec78cccb466d398e89ce7b2 (diff) | |
download | FreeBSD-src-a8f22162f695d8f0ce22f99b3ee4b1aea5b892df.zip FreeBSD-src-a8f22162f695d8f0ce22f99b3ee4b1aea5b892df.tar.gz |
Check for IFF_DRV_RUNNING in the interrupt loop.
Reported & tested by: Martin P. Hansen <mph lima.dyndns.dk>
Diffstat (limited to 'sys/dev/dc')
-rw-r--r-- | sys/dev/dc/if_dc.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/sys/dev/dc/if_dc.c b/sys/dev/dc/if_dc.c index bf1d86d..242c928 100644 --- a/sys/dev/dc/if_dc.c +++ b/sys/dev/dc/if_dc.c @@ -3138,8 +3138,9 @@ dc_intr(void *arg) /* Disable interrupts. */ CSR_WRITE_4(sc, DC_IMR, 0x00000000); - while (((status = CSR_READ_4(sc, DC_ISR)) & DC_INTRS) - && status != 0xFFFFFFFF) { + while (((status = CSR_READ_4(sc, DC_ISR)) & DC_INTRS) && + status != 0xFFFFFFFF && + ifp->if_drv_flags & IFF_DRV_RUNNING) { CSR_WRITE_4(sc, DC_ISR, status); |