diff options
Diffstat (limited to 'sys')
-rw-r--r-- | sys/dev/ic/i82596.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/sys/dev/ic/i82596.c b/sys/dev/ic/i82596.c index b1ae92ea14b..35d356b48b3 100644 --- a/sys/dev/ic/i82596.c +++ b/sys/dev/ic/i82596.c @@ -1,4 +1,4 @@ -/* $OpenBSD: i82596.c,v 1.7 2001/11/06 19:53:18 miod Exp $ */ +/* $OpenBSD: i82596.c,v 1.8 2002/03/08 08:49:42 mickey Exp $ */ /* $NetBSD: i82586.c,v 1.18 1998/08/15 04:42:42 mycroft Exp $ */ /*- @@ -257,7 +257,7 @@ i82596_probe(sc) } if (sc->port) { - (sc->ie_bus_write24)(sc, sc->sc_maddr + sc->scp, 0); + (sc->ie_bus_write24)(sc, sc->scp, 0); (sc->ie_bus_write24)(sc, IE_SCP_TEST(sc->scp), -1); FLUSH(sc->sc_maddr, sc->sc_msize); (sc->port)(sc, IE_PORT_TEST); @@ -568,7 +568,8 @@ loop: * Interrupt ACK was posted asynchronously; wait for * completion here before reading SCB status again. */ - i82596_cmd_wait(sc); + if (i82596_cmd_wait(sc)) + goto out; PURGE(sc->bh + off, 2); bus_space_barrier(sc->bt, sc->bh, off, 2, BUS_SPACE_BARRIER_READ); @@ -782,7 +783,7 @@ i82596_tint(sc, scbstatus) status, IE_XS_BITS); #endif - if ((status & IE_STAT_COMPL) == 0 || (status & IE_STAT_BUSY)) { + if ((status & (IE_STAT_COMPL|IE_STAT_BUSY)) == IE_STAT_BUSY) { printf("%s: i82596_tint: command still busy;" "status=%b; tail=%d\n", sc->sc_dev.dv_xname, status, IE_XS_BITS, sc->xctail); |