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()
4177 struct ath_buf *bf) in ath_tx_update_stats() argument
4179 struct ieee80211_node *ni = bf->bf_node; in ath_tx_update_stats()
4191 pri = M_WME_GETAC(bf->bf_m); in ath_tx_update_stats()
4195 if ((bf->bf_state.bfs_txflags & HAL_TXDESC_NOACK) == 0) in ath_tx_update_stats()
4209 if (bf->bf_m->m_flags & M_FF) in ath_tx_update_stats()
4241 ath_tx_default_comp(struct ath_softc *sc, struct ath_buf *bf, int fail) in ath_tx_default_comp() argument
4243 struct ath_tx_status *ts = &bf->bf_status.ds_txstat; in ath_tx_default_comp()
4249 st = ((bf->bf_state.bfs_txflags & HAL_TXDESC_NOACK) == 0) ? in ath_tx_default_comp()
4253 if (bf->bf_state.bfs_dobaw) in ath_tx_default_comp()
4257 bf, in ath_tx_default_comp()
4258 SEQNO(bf->bf_state.bfs_seqno)); in ath_tx_default_comp()
4260 if (bf->bf_next != NULL) in ath_tx_default_comp()
4264 bf, in ath_tx_default_comp()
4265 SEQNO(bf->bf_state.bfs_seqno)); in ath_tx_default_comp()
4282 if (bf->bf_node) { in ath_tx_default_comp()
4284 ath_tx_update_tim(sc, bf->bf_node, 0); in ath_tx_default_comp()
4294 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()
4359 bf->bf_state.bfs_rc, ts, in ath_tx_process_buf_completion()
4360 bf->bf_state.bfs_pktlen, 1, in ath_tx_process_buf_completion()
4363 ath_tx_default_comp(sc, bf, 0); in ath_tx_process_buf_completion()
4365 bf->bf_comp(sc, bf, 0); in ath_tx_process_buf_completion()
4379 struct ath_buf *bf; in ath_tx_processq() local
4405 bf = TAILQ_FIRST(&txq->axq_q); in ath_tx_processq()
4406 if (bf == NULL) { in ath_tx_processq()
4410 ds = bf->bf_lastds; /* XXX must be setup correctly! */ in ath_tx_processq()
4411 ts = &bf->bf_status.ds_txstat; in ath_tx_processq()
4416 ath_printtxbuf(sc, bf, txq->axq_qnum, 0, in ath_tx_processq()
4419 ath_printtxbuf(sc, bf, txq->axq_qnum, 0, in ath_tx_processq()
4434 txq->axq_qnum, bf, ds); in ath_tx_processq()
4438 ATH_TXQ_REMOVE(txq, bf, bf_list); in ath_tx_processq()
4443 if (txq->axq_qnum != bf->bf_state.bfs_tx_queue) { in ath_tx_processq()
4448 bf, in ath_tx_processq()
4449 bf->bf_state.bfs_tx_queue); in ath_tx_processq()
4451 if (txq->axq_qnum != bf->bf_last->bf_state.bfs_tx_queue) { in ath_tx_processq()
4456 bf->bf_last, in ath_tx_processq()
4457 bf->bf_last->bf_state.bfs_tx_queue); in ath_tx_processq()
4471 bf->bf_last->bf_flags |= ATH_BUF_BUSY; in ath_tx_processq()
4475 bf->bf_last->bf_flags |= ATH_BUF_BUSY; in ath_tx_processq()
4477 if (bf->bf_state.bfs_aggr) in ath_tx_processq()
4480 ni = bf->bf_node; in ath_tx_processq()
4484 txq->axq_qnum, bf, ds, ni, ts->ts_status); in ath_tx_processq()
4491 ((bf->bf_state.bfs_txflags & HAL_TXDESC_NOACK) == 0)) { in ath_tx_processq()
4502 ath_tx_process_buf_completion(sc, txq, ts, bf); in ath_tx_processq()
4724 ath_returnbuf_tail(struct ath_softc *sc, struct ath_buf *bf) in ath_returnbuf_tail() argument
4729 if (bf->bf_flags & ATH_BUF_MGMT) in ath_returnbuf_tail()
4730 TAILQ_INSERT_TAIL(&sc->sc_txbuf_mgmt, bf, bf_list); in ath_returnbuf_tail()
4732 TAILQ_INSERT_TAIL(&sc->sc_txbuf, bf, bf_list); in ath_returnbuf_tail()
4745 ath_returnbuf_head(struct ath_softc *sc, struct ath_buf *bf) in ath_returnbuf_head() argument
4750 if (bf->bf_flags & ATH_BUF_MGMT) in ath_returnbuf_head()
4751 TAILQ_INSERT_HEAD(&sc->sc_txbuf_mgmt, bf, bf_list); in ath_returnbuf_head()
4753 TAILQ_INSERT_HEAD(&sc->sc_txbuf, bf, bf_list); in ath_returnbuf_head()
4791 ath_txq_addholdingbuf(struct ath_softc *sc, struct ath_buf *bf) in ath_txq_addholdingbuf() argument
4795 txq = &sc->sc_txq[bf->bf_state.bfs_tx_queue]; in ath_txq_addholdingbuf()
4803 if (bf->bf_state.bfs_tx_queue > HAL_NUM_TX_QUEUES) { in ath_txq_addholdingbuf()
4806 bf, in ath_txq_addholdingbuf()
4807 bf->bf_state.bfs_tx_queue); in ath_txq_addholdingbuf()
4808 bf->bf_flags &= ~ATH_BUF_BUSY; in ath_txq_addholdingbuf()
4809 ath_returnbuf_tail(sc, bf); in ath_txq_addholdingbuf()
4813 txq->axq_holdingbf = bf; in ath_txq_addholdingbuf()
4834 ath_freebuf(struct ath_softc *sc, struct ath_buf *bf) in ath_freebuf() argument
4838 txq = &sc->sc_txq[bf->bf_state.bfs_tx_queue]; in ath_freebuf()
4840 KASSERT((bf->bf_node == NULL), ("%s: bf->bf_node != NULL\n", __func__)); in ath_freebuf()
4841 KASSERT((bf->bf_m == NULL), ("%s: bf->bf_m != NULL\n", __func__)); in ath_freebuf()
4846 if (bf->bf_flags & ATH_BUF_BUSY) { in ath_freebuf()
4848 ath_txq_addholdingbuf(sc, bf); in ath_freebuf()
4857 ath_returnbuf_tail(sc, bf); in ath_freebuf()
4868 ath_tx_freebuf(struct ath_softc *sc, struct ath_buf *bf, int status) in ath_tx_freebuf() argument
4870 struct ieee80211_node *ni = bf->bf_node; in ath_tx_freebuf()
4871 struct mbuf *m0 = bf->bf_m; in ath_tx_freebuf()
4878 if (bf->bf_m != NULL) { in ath_tx_freebuf()
4879 bus_dmamap_sync(sc->sc_dmat, bf->bf_dmamap, in ath_tx_freebuf()
4881 bus_dmamap_unload(sc->sc_dmat, bf->bf_dmamap); in ath_tx_freebuf()
4884 bf->bf_node = NULL; in ath_tx_freebuf()
4885 bf->bf_m = NULL; in ath_tx_freebuf()
4888 ath_freebuf(sc, bf); in ath_tx_freebuf()
4897 struct ath_buf *bf; in ath_tx_draintxq_get_one() local
4905 bf = TAILQ_FIRST(&txq->fifo.axq_q); in ath_tx_draintxq_get_one()
4906 if (bf != NULL) { in ath_tx_draintxq_get_one()
4911 if (bf->bf_flags & ATH_BUF_FIFOEND) { in ath_tx_draintxq_get_one()
4921 ATH_TXQ_REMOVE(&txq->fifo, bf, bf_list); in ath_tx_draintxq_get_one()
4922 return (bf); in ath_tx_draintxq_get_one()
4940 bf = TAILQ_FIRST(&txq->axq_q); in ath_tx_draintxq_get_one()
4941 if (bf == NULL) { in ath_tx_draintxq_get_one()
4945 ATH_TXQ_REMOVE(txq, bf, bf_list); in ath_tx_draintxq_get_one()
4946 return (bf); in ath_tx_draintxq_get_one()
4955 struct ath_buf *bf; in ath_tx_draintxq() local
4964 bf = ath_tx_draintxq_get_one(sc, txq); in ath_tx_draintxq()
4965 if (bf == NULL) { in ath_tx_draintxq()
4969 if (bf->bf_state.bfs_aggr) in ath_tx_draintxq()
4984 bf->bf_lastds, in ath_tx_draintxq()
4985 &bf->bf_status.ds_txstat) == HAL_OK); in ath_tx_draintxq()
4987 ath_printtxbuf(sc, bf, txq->axq_qnum, ix, status); in ath_tx_draintxq()
4988 ieee80211_dump_pkt(ic, mtod(bf->bf_m, const uint8_t *), in ath_tx_draintxq()
4989 bf->bf_m->m_len, 0, -1); in ath_tx_draintxq()
5002 bf->bf_flags &= ~ATH_BUF_BUSY; in ath_tx_draintxq()
5003 if (bf->bf_comp) in ath_tx_draintxq()
5004 bf->bf_comp(sc, bf, 1); in ath_tx_draintxq()
5006 ath_tx_default_comp(sc, bf, 1); in ath_tx_draintxq()
5092 struct ath_buf *bf; in ath_tx_dump() local
5100 TAILQ_FOREACH(bf, &txq->axq_q, bf_list) { in ath_tx_dump()
5101 ath_printtxbuf(sc, bf, txq->axq_qnum, i, in ath_tx_dump()
5102 ath_hal_txprocdesc(ah, bf->bf_lastds, in ath_tx_dump()
5103 &bf->bf_status.ds_txstat) == HAL_OK); in ath_tx_dump()
5166 struct ath_buf *bf = TAILQ_FIRST(&sc->sc_bbuf); in ath_legacy_tx_drain() local
5167 if (bf != NULL && bf->bf_m != NULL) { in ath_legacy_tx_drain()
5168 ath_printtxbuf(sc, bf, sc->sc_bhalq, 0, in ath_legacy_tx_drain()
5169 ath_hal_txprocdesc(ah, bf->bf_lastds, in ath_legacy_tx_drain()
5170 &bf->bf_status.ds_txstat) == HAL_OK); in ath_legacy_tx_drain()
5172 mtod(bf->bf_m, const uint8_t *), bf->bf_m->m_len, in ath_legacy_tx_drain()