Lines Matching refs:txq

145 ath_tx_alq_edma_push(struct ath_softc *sc, int txq, int nframes,
150 aq.txq = htobe32(txq);
173 ath_tx_edma_push_staging_list(struct ath_softc *sc, struct ath_txq *txq,
181 ATH_TXQ_LOCK_ASSERT(txq);
186 txq->axq_qnum,
187 txq->axq_fifo_depth,
188 !! (TAILQ_EMPTY(&txq->axq_q)));
193 if (txq->axq_fifo_depth >= HAL_TXFIFO_DEPTH)
196 if (TAILQ_EMPTY(&txq->axq_q))
208 bf = ATH_TXQ_FIRST(txq);
211 ATH_TXQ_REMOVE(txq, bf, bf_list);
223 * frames from the txq. Now let's wrap that up
258 ath_printtxbuf(sc, bfi, txq->axq_qnum, i, 0);
274 TAILQ_CONCAT(&txq->fifo.axq_q, &sq, bf_list);
276 txq->fifo.axq_depth += sqdepth;
279 txq->axq_fifo_depth++;
282 __func__, sqdepth, txq->fifo.axq_depth, txq->axq_fifo_depth);
285 ath_hal_puttxbuf(sc->sc_ah, txq->axq_qnum, bf->bf_daddr);
288 ath_hal_txstart(sc->sc_ah, txq->axq_qnum);
291 ath_tx_alq_edma_push(sc, txq->axq_qnum, sqdepth,
292 txq->axq_fifo_depth,
293 txq->fifo.axq_depth);
303 ath_edma_tx_fifo_fill(struct ath_softc *sc, struct ath_txq *txq)
306 ATH_TXQ_LOCK_ASSERT(txq);
311 txq->axq_qnum,
312 txq->fifo.axq_depth,
313 txq->axq_fifo_depth,
314 txq->axq_depth,
315 txq->axq_aggr_depth);
364 if (txq->axq_depth >= TX_BATCH_SIZE / 2 &&
365 txq->fifo.axq_depth <= TX_BATCH_SIZE) {
366 ath_tx_edma_push_staging_list(sc, txq, TX_BATCH_SIZE);
380 else if (txq->axq_aggr_depth > 0 && txq->axq_fifo_depth < 2)
381 ath_tx_edma_push_staging_list(sc, txq, TX_BATCH_SIZE);
391 else if (txq->axq_fifo_depth == 0) {
392 ath_tx_edma_push_staging_list(sc, txq, TX_BATCH_SIZE);
404 ath_edma_dma_restart(struct ath_softc *sc, struct ath_txq *txq)
413 txq->axq_qnum);
415 ATH_TXQ_LOCK_ASSERT(txq);
421 old_fifo_depth = txq->axq_fifo_depth;
422 txq->axq_fifo_depth = 0;
432 TAILQ_FOREACH(bf, &txq->fifo.axq_q, bf_list) {
442 ath_printtxbuf(sc, bf, txq->axq_qnum, i, 0);
456 if (txq->axq_fifo_depth >= HAL_TXFIFO_DEPTH) {
460 txq->axq_qnum,
461 txq->axq_fifo_depth);
468 txq->axq_qnum,
469 txq->axq_fifo_depth,
483 ath_hal_puttxbuf(sc->sc_ah, txq->axq_qnum, bf->bf_daddr);
484 txq->axq_fifo_depth++;
498 ath_hal_txstart(sc->sc_ah, txq->axq_qnum);
502 txq->axq_qnum,
504 txq->axq_fifo_depth);
507 if (txq->axq_fifo_depth != old_fifo_depth) {
511 txq->axq_qnum,
513 txq->axq_fifo_depth);
530 ath_edma_xmit_handoff_hw(struct ath_softc *sc, struct ath_txq *txq,
534 ATH_TXQ_LOCK(txq);
541 * the queue id in the TX descriptor matches txq->axq_qnum.
546 txq->axq_aggr_depth++;
549 ATH_TXQ_INSERT_TAIL(txq, bf, bf_list);
555 ath_edma_tx_fifo_fill(sc, txq);
556 ATH_TXQ_UNLOCK(txq);
567 ath_edma_xmit_handoff_mcast(struct ath_softc *sc, struct ath_txq *txq,
575 ATH_TXQ_LOCK(txq);
579 if (ATH_TXQ_LAST(txq, axq_q_s) != NULL) {
580 struct ath_buf *bf_last = ATH_TXQ_LAST(txq, axq_q_s);
600 ATH_TXQ_INSERT_TAIL(txq, bf, bf_list);
601 ATH_TXQ_UNLOCK(txq);
622 ath_edma_xmit_handoff(struct ath_softc *sc, struct ath_txq *txq,
627 "%s: called; bf=%p, txq=%p, qnum=%d\n",
630 txq,
631 txq->axq_qnum);
633 if (txq->axq_qnum == ATH_TXQ_SWQ)
634 ath_edma_xmit_handoff_mcast(sc, txq, bf);
636 ath_edma_xmit_handoff_hw(sc, txq, bf);
801 struct ath_txq *txq;
878 txq = &sc->sc_txq[ts.ts_queue_id];
880 ATH_TXQ_LOCK(txq);
881 bf = ATH_TXQ_FIRST(&txq->fifo);
892 ATH_TXQ_UNLOCK(txq);
918 ATH_TXQ_REMOVE(&txq->fifo, bf, bf_list);
920 txq->axq_aggr_depth--;
926 txq->axq_fifo_depth--;
937 txq->axq_qnum,
938 txq->axq_fifo_depth,
939 txq->fifo.axq_depth);
942 ATH_TXQ_UNLOCK(txq);
950 ATH_TXQ_LOCK(txq);
951 ath_txq_freeholdingbuf(sc, txq);
952 ATH_TXQ_UNLOCK(txq);
1019 ath_tx_process_buf_completion(sc, txq, &ts, bf);
1029 * the txq task for _one_ TXQ. This should be fixed.