Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/ath/if_ath_tx_edma.c
Context not available. | |||||
static void | static void | ||||
ath_edma_tx_drain(struct ath_softc *sc, ATH_RESET_TYPE reset_type) | ath_edma_tx_drain(struct ath_softc *sc, ATH_RESET_TYPE reset_type) | ||||
{ | { | ||||
struct ifnet *ifp = sc->sc_ifp; | |||||
int i; | int i; | ||||
DPRINTF(sc, ATH_DEBUG_RESET, "%s: called\n", __func__); | DPRINTF(sc, ATH_DEBUG_RESET, "%s: called\n", __func__); | ||||
Context not available. | |||||
/* XXX dump out the frames */ | /* XXX dump out the frames */ | ||||
IF_LOCK(&ifp->if_snd); | |||||
ifp->if_drv_flags &= ~IFF_DRV_OACTIVE; | |||||
IF_UNLOCK(&ifp->if_snd); | |||||
sc->sc_wd_timer = 0; | sc->sc_wd_timer = 0; | ||||
} | } | ||||
Context not available. | |||||
sc->sc_wd_timer = 0; | sc->sc_wd_timer = 0; | ||||
if (idx > 0) { | |||||
IF_LOCK(&sc->sc_ifp->if_snd); | |||||
sc->sc_ifp->if_drv_flags &= ~IFF_DRV_OACTIVE; | |||||
IF_UNLOCK(&sc->sc_ifp->if_snd); | |||||
} | |||||
/* Kick software scheduler */ | /* Kick software scheduler */ | ||||
/* | /* | ||||
* XXX It's inefficient to do this if the FIFO queue is full, | * XXX It's inefficient to do this if the FIFO queue is full, | ||||
Context not available. |