Lines Matching defs: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);
1264 struct mwl_txbuf *bf;
1270 bf = STAILQ_FIRST(&txq->free);
1271 if (bf != NULL) {
1276 if (bf == NULL)
1279 return bf;
1289 mwl_puttxbuf_head(struct mwl_txq *txq, struct mwl_txbuf *bf)
1291 bf->bf_m = NULL;
1292 bf->bf_node = NULL;
1294 STAILQ_INSERT_HEAD(&txq->free, bf, bf_list);
1300 mwl_puttxbuf_tail(struct mwl_txq *txq, struct mwl_txbuf *bf)
1302 bf->bf_m = NULL;
1303 bf->bf_node = NULL;
1305 STAILQ_INSERT_TAIL(&txq->free, bf, bf_list);
1335 struct mwl_txbuf *bf;
1356 bf = mwl_gettxbuf(sc, txq);
1357 if (bf == NULL) {
1374 if (mwl_tx_start(sc, ni, bf, m)) {
1377 mwl_puttxbuf_head(txq, bf);
1415 struct mwl_txbuf *bf;
1431 bf = mwl_gettxbuf(sc, txq);
1432 if (bf == NULL) {
1440 if (mwl_tx_start(sc, ni, bf, m)) {
1441 mwl_puttxbuf_head(txq, bf);
2005 struct mwl_txbuf *bf;
2008 bf = txq->dma.dd_bufptr;
2010 for (i = 0; i < mwl_txbuf; i++, bf++)
2011 STAILQ_INSERT_TAIL(&txq->free, bf, bf_list);
2022 struct mwl_txbuf *bf;
2033 bf = malloc(bsize, M_MWLDEV, M_NOWAIT | M_ZERO);
2034 if (bf == NULL) {
2039 txq->dma.dd_bufptr = bf;
2042 for (i = 0; i < mwl_txbuf; i++, bf++, ds += MWL_TXDESC) {
2043 bf->bf_desc = ds;
2044 bf->bf_daddr = DS2PHYS(&txq->dma, ds);
2046 &bf->bf_dmamap);
2060 struct mwl_txbuf *bf;
2063 bf = txq->dma.dd_bufptr;
2064 for (i = 0; i < mwl_txbuf; i++, bf++) {
2065 KASSERT(bf->bf_m == NULL, ("mbuf on free list"));
2066 KASSERT(bf->bf_node == NULL, ("node on free list"));
2067 if (bf->bf_dmamap != NULL)
2068 bus_dmamap_destroy(sc->sc_dmat, bf->bf_dmamap);
2084 struct mwl_rxbuf *bf;
2153 bf = malloc(bsize, M_MWLDEV, M_NOWAIT | M_ZERO);
2154 if (bf == NULL) {
2158 sc->sc_rxdma.dd_bufptr = bf;
2162 for (i = 0; i < mwl_rxdesc; i++, bf++, ds++) {
2163 bf->bf_desc = ds;
2164 bf->bf_daddr = DS2PHYS(&sc->sc_rxdma, ds);
2166 bf->bf_data = ((uint8_t *)sc->sc_rxmem) + (i*jumbosize);
2168 STAILQ_INSERT_TAIL(&sc->sc_rxbuf, bf, bf_list);
2480 mwl_rxbuf_init(struct mwl_softc *sc, struct mwl_rxbuf *bf)
2484 ds = bf->bf_desc;
2485 if (bf->bf_data == NULL) {
2486 bf->bf_data = mwl_getrxdma(sc);
2487 if (bf->bf_data == NULL) {
2510 ds->pPhysBuffData = htole32(MWL_JUMBO_DMA_ADDR(sc, bf->bf_data));
2604 struct mwl_rxbuf *bf;
2619 bf = sc->sc_rxnext;
2621 if (bf == NULL)
2622 bf = STAILQ_FIRST(&sc->sc_rxbuf);
2623 ds = bf->bf_desc;
2624 data = bf->bf_data;
2635 (void) mwl_rxbuf_init(sc, bf);
2645 mwl_printrxbuf(bf, 0);
2734 bf->bf_data = newdata;
2807 (void) mwl_rxbuf_init(sc, bf);
2808 bf = STAILQ_NEXT(bf, bf_list);
2811 sc->sc_rxnext = bf;
2823 struct mwl_txbuf *bf, *bn;
2833 STAILQ_FOREACH(bf, &txq->free, bf_list) {
2834 bf->bf_txq = txq;
2836 ds = bf->bf_desc;
2837 bn = STAILQ_NEXT(bf, bf_list);
2941 mwl_tx_dmasetup(struct mwl_softc *sc, struct mwl_txbuf *bf, struct mbuf *m0)
2950 error = bus_dmamap_load_mbuf_sg(sc->sc_dmat, bf->bf_dmamap, m0,
2951 bf->bf_segs, &bf->bf_nseg,
2955 bf->bf_nseg = MWL_TXDESC+1;
2979 error = bus_dmamap_load_mbuf_sg(sc->sc_dmat, bf->bf_dmamap, m0,
2980 bf->bf_segs, &bf->bf_nseg,
2987 KASSERT(bf->bf_nseg <= MWL_TXDESC,
2988 ("too many segments after defrag; nseg %u", bf->bf_nseg));
2989 } else if (bf->bf_nseg == 0) { /* null packet, discard */
2996 bus_dmamap_sync(sc->sc_dmat, bf->bf_dmamap, BUS_DMASYNC_PREWRITE);
2997 bf->bf_m = m0;
3063 mwl_tx_start(struct mwl_softc *sc, struct ieee80211_node *ni, struct mwl_txbuf *bf,
3179 error = mwl_tx_dmasetup(sc, bf, m0);
3186 bf->bf_node = ni; /* NB: held reference */
3187 m0 = bf->bf_m; /* NB: may have changed */
3194 ds = bf->bf_desc;
3195 txq = bf->bf_txq;
3205 ds->PktPtr = htole32(bf->bf_segs[0].ds_addr);
3206 ds->PktLen = htole16(bf->bf_segs[0].ds_len);
3208 ds->multiframes = htole32(bf->bf_nseg);
3210 for (i = 0; i < bf->bf_nseg; i++) {
3211 ds->PktPtrArray[i] = htole32(bf->bf_segs[i].ds_addr);
3212 ds->PktLenArray[i] = htole16(bf->bf_segs[i].ds_len);
3290 STAILQ_INSERT_TAIL(&txq->active, bf, bf_list);
3316 struct mwl_txbuf *bf;
3325 bf = STAILQ_FIRST(&txq->active);
3326 if (bf == NULL) {
3330 ds = bf->bf_desc;
3342 mwl_printtxbuf(bf, txq->qnum, nreaped);
3344 ni = bf->bf_node;
3374 if (bf->bf_m->m_flags & M_FF)
3377 if (bf->bf_m->m_flags & M_TXCB)
3379 m_adj(bf->bf_m, sizeof(uint16_t));
3380 ieee80211_tx_complete(ni, bf->bf_m,
3383 m_freem(bf->bf_m);
3386 bus_dmamap_sync(sc->sc_dmat, bf->bf_dmamap,
3388 bus_dmamap_unload(sc->sc_dmat, bf->bf_dmamap);
3390 mwl_puttxbuf_tail(txq, bf);
3433 struct mwl_txbuf *bf;
3442 bf = STAILQ_FIRST(&txq->active);
3443 if (bf == NULL) {
3453 mtod(bf->bf_m, const struct mwltxrec *);
3454 mwl_printtxbuf(bf, txq->qnum, ix);
3456 bf->bf_m->m_len - sizeof(tr->fwlen), 0, -1);
3459 bus_dmamap_unload(sc->sc_dmat, bf->bf_dmamap);
3460 ni = bf->bf_node;
3467 m_freem(bf->bf_m);
3469 mwl_puttxbuf_tail(txq, bf);
3511 struct mwl_txbuf *bf;
3517 STAILQ_FOREACH(bf, &txq->active, bf_list) {
3518 struct ieee80211_node *ni = bf->bf_node;
3520 bf->bf_node = NULL;
3714 struct mwl_rxbuf *bf, *prev;
3718 STAILQ_FOREACH(bf, &sc->sc_rxbuf, bf_list) {
3719 int error = mwl_rxbuf_init(sc, bf);
3728 ds->pPhysNext = htole32(bf->bf_daddr);
3730 prev = bf;
4473 mwl_printrxbuf(const struct mwl_rxbuf *bf, u_int ix)
4475 const struct mwl_rxdesc *ds = bf->bf_desc;
4480 ix, ds, (uintmax_t)bf->bf_daddr, le32toh(ds->pPhysNext),
4489 mwl_printtxbuf(const struct mwl_txbuf *bf, u_int qnum, u_int ix)
4491 const struct mwl_txdesc *ds = bf->bf_desc;
4495 printf(" (DS.V:%p DS.P:0x%jx)\n", ds, (uintmax_t)bf->bf_daddr);
4535 struct mwl_txbuf *bf;
4539 STAILQ_FOREACH(bf, &txq->active, bf_list) {
4540 struct mwl_txdesc *ds = bf->bf_desc;
4544 mwl_printtxbuf(bf, txq->qnum, i);