diff options
-rw-r--r-- | sys/dev/ep/if_ep.c | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/sys/dev/ep/if_ep.c b/sys/dev/ep/if_ep.c index 1118f11..7798325 100644 --- a/sys/dev/ep/if_ep.c +++ b/sys/dev/ep/if_ep.c @@ -548,13 +548,13 @@ ep_intr(arg) sc = (struct ep_softc *)arg; - if (sc->gone) - return; /* * quick fix: Try to detect an interrupt when the card goes away. */ - if (inw(BASE + EP_STATUS) == 0xffff) + if (sc->gone || inw(BASE + EP_STATUS) == 0xffff) { + splx(x); return; + } ifp = &sc->arpcom.ac_if; @@ -567,10 +567,8 @@ rescan: /* first acknowledge all interrupt sources */ outw(BASE + EP_COMMAND, ACK_INTR | (status & S_MASK)); - if (status & (S_RX_COMPLETE | S_RX_EARLY)) { + if (status & (S_RX_COMPLETE | S_RX_EARLY)) epread(sc); - continue; - } if (status & S_TX_AVAIL) { /* we need ACK */ ifp->if_timer = 0; |