View | Details | Raw Unified | Return to bug 197143 | Differences between
and this patch

Collapse All | Expand All

(-)sys/dev/wpi/if_wpi.c (-14 / +15 lines)
Lines 1971-1993 Link Here
1971
	WPI_LOCK(sc);
1971
	WPI_LOCK(sc);
1972
1972
1973
	ring->queued -= 1;
1973
	ring->queued -= 1;
1974
	if (ring->queued > 0)
1974
	if (ring->queued > 0) {
1975
		callout_reset(&sc->tx_timeout, 5*hz, wpi_tx_timeout, sc);
1975
		callout_reset(&sc->tx_timeout, 5*hz, wpi_tx_timeout, sc);
1976
	else
1976
1977
		if (sc->qfullmsk != 0 &&
1978
		    ring->queued < WPI_TX_RING_LOMARK) {
1979
			sc->qfullmsk &= ~(1 << ring->qid);
1980
			IF_LOCK(&ifp->if_snd);
1981
			if (sc->qfullmsk == 0 &&
1982
			    (ifp->if_drv_flags & IFF_DRV_OACTIVE)) {
1983
				ifp->if_drv_flags &= ~IFF_DRV_OACTIVE;
1984
				IF_UNLOCK(&ifp->if_snd);
1985
				ieee80211_runtask(ic, &sc->sc_start_task);
1986
			} else
1987
				IF_UNLOCK(&ifp->if_snd);
1988
		}
1989
	} else
1977
		callout_stop(&sc->tx_timeout);
1990
		callout_stop(&sc->tx_timeout);
1978
1991
1979
	if (ring->queued < WPI_TX_RING_LOMARK) {
1980
		sc->qfullmsk &= ~(1 << ring->qid);
1981
		IF_LOCK(&ifp->if_snd);
1982
		if (sc->qfullmsk == 0 &&
1983
		    (ifp->if_drv_flags & IFF_DRV_OACTIVE)) {
1984
			ifp->if_drv_flags &= ~IFF_DRV_OACTIVE;
1985
			IF_UNLOCK(&ifp->if_snd);
1986
			ieee80211_runtask(ic, &sc->sc_start_task);
1987
		} else
1988
			IF_UNLOCK(&ifp->if_snd);
1989
	}
1990
1991
	DPRINTF(sc, WPI_DEBUG_TRACE, TRACE_STR_END, __func__);
1992
	DPRINTF(sc, WPI_DEBUG_TRACE, TRACE_STR_END, __func__);
1992
}
1993
}
1993
1994

Return to bug 197143