aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/bfe/if_bfe.c
diff options
context:
space:
mode:
authorPyun YongHyeon <yongari@FreeBSD.org>2008-08-22 04:52:21 +0000
committerPyun YongHyeon <yongari@FreeBSD.org>2008-08-22 04:52:21 +0000
commit2be30c0d913b052dedef1b5ab42e5c3e28e48545 (patch)
tree7478079016789ca7ac18b8761ad10f2761546762 /sys/dev/bfe/if_bfe.c
parent5d5624c0804b134f772a61bc8dd432b82d8d67a2 (diff)
Notes
Diffstat (limited to 'sys/dev/bfe/if_bfe.c')
-rw-r--r--sys/dev/bfe/if_bfe.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/sys/dev/bfe/if_bfe.c b/sys/dev/bfe/if_bfe.c
index 3b54ea865cc1..26d92bc346ea 100644
--- a/sys/dev/bfe/if_bfe.c
+++ b/sys/dev/bfe/if_bfe.c
@@ -1373,26 +1373,25 @@ bfe_intr(void *xsc)
{
struct bfe_softc *sc = xsc;
struct ifnet *ifp;
- u_int32_t istat, imask, flag;
+ u_int32_t istat, flag;
ifp = sc->bfe_ifp;
BFE_LOCK(sc);
istat = CSR_READ_4(sc, BFE_ISTAT);
- imask = CSR_READ_4(sc, BFE_IMASK);
/*
* Defer unsolicited interrupts - This is necessary because setting the
* chips interrupt mask register to 0 doesn't actually stop the
* interrupts
*/
- istat &= imask;
+ istat &= BFE_IMASK_DEF;
CSR_WRITE_4(sc, BFE_ISTAT, istat);
CSR_READ_4(sc, BFE_ISTAT);
/* not expecting this interrupt, disregard it */
- if (istat == 0) {
+ if (istat == 0 || (ifp->if_drv_flags & IFF_DRV_RUNNING) == 0) {
BFE_UNLOCK(sc);
return;
}
@@ -1435,8 +1434,7 @@ bfe_intr(void *xsc)
bfe_txeof(sc);
/* We have packets pending, fire them out */
- if (ifp->if_drv_flags & IFF_DRV_RUNNING &&
- !IFQ_DRV_IS_EMPTY(&ifp->if_snd))
+ if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd))
bfe_start_locked(ifp);
BFE_UNLOCK(sc);