Lines Matching refs:bf

3106 	struct ath_buf *bf;  in _ath_getbuf_locked()  local
3111 bf = TAILQ_FIRST(&sc->sc_txbuf_mgmt); in _ath_getbuf_locked()
3113 bf = TAILQ_FIRST(&sc->sc_txbuf); in _ath_getbuf_locked()
3115 if (bf == NULL) { in _ath_getbuf_locked()
3118 if (bf->bf_flags & ATH_BUF_BUSY) { in _ath_getbuf_locked()
3120 bf = NULL; in _ath_getbuf_locked()
3124 if (bf != NULL && (bf->bf_flags & ATH_BUF_BUSY) == 0) { in _ath_getbuf_locked()
3126 TAILQ_REMOVE(&sc->sc_txbuf_mgmt, bf, bf_list); in _ath_getbuf_locked()
3128 TAILQ_REMOVE(&sc->sc_txbuf, bf, bf_list); in _ath_getbuf_locked()
3144 bf = NULL; in _ath_getbuf_locked()
3146 if (bf == NULL) { in _ath_getbuf_locked()
3156 bf->bf_flags = 0; in _ath_getbuf_locked()
3158 bf->bf_flags |= ATH_BUF_MGMT; in _ath_getbuf_locked()
3160 bf->bf_flags &= (~ATH_BUF_MGMT); in _ath_getbuf_locked()
3163 bf->bf_next = NULL; /* XXX just to be sure */ in _ath_getbuf_locked()
3164 bf->bf_last = NULL; /* XXX again, just to be sure */ in _ath_getbuf_locked()
3165 bf->bf_comp = NULL; /* XXX again, just to be sure */ in _ath_getbuf_locked()
3166 bzero(&bf->bf_state, sizeof(bf->bf_state)); in _ath_getbuf_locked()
3172 bf->bf_descid = sc->sc_txbuf_descid; in _ath_getbuf_locked()
3176 return bf; in _ath_getbuf_locked()
3194 ath_buf_clone(struct ath_softc *sc, struct ath_buf *bf) in ath_buf_clone() argument
3199 (bf->bf_flags & ATH_BUF_MGMT) ? in ath_buf_clone()
3206 tbf->bf_nseg = bf->bf_nseg; in ath_buf_clone()
3207 tbf->bf_flags = bf->bf_flags & ATH_BUF_FLAGS_CLONE; in ath_buf_clone()
3208 tbf->bf_status = bf->bf_status; in ath_buf_clone()
3209 tbf->bf_m = bf->bf_m; in ath_buf_clone()
3210 tbf->bf_node = bf->bf_node; in ath_buf_clone()
3211 KASSERT((bf->bf_node != NULL), ("%s: bf_node=NULL!", __func__)); in ath_buf_clone()
3216 tbf->bf_comp = bf->bf_comp; in ath_buf_clone()
3227 if (bf->bf_m != NULL) { in ath_buf_clone()
3231 bus_dmamap_sync(sc->sc_dmat, bf->bf_dmamap, in ath_buf_clone()
3233 bus_dmamap_unload(sc->sc_dmat, bf->bf_dmamap); in ath_buf_clone()
3236 bf->bf_m = NULL; in ath_buf_clone()
3237 bf->bf_node = NULL; in ath_buf_clone()
3240 memcpy(&tbf->bf_state, &bf->bf_state, sizeof(bf->bf_state)); in ath_buf_clone()
3248 struct ath_buf *bf; in ath_getbuf() local
3251 bf = _ath_getbuf_locked(sc, btype); in ath_getbuf()
3256 if (bf == NULL && btype == ATH_BUFTYPE_MGMT) in ath_getbuf()
3257 bf = _ath_getbuf_locked(sc, ATH_BUFTYPE_NORMAL); in ath_getbuf()
3259 if (bf == NULL) { in ath_getbuf()
3263 return bf; in ath_getbuf()
3278 struct ath_buf *bf; in ath_transmit() local
3368 bf = ath_getbuf(sc, ATH_BUFTYPE_MGMT); in ath_transmit()
3370 bf = ath_getbuf(sc, ATH_BUFTYPE_NORMAL); in ath_transmit()
3372 if (bf == NULL) { in ath_transmit()
3432 struct ath_buf *fbf = bf; in ath_transmit()
3469 if (ath_tx_start(sc, ni, bf, m)) { in ath_transmit()
3473 bf->bf_m = NULL; in ath_transmit()
3474 bf->bf_node = NULL; in ath_transmit()
3476 ath_returnbuf_head(sc, bf); in ath_transmit()
3514 bf = TAILQ_FIRST(&frags); in ath_transmit()
3515 KASSERT(bf != NULL, ("no buf for txfrag")); in ath_transmit()
3516 TAILQ_REMOVE(&frags, bf, bf_list); in ath_transmit()
4170 struct ath_buf *bf) in ath_tx_update_stats() argument
4172 struct ieee80211_node *ni = bf->bf_node; in ath_tx_update_stats()
4184 pri = M_WME_GETAC(bf->bf_m); in ath_tx_update_stats()
4188 if ((bf->bf_state.bfs_txflags & HAL_TXDESC_NOACK) == 0) in ath_tx_update_stats()
4202 if (bf->bf_m->m_flags & M_FF) in ath_tx_update_stats()
4234 ath_tx_default_comp(struct ath_softc *sc, struct ath_buf *bf, int fail) in ath_tx_default_comp() argument
4236 struct ath_tx_status *ts = &bf->bf_status.ds_txstat; in ath_tx_default_comp()
4242 st = ((bf->bf_state.bfs_txflags & HAL_TXDESC_NOACK) == 0) ? in ath_tx_default_comp()
4246 if (bf->bf_state.bfs_dobaw) in ath_tx_default_comp()
4250 bf, in ath_tx_default_comp()
4251 SEQNO(bf->bf_state.bfs_seqno)); in ath_tx_default_comp()
4253 if (bf->bf_next != NULL) in ath_tx_default_comp()
4257 bf, in ath_tx_default_comp()
4258 SEQNO(bf->bf_state.bfs_seqno)); in ath_tx_default_comp()
4275 if (bf->bf_node) { in ath_tx_default_comp()
4277 ath_tx_update_tim(sc, bf->bf_node, 0); in ath_tx_default_comp()
4287 ath_tx_freebuf(sc, bf, st); in ath_tx_default_comp()
4330 struct ath_tx_status *ts, struct ath_buf *bf) in ath_tx_process_buf_completion() argument
4332 struct ieee80211_node *ni = bf->bf_node; in ath_tx_process_buf_completion()
4340 ath_tx_update_stats(sc, ts, bf); in ath_tx_process_buf_completion()
4351 if (bf->bf_comp == NULL) { in ath_tx_process_buf_completion()
4353 (bf->bf_state.bfs_txflags & HAL_TXDESC_NOACK) == 0) { in ath_tx_process_buf_completion()
4362 bf->bf_state.bfs_rc, ts, in ath_tx_process_buf_completion()
4363 bf->bf_state.bfs_pktlen, in ath_tx_process_buf_completion()
4364 bf->bf_state.bfs_pktlen, in ath_tx_process_buf_completion()
4368 ath_tx_default_comp(sc, bf, 0); in ath_tx_process_buf_completion()
4370 bf->bf_comp(sc, bf, 0); in ath_tx_process_buf_completion()
4382 struct ath_buf *bf; in ath_tx_processq() local
4408 bf = TAILQ_FIRST(&txq->axq_q); in ath_tx_processq()
4409 if (bf == NULL) { in ath_tx_processq()
4413 ds = bf->bf_lastds; /* XXX must be setup correctly! */ in ath_tx_processq()
4414 ts = &bf->bf_status.ds_txstat; in ath_tx_processq()
4419 ath_printtxbuf(sc, bf, txq->axq_qnum, 0, in ath_tx_processq()
4422 ath_printtxbuf(sc, bf, txq->axq_qnum, 0, in ath_tx_processq()
4437 txq->axq_qnum, bf, ds); in ath_tx_processq()
4441 ATH_TXQ_REMOVE(txq, bf, bf_list); in ath_tx_processq()
4446 if (txq->axq_qnum != bf->bf_state.bfs_tx_queue) { in ath_tx_processq()
4451 bf, in ath_tx_processq()
4452 bf->bf_state.bfs_tx_queue); in ath_tx_processq()
4454 if (txq->axq_qnum != bf->bf_last->bf_state.bfs_tx_queue) { in ath_tx_processq()
4459 bf->bf_last, in ath_tx_processq()
4460 bf->bf_last->bf_state.bfs_tx_queue); in ath_tx_processq()
4474 bf->bf_last->bf_flags |= ATH_BUF_BUSY; in ath_tx_processq()
4478 bf->bf_last->bf_flags |= ATH_BUF_BUSY; in ath_tx_processq()
4480 if (bf->bf_state.bfs_aggr) in ath_tx_processq()
4483 ni = bf->bf_node; in ath_tx_processq()
4487 txq->axq_qnum, bf, ds, ni, ts->ts_status); in ath_tx_processq()
4494 ((bf->bf_state.bfs_txflags & HAL_TXDESC_NOACK) == 0)) { in ath_tx_processq()
4507 ath_tx_process_buf_completion(sc, txq, ts, bf); in ath_tx_processq()
4729 ath_returnbuf_tail(struct ath_softc *sc, struct ath_buf *bf) in ath_returnbuf_tail() argument
4734 if (bf->bf_flags & ATH_BUF_MGMT) in ath_returnbuf_tail()
4735 TAILQ_INSERT_TAIL(&sc->sc_txbuf_mgmt, bf, bf_list); in ath_returnbuf_tail()
4737 TAILQ_INSERT_TAIL(&sc->sc_txbuf, bf, bf_list); in ath_returnbuf_tail()
4750 ath_returnbuf_head(struct ath_softc *sc, struct ath_buf *bf) in ath_returnbuf_head() argument
4755 if (bf->bf_flags & ATH_BUF_MGMT) in ath_returnbuf_head()
4756 TAILQ_INSERT_HEAD(&sc->sc_txbuf_mgmt, bf, bf_list); in ath_returnbuf_head()
4758 TAILQ_INSERT_HEAD(&sc->sc_txbuf, bf, bf_list); in ath_returnbuf_head()
4796 ath_txq_addholdingbuf(struct ath_softc *sc, struct ath_buf *bf) in ath_txq_addholdingbuf() argument
4800 txq = &sc->sc_txq[bf->bf_state.bfs_tx_queue]; in ath_txq_addholdingbuf()
4808 if (bf->bf_state.bfs_tx_queue > HAL_NUM_TX_QUEUES) { in ath_txq_addholdingbuf()
4811 bf, in ath_txq_addholdingbuf()
4812 bf->bf_state.bfs_tx_queue); in ath_txq_addholdingbuf()
4813 bf->bf_flags &= ~ATH_BUF_BUSY; in ath_txq_addholdingbuf()
4814 ath_returnbuf_tail(sc, bf); in ath_txq_addholdingbuf()
4818 txq->axq_holdingbf = bf; in ath_txq_addholdingbuf()
4839 ath_freebuf(struct ath_softc *sc, struct ath_buf *bf) in ath_freebuf() argument
4843 txq = &sc->sc_txq[bf->bf_state.bfs_tx_queue]; in ath_freebuf()
4845 KASSERT((bf->bf_node == NULL), ("%s: bf->bf_node != NULL\n", __func__)); in ath_freebuf()
4846 KASSERT((bf->bf_m == NULL), ("%s: bf->bf_m != NULL\n", __func__)); in ath_freebuf()
4851 if (bf->bf_flags & ATH_BUF_BUSY) { in ath_freebuf()
4853 ath_txq_addholdingbuf(sc, bf); in ath_freebuf()
4862 ath_returnbuf_tail(sc, bf); in ath_freebuf()
4873 ath_tx_freebuf(struct ath_softc *sc, struct ath_buf *bf, int status) in ath_tx_freebuf() argument
4875 struct ieee80211_node *ni = bf->bf_node; in ath_tx_freebuf()
4876 struct mbuf *m0 = bf->bf_m; in ath_tx_freebuf()
4883 if (bf->bf_m != NULL) { in ath_tx_freebuf()
4884 bus_dmamap_sync(sc->sc_dmat, bf->bf_dmamap, in ath_tx_freebuf()
4886 bus_dmamap_unload(sc->sc_dmat, bf->bf_dmamap); in ath_tx_freebuf()
4889 bf->bf_node = NULL; in ath_tx_freebuf()
4890 bf->bf_m = NULL; in ath_tx_freebuf()
4893 ath_freebuf(sc, bf); in ath_tx_freebuf()
4902 struct ath_buf *bf; in ath_tx_draintxq_get_one() local
4910 bf = TAILQ_FIRST(&txq->fifo.axq_q); in ath_tx_draintxq_get_one()
4911 if (bf != NULL) { in ath_tx_draintxq_get_one()
4916 if (bf->bf_flags & ATH_BUF_FIFOEND) { in ath_tx_draintxq_get_one()
4926 ATH_TXQ_REMOVE(&txq->fifo, bf, bf_list); in ath_tx_draintxq_get_one()
4927 return (bf); in ath_tx_draintxq_get_one()
4945 bf = TAILQ_FIRST(&txq->axq_q); in ath_tx_draintxq_get_one()
4946 if (bf == NULL) { in ath_tx_draintxq_get_one()
4950 ATH_TXQ_REMOVE(txq, bf, bf_list); in ath_tx_draintxq_get_one()
4951 return (bf); in ath_tx_draintxq_get_one()
4960 struct ath_buf *bf; in ath_tx_draintxq() local
4969 bf = ath_tx_draintxq_get_one(sc, txq); in ath_tx_draintxq()
4970 if (bf == NULL) { in ath_tx_draintxq()
4974 if (bf->bf_state.bfs_aggr) in ath_tx_draintxq()
4989 bf->bf_lastds, in ath_tx_draintxq()
4990 &bf->bf_status.ds_txstat) == HAL_OK); in ath_tx_draintxq()
4992 ath_printtxbuf(sc, bf, txq->axq_qnum, ix, status); in ath_tx_draintxq()
4993 ieee80211_dump_pkt(ic, mtod(bf->bf_m, const uint8_t *), in ath_tx_draintxq()
4994 bf->bf_m->m_len, 0, -1); in ath_tx_draintxq()
5007 bf->bf_flags &= ~ATH_BUF_BUSY; in ath_tx_draintxq()
5008 if (bf->bf_comp) in ath_tx_draintxq()
5009 bf->bf_comp(sc, bf, 1); in ath_tx_draintxq()
5011 ath_tx_default_comp(sc, bf, 1); in ath_tx_draintxq()
5097 struct ath_buf *bf; in ath_tx_dump() local
5105 TAILQ_FOREACH(bf, &txq->axq_q, bf_list) { in ath_tx_dump()
5106 ath_printtxbuf(sc, bf, txq->axq_qnum, i, in ath_tx_dump()
5107 ath_hal_txprocdesc(ah, bf->bf_lastds, in ath_tx_dump()
5108 &bf->bf_status.ds_txstat) == HAL_OK); in ath_tx_dump()
5171 struct ath_buf *bf = TAILQ_FIRST(&sc->sc_bbuf); in ath_legacy_tx_drain() local
5172 if (bf != NULL && bf->bf_m != NULL) { in ath_legacy_tx_drain()
5173 ath_printtxbuf(sc, bf, sc->sc_bhalq, 0, in ath_legacy_tx_drain()
5174 ath_hal_txprocdesc(ah, bf->bf_lastds, in ath_legacy_tx_drain()
5175 &bf->bf_status.ds_txstat) == HAL_OK); in ath_legacy_tx_drain()
5177 mtod(bf->bf_m, const uint8_t *), bf->bf_m->m_len, in ath_legacy_tx_drain()