diff options
Diffstat (limited to 'sys')
-rw-r--r-- | sys/dev/ic/dc.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/sys/dev/ic/dc.c b/sys/dev/ic/dc.c index 366fb99ce4c..df4dc9496e9 100644 --- a/sys/dev/ic/dc.c +++ b/sys/dev/ic/dc.c @@ -1,4 +1,4 @@ -/* $OpenBSD: dc.c,v 1.100 2008/09/03 19:29:48 brad Exp $ */ +/* $OpenBSD: dc.c,v 1.101 2008/09/11 03:21:03 brad Exp $ */ /* * Copyright (c) 1997, 1998, 1999 @@ -2417,8 +2417,12 @@ dc_tick(xsc) if (sc->dc_link == 0) mii_tick(mii); } else { - r = CSR_READ_4(sc, DC_ISR); - if ((r & DC_ISR_RX_STATE) == DC_RXSTATE_WAIT && + /* + * For NICs which never report DC_RXSTATE_WAIT, we + * have to bite the bullet... + */ + if ((DC_HAS_BROKEN_RXSTATE(sc) || (CSR_READ_4(sc, + DC_ISR) & DC_ISR_RX_STATE) == DC_RXSTATE_WAIT) && sc->dc_cdata.dc_tx_cnt == 0 && !DC_IS_ASIX(sc)) { mii_tick(mii); if (!(mii->mii_media_status & IFM_ACTIVE)) |