Lines Matching defs:txq

143 ath_tx_alq_edma_push(struct ath_softc *sc, int txq, int nframes,
148 aq.txq = htobe32(txq);
171 ath_tx_edma_push_staging_list(struct ath_softc *sc, struct ath_txq *txq,
179 ATH_TXQ_LOCK_ASSERT(txq);
184 if (txq->axq_fifo_depth >= HAL_TXFIFO_DEPTH)
187 if (TAILQ_EMPTY(&txq->axq_q))
199 bf = ATH_TXQ_FIRST(txq);
202 ATH_TXQ_REMOVE(txq, bf, bf_list);
214 * frames from the txq. Now let's wrap that up
249 ath_printtxbuf(sc, bfi, txq->axq_qnum, i, 0);
265 TAILQ_CONCAT(&txq->fifo.axq_q, &sq, bf_list);
267 txq->fifo.axq_depth += sqdepth;
270 txq->axq_fifo_depth++;
273 __func__, sqdepth, txq->fifo.axq_depth, txq->axq_fifo_depth);
276 ath_hal_puttxbuf(sc->sc_ah, txq->axq_qnum, bf->bf_daddr);
279 ath_hal_txstart(sc->sc_ah, txq->axq_qnum);
282 ath_tx_alq_edma_push(sc, txq->axq_qnum, sqdepth,
283 txq->axq_fifo_depth,
284 txq->fifo.axq_depth);
294 ath_edma_tx_fifo_fill(struct ath_softc *sc, struct ath_txq *txq)
297 ATH_TXQ_LOCK_ASSERT(txq);
301 txq->axq_qnum);
350 if (txq->axq_depth >= TX_BATCH_SIZE / 2 &&
351 txq->fifo.axq_depth <= TX_BATCH_SIZE) {
352 ath_tx_edma_push_staging_list(sc, txq, TX_BATCH_SIZE);
366 else if (txq->axq_aggr_depth > 0 && txq->axq_fifo_depth < 2)
367 ath_tx_edma_push_staging_list(sc, txq, TX_BATCH_SIZE);
377 else if (txq->axq_fifo_depth == 0) {
378 ath_tx_edma_push_staging_list(sc, txq, TX_BATCH_SIZE);
390 ath_edma_dma_restart(struct ath_softc *sc, struct ath_txq *txq)
399 txq->axq_qnum);
401 ATH_TXQ_LOCK_ASSERT(txq);
407 old_fifo_depth = txq->axq_fifo_depth;
408 txq->axq_fifo_depth = 0;
418 TAILQ_FOREACH(bf, &txq->fifo.axq_q, bf_list) {
428 ath_printtxbuf(sc, bf, txq->axq_qnum, i, 0);
442 if (txq->axq_fifo_depth >= HAL_TXFIFO_DEPTH) {
446 txq->axq_qnum,
447 txq->axq_fifo_depth);
454 txq->axq_qnum,
455 txq->axq_fifo_depth,
469 ath_hal_puttxbuf(sc->sc_ah, txq->axq_qnum, bf->bf_daddr);
470 txq->axq_fifo_depth++;
484 ath_hal_txstart(sc->sc_ah, txq->axq_qnum);
488 txq->axq_qnum,
490 txq->axq_fifo_depth);
493 if (txq->axq_fifo_depth != old_fifo_depth) {
497 txq->axq_qnum,
499 txq->axq_fifo_depth);
516 ath_edma_xmit_handoff_hw(struct ath_softc *sc, struct ath_txq *txq,
520 ATH_TXQ_LOCK(txq);
527 * the queue id in the TX descriptor matches txq->axq_qnum.
532 txq->axq_aggr_depth++;
535 ATH_TXQ_INSERT_TAIL(txq, bf, bf_list);
541 ath_edma_tx_fifo_fill(sc, txq);
542 ATH_TXQ_UNLOCK(txq);
553 ath_edma_xmit_handoff_mcast(struct ath_softc *sc, struct ath_txq *txq,
561 ATH_TXQ_LOCK(txq);
565 if (ATH_TXQ_LAST(txq, axq_q_s) != NULL) {
566 struct ath_buf *bf_last = ATH_TXQ_LAST(txq, axq_q_s);
586 ATH_TXQ_INSERT_TAIL(txq, bf, bf_list);
587 ATH_TXQ_UNLOCK(txq);
608 ath_edma_xmit_handoff(struct ath_softc *sc, struct ath_txq *txq,
613 "%s: called; bf=%p, txq=%p, qnum=%d\n",
616 txq,
617 txq->axq_qnum);
619 if (txq->axq_qnum == ATH_TXQ_SWQ)
620 ath_edma_xmit_handoff_mcast(sc, txq, bf);
622 ath_edma_xmit_handoff_hw(sc, txq, bf);
769 struct ath_txq *txq;
839 txq = &sc->sc_txq[ts.ts_queue_id];
841 ATH_TXQ_LOCK(txq);
842 bf = ATH_TXQ_FIRST(&txq->fifo);
853 ATH_TXQ_UNLOCK(txq);
879 ATH_TXQ_REMOVE(&txq->fifo, bf, bf_list);
881 txq->axq_aggr_depth--;
887 txq->axq_fifo_depth--;
898 txq->axq_qnum,
899 txq->axq_fifo_depth,
900 txq->fifo.axq_depth);
903 ATH_TXQ_UNLOCK(txq);
911 ATH_TXQ_LOCK(txq);
912 ath_txq_freeholdingbuf(sc, txq);
913 ATH_TXQ_UNLOCK(txq);
978 ath_tx_process_buf_completion(sc, txq, &ts, bf);
988 * the txq task for _one_ TXQ. This should be fixed.