Lines Matching refs:bf

3153 	struct ath_buf *bf;  in _ath_getbuf_locked()  local
3158 bf = TAILQ_FIRST(&sc->sc_txbuf_mgmt); in _ath_getbuf_locked()
3160 bf = TAILQ_FIRST(&sc->sc_txbuf); in _ath_getbuf_locked()
3162 if (bf == NULL) { in _ath_getbuf_locked()
3165 if (bf->bf_flags & ATH_BUF_BUSY) { in _ath_getbuf_locked()
3167 bf = NULL; in _ath_getbuf_locked()
3171 if (bf != NULL && (bf->bf_flags & ATH_BUF_BUSY) == 0) { in _ath_getbuf_locked()
3173 TAILQ_REMOVE(&sc->sc_txbuf_mgmt, bf, bf_list); in _ath_getbuf_locked()
3175 TAILQ_REMOVE(&sc->sc_txbuf, bf, bf_list); in _ath_getbuf_locked()
3191 bf = NULL; in _ath_getbuf_locked()
3193 if (bf == NULL) { in _ath_getbuf_locked()
3203 bf->bf_flags = 0; in _ath_getbuf_locked()
3205 bf->bf_flags |= ATH_BUF_MGMT; in _ath_getbuf_locked()
3207 bf->bf_flags &= (~ATH_BUF_MGMT); in _ath_getbuf_locked()
3210 bf->bf_next = NULL; /* XXX just to be sure */ in _ath_getbuf_locked()
3211 bf->bf_last = NULL; /* XXX again, just to be sure */ in _ath_getbuf_locked()
3212 bf->bf_comp = NULL; /* XXX again, just to be sure */ in _ath_getbuf_locked()
3213 bzero(&bf->bf_state, sizeof(bf->bf_state)); in _ath_getbuf_locked()
3219 bf->bf_descid = sc->sc_txbuf_descid; in _ath_getbuf_locked()
3223 return bf; in _ath_getbuf_locked()
3241 ath_buf_clone(struct ath_softc *sc, struct ath_buf *bf) in ath_buf_clone() argument
3246 (bf->bf_flags & ATH_BUF_MGMT) ? in ath_buf_clone()
3253 tbf->bf_nseg = bf->bf_nseg; in ath_buf_clone()
3254 tbf->bf_flags = bf->bf_flags & ATH_BUF_FLAGS_CLONE; in ath_buf_clone()
3255 tbf->bf_status = bf->bf_status; in ath_buf_clone()
3256 tbf->bf_m = bf->bf_m; in ath_buf_clone()
3257 tbf->bf_node = bf->bf_node; in ath_buf_clone()
3258 KASSERT((bf->bf_node != NULL), ("%s: bf_node=NULL!", __func__)); in ath_buf_clone()
3263 tbf->bf_comp = bf->bf_comp; in ath_buf_clone()
3274 if (bf->bf_m != NULL) { in ath_buf_clone()
3278 bus_dmamap_sync(sc->sc_dmat, bf->bf_dmamap, in ath_buf_clone()
3280 bus_dmamap_unload(sc->sc_dmat, bf->bf_dmamap); in ath_buf_clone()
3283 bf->bf_m = NULL; in ath_buf_clone()
3284 bf->bf_node = NULL; in ath_buf_clone()
3287 memcpy(&tbf->bf_state, &bf->bf_state, sizeof(bf->bf_state)); in ath_buf_clone()
3295 struct ath_buf *bf; in ath_getbuf() local
3298 bf = _ath_getbuf_locked(sc, btype); in ath_getbuf()
3303 if (bf == NULL && btype == ATH_BUFTYPE_MGMT) in ath_getbuf()
3304 bf = _ath_getbuf_locked(sc, ATH_BUFTYPE_NORMAL); in ath_getbuf()
3306 if (bf == NULL) { in ath_getbuf()
3310 return bf; in ath_getbuf()
3325 struct ath_buf *bf; in ath_transmit() local
3415 bf = ath_getbuf(sc, ATH_BUFTYPE_MGMT); in ath_transmit()
3417 bf = ath_getbuf(sc, ATH_BUFTYPE_NORMAL); in ath_transmit()
3419 if (bf == NULL) { in ath_transmit()
3479 struct ath_buf *fbf = bf; in ath_transmit()
3516 if (ath_tx_start(sc, ni, bf, m)) { in ath_transmit()
3520 bf->bf_m = NULL; in ath_transmit()
3521 bf->bf_node = NULL; in ath_transmit()
3523 ath_returnbuf_head(sc, bf); in ath_transmit()
3561 bf = TAILQ_FIRST(&frags); in ath_transmit()
3562 KASSERT(bf != NULL, ("no buf for txfrag")); in ath_transmit()
3563 TAILQ_REMOVE(&frags, bf, bf_list); in ath_transmit()
4217 struct ath_buf *bf) in ath_tx_update_stats() argument
4219 struct ieee80211_node *ni = bf->bf_node; in ath_tx_update_stats()
4236 pri = M_WME_GETAC(bf->bf_m); in ath_tx_update_stats()
4240 if ((bf->bf_state.bfs_txflags & HAL_TXDESC_NOACK) == 0) in ath_tx_update_stats()
4254 if (bf->bf_m->m_flags & M_FF) in ath_tx_update_stats()
4286 ath_tx_default_comp(struct ath_softc *sc, struct ath_buf *bf, int fail) in ath_tx_default_comp() argument
4288 struct ath_tx_status *ts = &bf->bf_status.ds_txstat; in ath_tx_default_comp()
4294 st = ((bf->bf_state.bfs_txflags & HAL_TXDESC_NOACK) == 0) ? in ath_tx_default_comp()
4298 if (bf->bf_state.bfs_dobaw) in ath_tx_default_comp()
4302 bf, in ath_tx_default_comp()
4303 SEQNO(bf->bf_state.bfs_seqno)); in ath_tx_default_comp()
4305 if (bf->bf_next != NULL) in ath_tx_default_comp()
4309 bf, in ath_tx_default_comp()
4310 SEQNO(bf->bf_state.bfs_seqno)); in ath_tx_default_comp()
4327 if (bf->bf_node) { in ath_tx_default_comp()
4329 ath_tx_update_tim(sc, bf->bf_node, 0); in ath_tx_default_comp()
4339 ath_tx_freebuf(sc, bf, st); in ath_tx_default_comp()
4382 struct ath_tx_status *ts, struct ath_buf *bf) in ath_tx_process_buf_completion() argument
4384 struct ieee80211_node *ni = bf->bf_node; in ath_tx_process_buf_completion()
4392 ath_tx_update_stats(sc, ts, bf); in ath_tx_process_buf_completion()
4403 if (bf->bf_comp == NULL) { in ath_tx_process_buf_completion()
4405 (bf->bf_state.bfs_txflags & HAL_TXDESC_NOACK) == 0) { in ath_tx_process_buf_completion()
4414 bf->bf_state.bfs_rc, ts, in ath_tx_process_buf_completion()
4415 bf->bf_state.bfs_pktlen, in ath_tx_process_buf_completion()
4416 bf->bf_state.bfs_pktlen, in ath_tx_process_buf_completion()
4420 ath_tx_default_comp(sc, bf, 0); in ath_tx_process_buf_completion()
4422 bf->bf_comp(sc, bf, 0); in ath_tx_process_buf_completion()
4434 struct ath_buf *bf; in ath_tx_processq() local
4460 bf = TAILQ_FIRST(&txq->axq_q); in ath_tx_processq()
4461 if (bf == NULL) { in ath_tx_processq()
4465 ds = bf->bf_lastds; /* XXX must be setup correctly! */ in ath_tx_processq()
4466 ts = &bf->bf_status.ds_txstat; in ath_tx_processq()
4471 ath_printtxbuf(sc, bf, txq->axq_qnum, 0, in ath_tx_processq()
4474 ath_printtxbuf(sc, bf, txq->axq_qnum, 0, in ath_tx_processq()
4489 txq->axq_qnum, bf, ds); in ath_tx_processq()
4493 ATH_TXQ_REMOVE(txq, bf, bf_list); in ath_tx_processq()
4498 if (txq->axq_qnum != bf->bf_state.bfs_tx_queue) { in ath_tx_processq()
4503 bf, in ath_tx_processq()
4504 bf->bf_state.bfs_tx_queue); in ath_tx_processq()
4506 if (txq->axq_qnum != bf->bf_last->bf_state.bfs_tx_queue) { in ath_tx_processq()
4511 bf->bf_last, in ath_tx_processq()
4512 bf->bf_last->bf_state.bfs_tx_queue); in ath_tx_processq()
4526 bf->bf_last->bf_flags |= ATH_BUF_BUSY; in ath_tx_processq()
4530 bf->bf_last->bf_flags |= ATH_BUF_BUSY; in ath_tx_processq()
4532 if (bf->bf_state.bfs_aggr) in ath_tx_processq()
4535 ni = bf->bf_node; in ath_tx_processq()
4539 txq->axq_qnum, bf, ds, ni, ts->ts_status); in ath_tx_processq()
4546 ((bf->bf_state.bfs_txflags & HAL_TXDESC_NOACK) == 0)) { in ath_tx_processq()
4559 ath_tx_process_buf_completion(sc, txq, ts, bf); in ath_tx_processq()
4781 ath_returnbuf_tail(struct ath_softc *sc, struct ath_buf *bf) in ath_returnbuf_tail() argument
4786 if (bf->bf_flags & ATH_BUF_MGMT) in ath_returnbuf_tail()
4787 TAILQ_INSERT_TAIL(&sc->sc_txbuf_mgmt, bf, bf_list); in ath_returnbuf_tail()
4789 TAILQ_INSERT_TAIL(&sc->sc_txbuf, bf, bf_list); in ath_returnbuf_tail()
4802 ath_returnbuf_head(struct ath_softc *sc, struct ath_buf *bf) in ath_returnbuf_head() argument
4807 if (bf->bf_flags & ATH_BUF_MGMT) in ath_returnbuf_head()
4808 TAILQ_INSERT_HEAD(&sc->sc_txbuf_mgmt, bf, bf_list); in ath_returnbuf_head()
4810 TAILQ_INSERT_HEAD(&sc->sc_txbuf, bf, bf_list); in ath_returnbuf_head()
4848 ath_txq_addholdingbuf(struct ath_softc *sc, struct ath_buf *bf) in ath_txq_addholdingbuf() argument
4852 txq = &sc->sc_txq[bf->bf_state.bfs_tx_queue]; in ath_txq_addholdingbuf()
4860 if (bf->bf_state.bfs_tx_queue > HAL_NUM_TX_QUEUES) { in ath_txq_addholdingbuf()
4863 bf, in ath_txq_addholdingbuf()
4864 bf->bf_state.bfs_tx_queue); in ath_txq_addholdingbuf()
4865 bf->bf_flags &= ~ATH_BUF_BUSY; in ath_txq_addholdingbuf()
4866 ath_returnbuf_tail(sc, bf); in ath_txq_addholdingbuf()
4870 txq->axq_holdingbf = bf; in ath_txq_addholdingbuf()
4891 ath_freebuf(struct ath_softc *sc, struct ath_buf *bf) in ath_freebuf() argument
4895 txq = &sc->sc_txq[bf->bf_state.bfs_tx_queue]; in ath_freebuf()
4897 KASSERT((bf->bf_node == NULL), ("%s: bf->bf_node != NULL\n", __func__)); in ath_freebuf()
4898 KASSERT((bf->bf_m == NULL), ("%s: bf->bf_m != NULL\n", __func__)); in ath_freebuf()
4903 if (bf->bf_flags & ATH_BUF_BUSY) { in ath_freebuf()
4905 ath_txq_addholdingbuf(sc, bf); in ath_freebuf()
4914 ath_returnbuf_tail(sc, bf); in ath_freebuf()
4925 ath_tx_freebuf(struct ath_softc *sc, struct ath_buf *bf, int status) in ath_tx_freebuf() argument
4927 struct ieee80211_node *ni = bf->bf_node; in ath_tx_freebuf()
4928 struct mbuf *m0 = bf->bf_m; in ath_tx_freebuf()
4935 if (bf->bf_m != NULL) { in ath_tx_freebuf()
4936 bus_dmamap_sync(sc->sc_dmat, bf->bf_dmamap, in ath_tx_freebuf()
4938 bus_dmamap_unload(sc->sc_dmat, bf->bf_dmamap); in ath_tx_freebuf()
4941 bf->bf_node = NULL; in ath_tx_freebuf()
4942 bf->bf_m = NULL; in ath_tx_freebuf()
4945 ath_freebuf(sc, bf); in ath_tx_freebuf()
4954 struct ath_buf *bf; in ath_tx_draintxq_get_one() local
4962 bf = TAILQ_FIRST(&txq->fifo.axq_q); in ath_tx_draintxq_get_one()
4963 if (bf != NULL) { in ath_tx_draintxq_get_one()
4968 if (bf->bf_flags & ATH_BUF_FIFOEND) { in ath_tx_draintxq_get_one()
4978 ATH_TXQ_REMOVE(&txq->fifo, bf, bf_list); in ath_tx_draintxq_get_one()
4979 return (bf); in ath_tx_draintxq_get_one()
4997 bf = TAILQ_FIRST(&txq->axq_q); in ath_tx_draintxq_get_one()
4998 if (bf == NULL) { in ath_tx_draintxq_get_one()
5002 ATH_TXQ_REMOVE(txq, bf, bf_list); in ath_tx_draintxq_get_one()
5003 return (bf); in ath_tx_draintxq_get_one()
5012 struct ath_buf *bf; in ath_tx_draintxq() local
5021 bf = ath_tx_draintxq_get_one(sc, txq); in ath_tx_draintxq()
5022 if (bf == NULL) { in ath_tx_draintxq()
5026 if (bf->bf_state.bfs_aggr) in ath_tx_draintxq()
5041 bf->bf_lastds, in ath_tx_draintxq()
5042 &bf->bf_status.ds_txstat) == HAL_OK); in ath_tx_draintxq()
5044 ath_printtxbuf(sc, bf, txq->axq_qnum, ix, status); in ath_tx_draintxq()
5045 ieee80211_dump_pkt(ic, mtod(bf->bf_m, const uint8_t *), in ath_tx_draintxq()
5046 bf->bf_m->m_len, 0, -1); in ath_tx_draintxq()
5059 bf->bf_flags &= ~ATH_BUF_BUSY; in ath_tx_draintxq()
5060 if (bf->bf_comp) in ath_tx_draintxq()
5061 bf->bf_comp(sc, bf, 1); in ath_tx_draintxq()
5063 ath_tx_default_comp(sc, bf, 1); in ath_tx_draintxq()
5149 struct ath_buf *bf; in ath_tx_dump() local
5157 TAILQ_FOREACH(bf, &txq->axq_q, bf_list) { in ath_tx_dump()
5158 ath_printtxbuf(sc, bf, txq->axq_qnum, i, in ath_tx_dump()
5159 ath_hal_txprocdesc(ah, bf->bf_lastds, in ath_tx_dump()
5160 &bf->bf_status.ds_txstat) == HAL_OK); in ath_tx_dump()
5223 struct ath_buf *bf = TAILQ_FIRST(&sc->sc_bbuf); in ath_legacy_tx_drain() local
5224 if (bf != NULL && bf->bf_m != NULL) { in ath_legacy_tx_drain()
5225 ath_printtxbuf(sc, bf, sc->sc_bhalq, 0, in ath_legacy_tx_drain()
5226 ath_hal_txprocdesc(ah, bf->bf_lastds, in ath_legacy_tx_drain()
5227 &bf->bf_status.ds_txstat) == HAL_OK); in ath_legacy_tx_drain()
5229 mtod(bf->bf_m, const uint8_t *), bf->bf_m->m_len, in ath_legacy_tx_drain()