diff options
Diffstat (limited to 'sys/dev')
-rw-r--r-- | sys/dev/pci/if_alc.c | 19 |
1 files changed, 8 insertions, 11 deletions
diff --git a/sys/dev/pci/if_alc.c b/sys/dev/pci/if_alc.c index 433ab55dc9e..f44f643b2da 100644 --- a/sys/dev/pci/if_alc.c +++ b/sys/dev/pci/if_alc.c @@ -1,4 +1,4 @@ -/* $OpenBSD: if_alc.c,v 1.43 2019/03/22 09:04:46 kevlo Exp $ */ +/* $OpenBSD: if_alc.c,v 1.44 2019/03/22 15:33:30 kevlo Exp $ */ /*- * Copyright (c) 2009, Pyun YongHyeon <yongari@FreeBSD.org> * All rights reserved. @@ -3038,16 +3038,13 @@ alc_init(struct ifnet *ifp) CSR_WRITE_4(sc, ALC_INTR_STATUS, 0); ifp->if_flags |= IFF_RUNNING; - ifp->if_flags &= ~IFF_OACTIVE; + ifq_clr_oactive(&ifp->if_snd); sc->alc_flags &= ~ALC_FLAG_LINK; /* Switch to the current media. */ alc_mediachange(ifp); timeout_add_sec(&sc->alc_tick_ch, 1); - ifp->if_flags |= IFF_RUNNING; - ifp->if_flags &= ~IFF_OACTIVE; - return (0); } @@ -3182,12 +3179,6 @@ alc_stop_queue(struct alc_softc *sc) /* Disable RxQ. */ reg = CSR_READ_4(sc, ALC_RXQ_CFG); - if ((reg & RXQ_CFG_ENB) != 0) { - reg &= ~RXQ_CFG_ENB; - CSR_WRITE_4(sc, ALC_RXQ_CFG, reg); - } - /* Disable TxQ. */ - reg = CSR_READ_4(sc, ALC_TXQ_CFG); if ((sc->alc_flags & ALC_FLAG_AR816X_FAMILY) == 0) { if ((reg & RXQ_CFG_ENB) != 0) { reg &= ~RXQ_CFG_ENB; @@ -3199,6 +3190,12 @@ alc_stop_queue(struct alc_softc *sc) CSR_WRITE_4(sc, ALC_RXQ_CFG, reg); } } + /* Disable TxQ. */ + reg = CSR_READ_4(sc, ALC_TXQ_CFG); + if ((reg & TXQ_CFG_ENB) != 0) { + reg &= ~TXQ_CFG_ENB; + CSR_WRITE_4(sc, ALC_TXQ_CFG, reg); + } DELAY(40); for (i = ALC_TIMEOUT; i > 0; i--) { reg = CSR_READ_4(sc, ALC_IDLE_STATUS); |