Lines Matching refs:bf
266 static void ath_printrxbuf(struct ath_buf *bf, int);
267 static void ath_printtxbuf(struct ath_buf *bf, int);
1260 struct ath_buf *bf; in ath_txfrag_cleanup() local
1264 while ((bf = STAILQ_FIRST(frags)) != NULL) { in ath_txfrag_cleanup()
1266 STAILQ_INSERT_TAIL(&sc->sc_txbuf, bf, bf_list); in ath_txfrag_cleanup()
1282 struct ath_buf *bf; in ath_txfrag_setup() local
1286 bf = STAILQ_FIRST(&sc->sc_txbuf); in ath_txfrag_setup()
1287 if (bf == NULL) { /* out of buffers, cleanup */ in ath_txfrag_setup()
1296 STAILQ_INSERT_TAIL(frags, bf, bf_list); in ath_txfrag_setup()
1310 struct ath_buf *bf; in ath_start() local
1328 bf = STAILQ_FIRST(&sc->sc_txbuf); in ath_start()
1329 if (bf != NULL) in ath_start()
1332 if (bf == NULL) { in ath_start()
1355 STAILQ_INSERT_TAIL(&sc->sc_txbuf, bf, bf_list); in ath_start()
1362 STAILQ_INSERT_TAIL(&sc->sc_txbuf, bf, bf_list); in ath_start()
1462 if (ath_tx_start(sc, ni, bf, m)) { in ath_start()
1467 STAILQ_INSERT_TAIL(&sc->sc_txbuf, bf, bf_list); in ath_start()
1476 bf = STAILQ_FIRST(&frags); in ath_start()
1477 KASSERTMSG(bf != NULL, "no buf for txfrag"); in ath_start()
2161 struct ath_buf *bf; in ath_beacon_alloc() local
2165 bf = STAILQ_FIRST(&sc->sc_bbuf); in ath_beacon_alloc()
2166 if (bf == NULL) { in ath_beacon_alloc()
2183 error = bus_dmamap_load_mbuf(sc->sc_dmat, bf->bf_dmamap, m, in ath_beacon_alloc()
2186 bf->bf_m = m; in ath_beacon_alloc()
2187 bf->bf_node = ieee80211_ref_node(ni); in ath_beacon_alloc()
2198 ath_beacon_setup(struct ath_softc *sc, struct ath_buf *bf) in ath_beacon_setup() argument
2203 struct ieee80211_node *ni = bf->bf_node; in ath_beacon_setup()
2205 struct mbuf *m = bf->bf_m; in ath_beacon_setup()
2216 ds = bf->bf_desc; in ath_beacon_setup()
2220 ds->ds_link = HTOAH32(bf->bf_daddr); /* self-linked */ in ath_beacon_setup()
2243 KASSERTMSG(bf->bf_nseg == 1, in ath_beacon_setup()
2244 "multi-segment beacon frame; nseg %u", bf->bf_nseg); in ath_beacon_setup()
2245 ds->ds_data = bf->bf_segs[0].ds_addr; in ath_beacon_setup()
2292 struct ath_buf *bf = STAILQ_FIRST(&sc->sc_bbuf); in ath_beacon_proc() local
2293 struct ieee80211_node *ni = bf->bf_node; in ath_beacon_proc()
2304 bf == NULL || bf->bf_m == NULL) { in ath_beacon_proc()
2306 __func__, ic->ic_flags, bf, bf ? bf->bf_m : NULL); in ath_beacon_proc()
2338 m = bf->bf_m; in ath_beacon_proc()
2340 if (ieee80211_beacon_update(ic, bf->bf_node, &sc->sc_boff, m, ncabq)) { in ath_beacon_proc()
2342 bus_dmamap_unload(sc->sc_dmat, bf->bf_dmamap); in ath_beacon_proc()
2343 error = bus_dmamap_load_mbuf(sc->sc_dmat, bf->bf_dmamap, m, in ath_beacon_proc()
2380 ath_beacon_setup(sc, bf); in ath_beacon_proc()
2392 bus_dmamap_sync(sc->sc_dmat, bf->bf_dmamap, 0, in ath_beacon_proc()
2393 bf->bf_dmamap->dm_mapsize, BUS_DMASYNC_PREWRITE); in ath_beacon_proc()
2401 ath_hal_puttxbuf(ah, sc->sc_bhalq, bf->bf_daddr); in ath_beacon_proc()
2405 sc->sc_bhalq, (uint64_t)bf->bf_daddr, bf->bf_desc); in ath_beacon_proc()
2439 struct ath_buf *bf; in ath_beacon_free() local
2441 STAILQ_FOREACH(bf, &sc->sc_bbuf, bf_list) { in ath_beacon_free()
2442 if (bf->bf_m != NULL) { in ath_beacon_free()
2443 bus_dmamap_unload(sc->sc_dmat, bf->bf_dmamap); in ath_beacon_free()
2444 m_freem(bf->bf_m); in ath_beacon_free()
2445 bf->bf_m = NULL; in ath_beacon_free()
2447 if (bf->bf_node != NULL) { in ath_beacon_free()
2448 ieee80211_free_node(bf->bf_node); in ath_beacon_free()
2449 bf->bf_node = NULL; in ath_beacon_free()
2649 struct ath_buf *bf; in ath_descdma_setup() local
2706 bf = malloc(bsize, M_ATHDEV, M_WAITOK | M_ZERO); in ath_descdma_setup()
2707 dd->dd_bufptr = bf; in ath_descdma_setup()
2710 for (i = 0; i < nbuf; i++, bf++, ds += ndesc) { in ath_descdma_setup()
2711 bf->bf_desc = ds; in ath_descdma_setup()
2712 bf->bf_daddr = DS2PHYS(dd, ds); in ath_descdma_setup()
2714 MCLBYTES, 0, BUS_DMA_NOWAIT, &bf->bf_dmamap); in ath_descdma_setup()
2721 STAILQ_INSERT_TAIL(head, bf, bf_list); in ath_descdma_setup()
2740 struct ath_buf *bf; in ath_descdma_cleanup() local
2748 STAILQ_FOREACH(bf, head, bf_list) { in ath_descdma_cleanup()
2749 m_freem(bf->bf_m); in ath_descdma_cleanup()
2750 bf->bf_m = NULL; in ath_descdma_cleanup()
2751 if (bf->bf_dmamap != NULL) { in ath_descdma_cleanup()
2752 bus_dmamap_destroy(sc->sc_dmat, bf->bf_dmamap); in ath_descdma_cleanup()
2753 bf->bf_dmamap = NULL; in ath_descdma_cleanup()
2755 ni = bf->bf_node; in ath_descdma_cleanup()
2756 bf->bf_node = NULL; in ath_descdma_cleanup()
2862 ath_rxbuf_init(struct ath_softc *sc, struct ath_buf *bf) in ath_rxbuf_init() argument
2869 m = bf->bf_m; in ath_rxbuf_init()
2885 bf->bf_m = m; in ath_rxbuf_init()
2889 bf->bf_dmamap, m, in ath_rxbuf_init()
2898 KASSERTMSG(bf->bf_nseg == 1, in ath_rxbuf_init()
2899 "multi-segment packet; nseg %u", bf->bf_nseg); in ath_rxbuf_init()
2901 bus_dmamap_sync(sc->sc_dmat, bf->bf_dmamap, 0, in ath_rxbuf_init()
2902 bf->bf_dmamap->dm_mapsize, BUS_DMASYNC_PREREAD); in ath_rxbuf_init()
2919 ds = bf->bf_desc; in ath_rxbuf_init()
2920 ds->ds_link = HTOAH32(bf->bf_daddr); /* link to self */ in ath_rxbuf_init()
2921 ds->ds_data = bf->bf_segs[0].ds_addr; in ath_rxbuf_init()
2929 *sc->sc_rxlink = bf->bf_daddr; in ath_rxbuf_init()
3041 struct ath_buf *bf; in ath_rx_proc() local
3072 bf = STAILQ_FIRST(&sc->sc_rxbuf); in ath_rx_proc()
3073 if (bf == NULL) { /* NB: shouldn't happen */ in ath_rx_proc()
3077 ds = bf->bf_desc; in ath_rx_proc()
3078 if (ds->ds_link == bf->bf_daddr) { in ath_rx_proc()
3082 m = bf->bf_m; in ath_rx_proc()
3100 bf->bf_daddr, PA2DESC(sc, ds->ds_link), in ath_rx_proc()
3104 ath_printrxbuf(bf, status == HAL_OK); in ath_rx_proc()
3157 bf->bf_dmamap, in ath_rx_proc()
3158 0, bf->bf_dmamap->dm_mapsize, in ath_rx_proc()
3184 bus_dmamap_sync(sc->sc_dmat, bf->bf_dmamap, in ath_rx_proc()
3185 0, bf->bf_dmamap->dm_mapsize, in ath_rx_proc()
3187 bus_dmamap_unload(sc->sc_dmat, bf->bf_dmamap); in ath_rx_proc()
3188 bf->bf_m = NULL; in ath_rx_proc()
3308 STAILQ_INSERT_TAIL(&sc->sc_rxbuf, bf, bf_list); in ath_rx_proc()
3309 } while (ath_rxbuf_init(sc, bf) == 0); in ath_rx_proc()
3610 ath_tx_start(struct ath_softc *sc, struct ieee80211_node *ni, struct ath_buf *bf, in ath_tx_start() argument
3697 error = bus_dmamap_load_mbuf(sc->sc_dmat, bf->bf_dmamap, m0, in ath_tx_start()
3701 bf->bf_nseg = ATH_TXDESC+1; in ath_tx_start()
3721 error = bus_dmamap_load_mbuf(sc->sc_dmat, bf->bf_dmamap, m0, in ath_tx_start()
3728 KASSERTMSG(bf->bf_nseg <= ATH_TXDESC, in ath_tx_start()
3729 "too many segments after defrag; nseg %u", bf->bf_nseg); in ath_tx_start()
3730 } else if (bf->bf_nseg == 0) { /* null packet, discard */ in ath_tx_start()
3736 bus_dmamap_sync(sc->sc_dmat, bf->bf_dmamap, 0, in ath_tx_start()
3737 bf->bf_dmamap->dm_mapsize, BUS_DMASYNC_PREWRITE); in ath_tx_start()
3738 bf->bf_m = m0; in ath_tx_start()
3739 bf->bf_node = ni; /* NB: held reference */ in ath_tx_start()
3742 ds = bf->bf_desc; in ath_tx_start()
4039 bf->bf_flags = flags; in ath_tx_start()
4054 for (i = 0; i < bf->bf_nseg; i++, ds++) { in ath_tx_start()
4055 ds->ds_data = bf->bf_segs[i].ds_addr; in ath_tx_start()
4056 if (i == bf->bf_nseg - 1) in ath_tx_start()
4059 ds->ds_link = bf->bf_daddr + sizeof(*ds) * (i + 1); in ath_tx_start()
4061 , bf->bf_segs[i].ds_len /* segment length */ in ath_tx_start()
4063 , i == bf->bf_nseg - 1 /* last segment */ in ath_tx_start()
4082 ATH_TXQ_INSERT_TAIL(txq, bf, bf_list); in ath_tx_start()
4084 ath_hal_puttxbuf(ah, txq->axq_qnum, bf->bf_daddr); in ath_tx_start()
4087 txq->axq_qnum, (uint64_t)bf->bf_daddr, bf->bf_desc, in ath_tx_start()
4090 *txq->axq_link = HTOAH32(bf->bf_daddr); in ath_tx_start()
4094 (uint64_t)bf->bf_daddr, bf->bf_desc, txq->axq_depth); in ath_tx_start()
4096 txq->axq_link = &bf->bf_desc[bf->bf_nseg - 1].ds_link; in ath_tx_start()
4116 struct ath_buf *bf; in ath_tx_processq() local
4131 bf = STAILQ_FIRST(&txq->axq_q); in ath_tx_processq()
4132 if (bf == NULL) { in ath_tx_processq()
4137 ds0 = &bf->bf_desc[0]; in ath_tx_processq()
4138 ds = &bf->bf_desc[bf->bf_nseg - 1]; in ath_tx_processq()
4141 ath_printtxbuf(bf, status == HAL_OK); in ath_tx_processq()
4149 ni = bf->bf_node; in ath_tx_processq()
4162 pri = M_WME_GETAC(bf->bf_m); in ath_tx_processq()
4182 (bf->bf_flags & HAL_TXDESC_NOACK) == 0) { in ath_tx_processq()
4200 bus_dmamap_sync(sc->sc_dmat, bf->bf_dmamap, 0, in ath_tx_processq()
4201 bf->bf_dmamap->dm_mapsize, BUS_DMASYNC_POSTWRITE); in ath_tx_processq()
4202 bus_dmamap_unload(sc->sc_dmat, bf->bf_dmamap); in ath_tx_processq()
4203 m_freem(bf->bf_m); in ath_tx_processq()
4204 bf->bf_m = NULL; in ath_tx_processq()
4205 bf->bf_node = NULL; in ath_tx_processq()
4208 STAILQ_INSERT_TAIL(&sc->sc_txbuf, bf, bf_list); in ath_tx_processq()
4339 struct ath_buf *bf; in ath_tx_draintxq() local
4348 bf = STAILQ_FIRST(&txq->axq_q); in ath_tx_draintxq()
4349 if (bf == NULL) { in ath_tx_draintxq()
4356 ds = &bf->bf_desc[bf->bf_nseg - 1]; in ath_tx_draintxq()
4358 ath_printtxbuf(bf, in ath_tx_draintxq()
4359 ath_hal_txprocdesc(ah, bf->bf_desc, in ath_tx_draintxq()
4361 bus_dmamap_unload(sc->sc_dmat, bf->bf_dmamap); in ath_tx_draintxq()
4362 m_freem(bf->bf_m); in ath_tx_draintxq()
4363 bf->bf_m = NULL; in ath_tx_draintxq()
4364 ni = bf->bf_node; in ath_tx_draintxq()
4365 bf->bf_node = NULL; in ath_tx_draintxq()
4373 STAILQ_INSERT_TAIL(&sc->sc_txbuf, bf, bf_list); in ath_tx_draintxq()
4432 struct ath_buf *bf; in ath_stoprecv() local
4436 STAILQ_FOREACH(bf, &sc->sc_rxbuf, bf_list) { in ath_stoprecv()
4437 struct ath_desc *ds = bf->bf_desc; in ath_stoprecv()
4439 bf->bf_daddr, PA2DESC(sc, ds->ds_link), in ath_stoprecv()
4442 ath_printrxbuf(bf, status == HAL_OK); in ath_stoprecv()
4456 struct ath_buf *bf; in ath_startrecv() local
4459 STAILQ_FOREACH(bf, &sc->sc_rxbuf, bf_list) { in ath_startrecv()
4460 int error = ath_rxbuf_init(sc, bf); in ath_startrecv()
4469 bf = STAILQ_FIRST(&sc->sc_rxbuf); in ath_startrecv()
4470 ath_hal_putrxbuf(ah, bf->bf_daddr); in ath_startrecv()
5232 ath_printrxbuf(struct ath_buf *bf, int done) in ath_printrxbuf() argument
5237 for (i = 0, ds = bf->bf_desc; i < bf->bf_nseg; i++, ds++) { in ath_printrxbuf()
5240 (uint64_t)bf->bf_daddr + sizeof (struct ath_desc) * i, in ath_printrxbuf()
5250 ath_printtxbuf(struct ath_buf *bf, int done) in ath_printtxbuf() argument
5255 for (i = 0, ds = bf->bf_desc; i < bf->bf_nseg; i++, ds++) { in ath_printtxbuf()
5259 (uint64_t)bf->bf_daddr + sizeof (struct ath_desc) * i, in ath_printtxbuf()