Lines Matching full:bf

243 static	void mwl_printrxbuf(const struct mwl_rxbuf *bf, u_int ix);
244 static void mwl_printtxbuf(const struct mwl_txbuf *bf, u_int qnum, u_int ix);
1266 struct mwl_txbuf *bf; in mwl_gettxbuf() local
1272 bf = STAILQ_FIRST(&txq->free); in mwl_gettxbuf()
1273 if (bf != NULL) { in mwl_gettxbuf()
1278 if (bf == NULL) in mwl_gettxbuf()
1281 return bf; in mwl_gettxbuf()
1291 mwl_puttxbuf_head(struct mwl_txq *txq, struct mwl_txbuf *bf) in mwl_puttxbuf_head() argument
1293 bf->bf_m = NULL; in mwl_puttxbuf_head()
1294 bf->bf_node = NULL; in mwl_puttxbuf_head()
1296 STAILQ_INSERT_HEAD(&txq->free, bf, bf_list); in mwl_puttxbuf_head()
1302 mwl_puttxbuf_tail(struct mwl_txq *txq, struct mwl_txbuf *bf) in mwl_puttxbuf_tail() argument
1304 bf->bf_m = NULL; in mwl_puttxbuf_tail()
1305 bf->bf_node = NULL; in mwl_puttxbuf_tail()
1307 STAILQ_INSERT_TAIL(&txq->free, bf, bf_list); in mwl_puttxbuf_tail()
1337 struct mwl_txbuf *bf; in mwl_start() local
1358 bf = mwl_gettxbuf(sc, txq); in mwl_start()
1359 if (bf == NULL) { in mwl_start()
1376 if (mwl_tx_start(sc, ni, bf, m)) { in mwl_start()
1379 mwl_puttxbuf_head(txq, bf); in mwl_start()
1417 struct mwl_txbuf *bf; in mwl_raw_xmit() local
1433 bf = mwl_gettxbuf(sc, txq); in mwl_raw_xmit()
1434 if (bf == NULL) { in mwl_raw_xmit()
1442 if (mwl_tx_start(sc, ni, bf, m)) { in mwl_raw_xmit()
1443 mwl_puttxbuf_head(txq, bf); in mwl_raw_xmit()
2007 struct mwl_txbuf *bf; in mwl_txq_reset() local
2010 bf = txq->dma.dd_bufptr; in mwl_txq_reset()
2012 for (i = 0; i < mwl_txbuf; i++, bf++) in mwl_txq_reset()
2013 STAILQ_INSERT_TAIL(&txq->free, bf, bf_list); in mwl_txq_reset()
2024 struct mwl_txbuf *bf; in mwl_txdma_setup() local
2035 bf = malloc(bsize, M_MWLDEV, M_NOWAIT | M_ZERO); in mwl_txdma_setup()
2036 if (bf == NULL) { in mwl_txdma_setup()
2041 txq->dma.dd_bufptr = bf; in mwl_txdma_setup()
2044 for (i = 0; i < mwl_txbuf; i++, bf++, ds += MWL_TXDESC) { in mwl_txdma_setup()
2045 bf->bf_desc = ds; in mwl_txdma_setup()
2046 bf->bf_daddr = DS2PHYS(&txq->dma, ds); in mwl_txdma_setup()
2048 &bf->bf_dmamap); in mwl_txdma_setup()
2062 struct mwl_txbuf *bf; in mwl_txdma_cleanup() local
2065 bf = txq->dma.dd_bufptr; in mwl_txdma_cleanup()
2066 for (i = 0; i < mwl_txbuf; i++, bf++) { in mwl_txdma_cleanup()
2067 KASSERT(bf->bf_m == NULL, ("mbuf on free list")); in mwl_txdma_cleanup()
2068 KASSERT(bf->bf_node == NULL, ("node on free list")); in mwl_txdma_cleanup()
2069 if (bf->bf_dmamap != NULL) in mwl_txdma_cleanup()
2070 bus_dmamap_destroy(sc->sc_dmat, bf->bf_dmamap); in mwl_txdma_cleanup()
2086 struct mwl_rxbuf *bf; in mwl_rxdma_setup() local
2155 bf = malloc(bsize, M_MWLDEV, M_NOWAIT | M_ZERO); in mwl_rxdma_setup()
2156 if (bf == NULL) { in mwl_rxdma_setup()
2160 sc->sc_rxdma.dd_bufptr = bf; in mwl_rxdma_setup()
2164 for (i = 0; i < mwl_rxdesc; i++, bf++, ds++) { in mwl_rxdma_setup()
2165 bf->bf_desc = ds; in mwl_rxdma_setup()
2166 bf->bf_daddr = DS2PHYS(&sc->sc_rxdma, ds); in mwl_rxdma_setup()
2168 bf->bf_data = ((uint8_t *)sc->sc_rxmem) + (i*jumbosize); in mwl_rxdma_setup()
2170 STAILQ_INSERT_TAIL(&sc->sc_rxbuf, bf, bf_list); in mwl_rxdma_setup()
2482 mwl_rxbuf_init(struct mwl_softc *sc, struct mwl_rxbuf *bf) in mwl_rxbuf_init() argument
2486 ds = bf->bf_desc; in mwl_rxbuf_init()
2487 if (bf->bf_data == NULL) { in mwl_rxbuf_init()
2488 bf->bf_data = mwl_getrxdma(sc); in mwl_rxbuf_init()
2489 if (bf->bf_data == NULL) { in mwl_rxbuf_init()
2512 ds->pPhysBuffData = htole32(MWL_JUMBO_DMA_ADDR(sc, bf->bf_data)); in mwl_rxbuf_init()
2606 struct mwl_rxbuf *bf; in mwl_rx_proc() local
2621 bf = sc->sc_rxnext; in mwl_rx_proc()
2623 if (bf == NULL) in mwl_rx_proc()
2624 bf = STAILQ_FIRST(&sc->sc_rxbuf); in mwl_rx_proc()
2625 ds = bf->bf_desc; in mwl_rx_proc()
2626 data = bf->bf_data; in mwl_rx_proc()
2637 (void) mwl_rxbuf_init(sc, bf); in mwl_rx_proc()
2647 mwl_printrxbuf(bf, 0); in mwl_rx_proc()
2736 bf->bf_data = newdata; in mwl_rx_proc()
2809 (void) mwl_rxbuf_init(sc, bf); in mwl_rx_proc()
2810 bf = STAILQ_NEXT(bf, bf_list); in mwl_rx_proc()
2813 sc->sc_rxnext = bf; in mwl_rx_proc()
2825 struct mwl_txbuf *bf, *bn; in mwl_txq_init() local
2835 STAILQ_FOREACH(bf, &txq->free, bf_list) { in mwl_txq_init()
2836 bf->bf_txq = txq; in mwl_txq_init()
2838 ds = bf->bf_desc; in mwl_txq_init()
2839 bn = STAILQ_NEXT(bf, bf_list); in mwl_txq_init()
2943 mwl_tx_dmasetup(struct mwl_softc *sc, struct mwl_txbuf *bf, struct mbuf *m0) in mwl_tx_dmasetup() argument
2952 error = bus_dmamap_load_mbuf_sg(sc->sc_dmat, bf->bf_dmamap, m0, in mwl_tx_dmasetup()
2953 bf->bf_segs, &bf->bf_nseg, in mwl_tx_dmasetup()
2957 bf->bf_nseg = MWL_TXDESC+1; in mwl_tx_dmasetup()
2981 error = bus_dmamap_load_mbuf_sg(sc->sc_dmat, bf->bf_dmamap, m0, in mwl_tx_dmasetup()
2982 bf->bf_segs, &bf->bf_nseg, in mwl_tx_dmasetup()
2989 KASSERT(bf->bf_nseg <= MWL_TXDESC, in mwl_tx_dmasetup()
2990 ("too many segments after defrag; nseg %u", bf->bf_nseg)); in mwl_tx_dmasetup()
2991 } else if (bf->bf_nseg == 0) { /* null packet, discard */ in mwl_tx_dmasetup()
2998 bus_dmamap_sync(sc->sc_dmat, bf->bf_dmamap, BUS_DMASYNC_PREWRITE); in mwl_tx_dmasetup()
2999 bf->bf_m = m0; in mwl_tx_dmasetup()
3065 mwl_tx_start(struct mwl_softc *sc, struct ieee80211_node *ni, struct mwl_txbuf *bf, in mwl_tx_start() argument
3183 error = mwl_tx_dmasetup(sc, bf, m0); in mwl_tx_start()
3190 bf->bf_node = ni; /* NB: held reference */ in mwl_tx_start()
3191 m0 = bf->bf_m; /* NB: may have changed */ in mwl_tx_start()
3198 ds = bf->bf_desc; in mwl_tx_start()
3199 txq = bf->bf_txq; in mwl_tx_start()
3209 ds->PktPtr = htole32(bf->bf_segs[0].ds_addr); in mwl_tx_start()
3210 ds->PktLen = htole16(bf->bf_segs[0].ds_len); in mwl_tx_start()
3212 ds->multiframes = htole32(bf->bf_nseg); in mwl_tx_start()
3214 for (i = 0; i < bf->bf_nseg; i++) { in mwl_tx_start()
3215 ds->PktPtrArray[i] = htole32(bf->bf_segs[i].ds_addr); in mwl_tx_start()
3216 ds->PktLenArray[i] = htole16(bf->bf_segs[i].ds_len); in mwl_tx_start()
3294 STAILQ_INSERT_TAIL(&txq->active, bf, bf_list); in mwl_tx_start()
3320 struct mwl_txbuf *bf; in mwl_tx_processq() local
3329 bf = STAILQ_FIRST(&txq->active); in mwl_tx_processq()
3330 if (bf == NULL) { in mwl_tx_processq()
3334 ds = bf->bf_desc; in mwl_tx_processq()
3346 mwl_printtxbuf(bf, txq->qnum, nreaped); in mwl_tx_processq()
3348 ni = bf->bf_node; in mwl_tx_processq()
3379 if (bf->bf_m->m_flags & M_FF) in mwl_tx_processq()
3382 if (bf->bf_m->m_flags & M_TXCB) in mwl_tx_processq()
3384 m_adj(bf->bf_m, sizeof(uint16_t)); in mwl_tx_processq()
3385 ieee80211_tx_complete(ni, bf->bf_m, in mwl_tx_processq()
3388 m_freem(bf->bf_m); in mwl_tx_processq()
3391 bus_dmamap_sync(sc->sc_dmat, bf->bf_dmamap, in mwl_tx_processq()
3393 bus_dmamap_unload(sc->sc_dmat, bf->bf_dmamap); in mwl_tx_processq()
3395 mwl_puttxbuf_tail(txq, bf); in mwl_tx_processq()
3438 struct mwl_txbuf *bf; in mwl_tx_draintxq() local
3447 bf = STAILQ_FIRST(&txq->active); in mwl_tx_draintxq()
3448 if (bf == NULL) { in mwl_tx_draintxq()
3458 mtod(bf->bf_m, const struct mwltxrec *); in mwl_tx_draintxq()
3459 mwl_printtxbuf(bf, txq->qnum, ix); in mwl_tx_draintxq()
3461 bf->bf_m->m_len - sizeof(tr->fwlen), 0, -1); in mwl_tx_draintxq()
3464 bus_dmamap_unload(sc->sc_dmat, bf->bf_dmamap); in mwl_tx_draintxq()
3465 ni = bf->bf_node; in mwl_tx_draintxq()
3472 m_freem(bf->bf_m); in mwl_tx_draintxq()
3474 mwl_puttxbuf_tail(txq, bf); in mwl_tx_draintxq()
3516 struct mwl_txbuf *bf; in mwl_cleartxq() local
3522 STAILQ_FOREACH(bf, &txq->active, bf_list) { in mwl_cleartxq()
3523 struct ieee80211_node *ni = bf->bf_node; in mwl_cleartxq()
3525 bf->bf_node = NULL; in mwl_cleartxq()
3719 struct mwl_rxbuf *bf, *prev; in mwl_startrecv() local
3723 STAILQ_FOREACH(bf, &sc->sc_rxbuf, bf_list) { in mwl_startrecv()
3724 int error = mwl_rxbuf_init(sc, bf); in mwl_startrecv()
3733 ds->pPhysNext = htole32(bf->bf_daddr); in mwl_startrecv()
3735 prev = bf; in mwl_startrecv()
4478 mwl_printrxbuf(const struct mwl_rxbuf *bf, u_int ix) in mwl_printrxbuf() argument
4480 const struct mwl_rxdesc *ds = bf->bf_desc; in mwl_printrxbuf()
4485 ix, ds, (uintmax_t)bf->bf_daddr, le32toh(ds->pPhysNext), in mwl_printrxbuf()
4494 mwl_printtxbuf(const struct mwl_txbuf *bf, u_int qnum, u_int ix) in mwl_printtxbuf() argument
4496 const struct mwl_txdesc *ds = bf->bf_desc; in mwl_printtxbuf()
4500 printf(" (DS.V:%p DS.P:0x%jx)\n", ds, (uintmax_t)bf->bf_daddr); in mwl_printtxbuf()
4540 struct mwl_txbuf *bf;
4544 STAILQ_FOREACH(bf, &txq->active, bf_list) {
4545 struct mwl_txdesc *ds = bf->bf_desc;
4549 mwl_printtxbuf(bf, txq->qnum, i);