aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/sis
diff options
context:
space:
mode:
authorPyun YongHyeon <yongari@FreeBSD.org>2010-10-20 00:19:25 +0000
committerPyun YongHyeon <yongari@FreeBSD.org>2010-10-20 00:19:25 +0000
commit69b5727f163ea2639f4e207e515c0f406179eec7 (patch)
tree849d1dfc4ae5bac9646f9452257b28e5b72b5cdf /sys/dev/sis
parentd598b626c04a8b0f83ec16d19f33a759918ff870 (diff)
Notes
Diffstat (limited to 'sys/dev/sis')
-rw-r--r--sys/dev/sis/if_sis.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/sys/dev/sis/if_sis.c b/sys/dev/sis/if_sis.c
index 93246d33c44c7..0957419a56f5d 100644
--- a/sys/dev/sis/if_sis.c
+++ b/sys/dev/sis/if_sis.c
@@ -1795,12 +1795,15 @@ sis_intr(void *arg)
if ((status & SIS_INTRS) == 0) {
/* Not ours. */
SIS_UNLOCK(sc);
+ return;
}
/* Disable interrupts. */
CSR_WRITE_4(sc, SIS_IER, 0);
for (;(status & SIS_INTRS) != 0;) {
+ if ((ifp->if_drv_flags & IFF_DRV_RUNNING) == 0)
+ break;
if (status &
(SIS_ISR_TX_DESC_OK | SIS_ISR_TX_ERR |
SIS_ISR_TX_OK | SIS_ISR_TX_IDLE) )
@@ -1825,11 +1828,13 @@ sis_intr(void *arg)
status = CSR_READ_4(sc, SIS_ISR);
}
- /* Re-enable interrupts. */
- CSR_WRITE_4(sc, SIS_IER, 1);
+ if (ifp->if_drv_flags & IFF_DRV_RUNNING) {
+ /* Re-enable interrupts. */
+ CSR_WRITE_4(sc, SIS_IER, 1);
- if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd))
- sis_startl(ifp);
+ if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd))
+ sis_startl(ifp);
+ }
SIS_UNLOCK(sc);
}