Lines Matching defs:bf

246 static	void mwl_printrxbuf(const struct mwl_rxbuf *bf, u_int ix);
247 static void mwl_printtxbuf(const struct mwl_txbuf *bf, u_int qnum, u_int ix);
1271 struct mwl_txbuf *bf;
1277 bf = STAILQ_FIRST(&txq->free);
1278 if (bf != NULL) {
1283 if (bf == NULL)
1286 return bf;
1296 mwl_puttxbuf_head(struct mwl_txq *txq, struct mwl_txbuf *bf)
1298 bf->bf_m = NULL;
1299 bf->bf_node = NULL;
1301 STAILQ_INSERT_HEAD(&txq->free, bf, bf_list);
1307 mwl_puttxbuf_tail(struct mwl_txq *txq, struct mwl_txbuf *bf)
1309 bf->bf_m = NULL;
1310 bf->bf_node = NULL;
1312 STAILQ_INSERT_TAIL(&txq->free, bf, bf_list);
1342 struct mwl_txbuf *bf;
1363 bf = mwl_gettxbuf(sc, txq);
1364 if (bf == NULL) {
1381 if (mwl_tx_start(sc, ni, bf, m)) {
1384 mwl_puttxbuf_head(txq, bf);
1422 struct mwl_txbuf *bf;
1438 bf = mwl_gettxbuf(sc, txq);
1439 if (bf == NULL) {
1447 if (mwl_tx_start(sc, ni, bf, m)) {
1448 mwl_puttxbuf_head(txq, bf);
2013 struct mwl_txbuf *bf;
2016 bf = txq->dma.dd_bufptr;
2018 for (i = 0; i < mwl_txbuf; i++, bf++)
2019 STAILQ_INSERT_TAIL(&txq->free, bf, bf_list);
2030 struct mwl_txbuf *bf;
2041 bf = malloc(bsize, M_MWLDEV, M_NOWAIT | M_ZERO);
2042 if (bf == NULL) {
2047 txq->dma.dd_bufptr = bf;
2050 for (i = 0; i < mwl_txbuf; i++, bf++, ds += MWL_TXDESC) {
2051 bf->bf_desc = ds;
2052 bf->bf_daddr = DS2PHYS(&txq->dma, ds);
2054 &bf->bf_dmamap);
2068 struct mwl_txbuf *bf;
2071 bf = txq->dma.dd_bufptr;
2072 for (i = 0; i < mwl_txbuf; i++, bf++) {
2073 KASSERT(bf->bf_m == NULL, ("mbuf on free list"));
2074 KASSERT(bf->bf_node == NULL, ("node on free list"));
2075 if (bf->bf_dmamap != NULL)
2076 bus_dmamap_destroy(sc->sc_dmat, bf->bf_dmamap);
2092 struct mwl_rxbuf *bf;
2161 bf = malloc(bsize, M_MWLDEV, M_NOWAIT | M_ZERO);
2162 if (bf == NULL) {
2166 sc->sc_rxdma.dd_bufptr = bf;
2170 for (i = 0; i < mwl_rxdesc; i++, bf++, ds++) {
2171 bf->bf_desc = ds;
2172 bf->bf_daddr = DS2PHYS(&sc->sc_rxdma, ds);
2174 bf->bf_data = ((uint8_t *)sc->sc_rxmem) + (i*jumbosize);
2176 STAILQ_INSERT_TAIL(&sc->sc_rxbuf, bf, bf_list);
2488 mwl_rxbuf_init(struct mwl_softc *sc, struct mwl_rxbuf *bf)
2492 ds = bf->bf_desc;
2493 if (bf->bf_data == NULL) {
2494 bf->bf_data = mwl_getrxdma(sc);
2495 if (bf->bf_data == NULL) {
2518 ds->pPhysBuffData = htole32(MWL_JUMBO_DMA_ADDR(sc, bf->bf_data));
2613 struct mwl_rxbuf *bf;
2628 bf = sc->sc_rxnext;
2630 if (bf == NULL)
2631 bf = STAILQ_FIRST(&sc->sc_rxbuf);
2632 ds = bf->bf_desc;
2633 data = bf->bf_data;
2644 (void) mwl_rxbuf_init(sc, bf);
2654 mwl_printrxbuf(bf, 0);
2743 bf->bf_data = newdata;
2816 (void) mwl_rxbuf_init(sc, bf);
2817 bf = STAILQ_NEXT(bf, bf_list);
2820 sc->sc_rxnext = bf;
2832 struct mwl_txbuf *bf, *bn;
2842 STAILQ_FOREACH(bf, &txq->free, bf_list) {
2843 bf->bf_txq = txq;
2845 ds = bf->bf_desc;
2846 bn = STAILQ_NEXT(bf, bf_list);
2950 mwl_tx_dmasetup(struct mwl_softc *sc, struct mwl_txbuf *bf, struct mbuf *m0)
2959 error = bus_dmamap_load_mbuf_sg(sc->sc_dmat, bf->bf_dmamap, m0,
2960 bf->bf_segs, &bf->bf_nseg,
2964 bf->bf_nseg = MWL_TXDESC+1;
2988 error = bus_dmamap_load_mbuf_sg(sc->sc_dmat, bf->bf_dmamap, m0,
2989 bf->bf_segs, &bf->bf_nseg,
2996 KASSERT(bf->bf_nseg <= MWL_TXDESC,
2997 ("too many segments after defrag; nseg %u", bf->bf_nseg));
2998 } else if (bf->bf_nseg == 0) { /* null packet, discard */
3005 bus_dmamap_sync(sc->sc_dmat, bf->bf_dmamap, BUS_DMASYNC_PREWRITE);
3006 bf->bf_m = m0;
3072 mwl_tx_start(struct mwl_softc *sc, struct ieee80211_node *ni, struct mwl_txbuf *bf,
3191 error = mwl_tx_dmasetup(sc, bf, m0);
3198 bf->bf_node = ni; /* NB: held reference */
3199 m0 = bf->bf_m; /* NB: may have changed */
3206 ds = bf->bf_desc;
3207 txq = bf->bf_txq;
3217 ds->PktPtr = htole32(bf->bf_segs[0].ds_addr);
3218 ds->PktLen = htole16(bf->bf_segs[0].ds_len);
3220 ds->multiframes = htole32(bf->bf_nseg);
3222 for (i = 0; i < bf->bf_nseg; i++) {
3223 ds->PktPtrArray[i] = htole32(bf->bf_segs[i].ds_addr);
3224 ds->PktLenArray[i] = htole16(bf->bf_segs[i].ds_len);
3302 STAILQ_INSERT_TAIL(&txq->active, bf, bf_list);
3328 struct mwl_txbuf *bf;
3338 bf = STAILQ_FIRST(&txq->active);
3339 if (bf == NULL) {
3343 ds = bf->bf_desc;
3355 mwl_printtxbuf(bf, txq->qnum, nreaped);
3357 ni = bf->bf_node;
3388 if (bf->bf_m->m_flags & M_FF)
3391 if (bf->bf_m->m_flags & M_TXCB)
3393 m_adj(bf->bf_m, sizeof(uint16_t));
3394 ieee80211_tx_complete(ni, bf->bf_m,
3397 m_freem(bf->bf_m);
3400 bus_dmamap_sync(sc->sc_dmat, bf->bf_dmamap,
3402 bus_dmamap_unload(sc->sc_dmat, bf->bf_dmamap);
3404 mwl_puttxbuf_tail(txq, bf);
3447 struct mwl_txbuf *bf;
3456 bf = STAILQ_FIRST(&txq->active);
3457 if (bf == NULL) {
3467 mtod(bf->bf_m, const struct mwltxrec *);
3468 mwl_printtxbuf(bf, txq->qnum, ix);
3470 bf->bf_m->m_len - sizeof(tr->fwlen), 0, -1);
3473 bus_dmamap_unload(sc->sc_dmat, bf->bf_dmamap);
3474 ni = bf->bf_node;
3481 m_freem(bf->bf_m);
3483 mwl_puttxbuf_tail(txq, bf);
3525 struct mwl_txbuf *bf;
3531 STAILQ_FOREACH(bf, &txq->active, bf_list) {
3532 struct ieee80211_node *ni = bf->bf_node;
3534 bf->bf_node = NULL;
3728 struct mwl_rxbuf *bf, *prev;
3732 STAILQ_FOREACH(bf, &sc->sc_rxbuf, bf_list) {
3733 int error = mwl_rxbuf_init(sc, bf);
3742 ds->pPhysNext = htole32(bf->bf_daddr);
3744 prev = bf;
4487 mwl_printrxbuf(const struct mwl_rxbuf *bf, u_int ix)
4489 const struct mwl_rxdesc *ds = bf->bf_desc;
4494 ix, ds, (uintmax_t)bf->bf_daddr, le32toh(ds->pPhysNext),
4503 mwl_printtxbuf(const struct mwl_txbuf *bf, u_int qnum, u_int ix)
4505 const struct mwl_txdesc *ds = bf->bf_desc;
4509 printf(" (DS.V:%p DS.P:0x%jx)\n", ds, (uintmax_t)bf->bf_daddr);
4549 struct mwl_txbuf *bf;
4553 STAILQ_FOREACH(bf, &txq->active, bf_list) {
4554 struct mwl_txdesc *ds = bf->bf_desc;
4558 mwl_printtxbuf(bf, txq->qnum, i);