Methodize the process of adding the software TX queue to the taskqueue.

Move it (for now) to the TX taskqueue.
This commit is contained in:
Adrian Chadd 2013-02-07 02:15:25 +00:00
parent fbda3d5dae
commit 21bca442b9
4 changed files with 21 additions and 7 deletions

View File

@ -4230,9 +4230,9 @@ ath_tx_processq(struct ath_softc *sc, struct ath_txq *txq, int dosched)
ieee80211_ff_flush(ic, txq->axq_ac);
#endif
/* Kick the TXQ scheduler */
/* Kick the software TXQ scheduler */
if (dosched) {
taskqueue_enqueue(sc->sc_tx_tq, &sc->sc_txqtask);
ath_tx_swq_kick(sc);
}
ATH_KTR(sc, ATH_KTR_TXCOMP, 1,

View File

@ -120,12 +120,24 @@ extern void ath_tx_update_tim(struct ath_softc *sc,
extern void ath_start(struct ifnet *ifp);
extern void ath_start_task(void *arg, int npending);
/*
* Kick the frame TX task.
*/
static inline void
ath_tx_kick(struct ath_softc *sc)
{
/* XXX eventually try sc_tx_tq? */
taskqueue_enqueue(sc->sc_tx_tq, &sc->sc_txpkttask);
}
/*
* Kick the software TX queue task.
*/
static inline void
ath_tx_swq_kick(struct ath_softc *sc)
{
taskqueue_enqueue(sc->sc_tx_tq, &sc->sc_txqtask);
}
#endif

View File

@ -2999,9 +2999,11 @@ ath_tx_tid_resume(struct ath_softc *sc, struct ath_tid *tid)
}
ath_tx_tid_sched(sc, tid);
/* Punt some frames to the hardware if needed */
//ath_txq_sched(sc, sc->sc_ac2q[tid->ac]);
taskqueue_enqueue(sc->sc_tx_tq, &sc->sc_txqtask);
/*
* Queue the software TX scheduler.
*/
ath_tx_swq_kick(sc);
}
/*

View File

@ -655,7 +655,7 @@ ath_edma_tx_processq(struct ath_softc *sc, int dosched)
* the txq task for _one_ TXQ. This should be fixed.
*/
if (dosched)
taskqueue_enqueue(sc->sc_tx_tq, &sc->sc_txqtask);
ath_tx_swq_kick(sc);
}
static void