Lines Matching refs:bf

514 	struct malo_rxbuf *bf;
527 bf = malloc(bsize, M_MALODEV, M_NOWAIT | M_ZERO);
528 if (bf == NULL) {
533 sc->malo_rxdma.dd_bufptr = bf;
537 for (i = 0; i < malo_rxbuf; i++, bf++, ds++) {
538 bf->bf_desc = ds;
539 bf->bf_daddr = DS2PHYS(&sc->malo_rxdma, ds);
541 &bf->bf_dmamap);
549 STAILQ_INSERT_TAIL(&sc->malo_rxbuf, bf, bf_list);
558 struct malo_txbuf *bf;
569 bf = malloc(bsize, M_MALODEV, M_NOWAIT | M_ZERO);
570 if (bf == NULL) {
575 txq->dma.dd_bufptr = bf;
580 for (i = 0; i < malo_txbuf; i++, bf++, ds += MALO_TXDESC) {
581 bf->bf_desc = ds;
582 bf->bf_daddr = DS2PHYS(&txq->dma, ds);
584 &bf->bf_dmamap);
591 STAILQ_INSERT_TAIL(&txq->free, bf, bf_list);
611 struct malo_rxbuf *bf;
613 STAILQ_FOREACH(bf, &sc->malo_rxbuf, bf_list) {
614 if (bf->bf_m != NULL) {
615 m_freem(bf->bf_m);
616 bf->bf_m = NULL;
618 if (bf->bf_dmamap != NULL) {
619 bus_dmamap_destroy(sc->malo_dmat, bf->bf_dmamap);
620 bf->bf_dmamap = NULL;
635 struct malo_txbuf *bf;
638 STAILQ_FOREACH(bf, &txq->free, bf_list) {
639 if (bf->bf_m != NULL) {
640 m_freem(bf->bf_m);
641 bf->bf_m = NULL;
643 ni = bf->bf_node;
644 bf->bf_node = NULL;
651 if (bf->bf_dmamap != NULL) {
652 bus_dmamap_destroy(sc->malo_dmat, bf->bf_dmamap);
653 bf->bf_dmamap = NULL;
746 struct malo_txbuf *bf, *bn;
753 STAILQ_FOREACH(bf, &txq->free, bf_list) {
754 bf->bf_txq = txq;
756 ds = bf->bf_desc;
757 bn = STAILQ_NEXT(bf, bf_list);
781 struct malo_txbuf *bf;
784 bf = STAILQ_FIRST(&txq->free);
785 if (bf != NULL) {
790 if (bf == NULL) {
795 return bf;
799 malo_tx_dmasetup(struct malo_softc *sc, struct malo_txbuf *bf, struct mbuf *m0)
808 error = bus_dmamap_load_mbuf_sg(sc->malo_dmat, bf->bf_dmamap, m0,
809 bf->bf_segs, &bf->bf_nseg,
813 bf->bf_nseg = MALO_TXDESC + 1;
832 error = bus_dmamap_load_mbuf_sg(sc->malo_dmat, bf->bf_dmamap, m0,
833 bf->bf_segs, &bf->bf_nseg,
840 KASSERT(bf->bf_nseg <= MALO_TXDESC,
841 ("too many segments after defrag; nseg %u", bf->bf_nseg));
842 } else if (bf->bf_nseg == 0) { /* null packet, discard */
849 bus_dmamap_sync(sc->malo_dmat, bf->bf_dmamap, BUS_DMASYNC_PREWRITE);
850 bf->bf_m = m0;
857 malo_printrxbuf(const struct malo_rxbuf *bf, u_int ix)
859 const struct malo_rxdesc *ds = bf->bf_desc;
864 " RATE:%02x QOS:%04x\n", ix, ds, (uintmax_t)bf->bf_daddr,
874 malo_printtxbuf(const struct malo_txbuf *bf, u_int qnum, u_int ix)
876 const struct malo_txdesc *ds = bf->bf_desc;
880 printf(" (DS.V:%p DS.P:0x%jx)\n", ds, (uintmax_t)bf->bf_daddr);
927 struct malo_txbuf *bf;
937 bf = STAILQ_FIRST(&txq->active);
938 if (bf == NULL) {
942 ds = bf->bf_desc;
954 malo_printtxbuf(bf, txq->qnum, nreaped);
956 ni = bf->bf_node;
980 m_adj(bf->bf_m, sizeof(uint16_t));
981 ieee80211_tx_complete(ni, bf->bf_m,
984 m_freem(bf->bf_m);
989 bus_dmamap_sync(sc->malo_dmat, bf->bf_dmamap,
991 bus_dmamap_unload(sc->malo_dmat, bf->bf_dmamap);
992 bf->bf_m = NULL;
993 bf->bf_node = NULL;
996 STAILQ_INSERT_TAIL(&txq->free, bf, bf_list);
1031 struct malo_txbuf *bf, struct mbuf *m0)
1143 error = malo_tx_dmasetup(sc, bf, m0);
1146 bf->bf_node = ni; /* NB: held reference */
1147 m0 = bf->bf_m; /* NB: may have changed */
1154 ds = bf->bf_desc;
1155 txq = bf->bf_txq;
1158 ds->pktptr = htole32(bf->bf_segs[0].ds_addr);
1159 ds->pktlen = htole16(bf->bf_segs[0].ds_len);
1197 STAILQ_INSERT_TAIL(&txq->active, bf, bf_list);
1231 struct malo_txbuf *bf = NULL;
1242 bf = malo_getbuf(sc, txq);
1243 if (bf == NULL) {
1251 if (malo_tx_start(sc, ni, bf, m)) {
1254 if (bf != NULL) {
1255 bf->bf_m = NULL;
1256 bf->bf_node = NULL;
1258 STAILQ_INSERT_HEAD(&txq->free, bf, bf_list);
1341 malo_getrxmbuf(struct malo_softc *sc, struct malo_rxbuf *bf)
1353 error = bus_dmamap_load(sc->malo_dmat, bf->bf_dmamap,
1362 bf->bf_data = paddr;
1363 bus_dmamap_sync(sc->malo_dmat, bf->bf_dmamap, BUS_DMASYNC_PREWRITE);
1369 malo_rxbuf_init(struct malo_softc *sc, struct malo_rxbuf *bf)
1373 ds = bf->bf_desc;
1374 if (bf->bf_m == NULL) {
1375 bf->bf_m = malo_getrxmbuf(sc, bf);
1376 if (bf->bf_m == NULL) {
1394 ds->physbuffdata = htole32(bf->bf_data);
1409 struct malo_rxbuf *bf, *prev;
1418 STAILQ_FOREACH(bf, &sc->malo_rxbuf, bf_list) {
1419 int error = malo_rxbuf_init(sc, bf);
1428 ds->physnext = htole32(bf->bf_daddr);
1430 prev = bf;
1578 struct malo_txbuf *bf;
1587 bf = STAILQ_FIRST(&txq->active);
1588 if (bf == NULL) {
1598 mtod(bf->bf_m, const struct malo_txrec *);
1599 malo_printtxbuf(bf, txq->qnum, ix);
1601 bf->bf_m->m_len - sizeof(tr->fwlen), 0, -1);
1604 bus_dmamap_unload(sc->malo_dmat, bf->bf_dmamap);
1605 ni = bf->bf_node;
1606 bf->bf_node = NULL;
1613 m_freem(bf->bf_m);
1614 bf->bf_m = NULL;
1617 STAILQ_INSERT_TAIL(&txq->free, bf, bf_list);
1774 struct malo_txbuf *bf;
1789 bf = malo_getbuf(sc, txq);
1790 if (bf == NULL) {
1798 if (malo_tx_start(sc, ni, bf, m) != 0) {
1799 bf->bf_m = NULL;
1800 bf->bf_node = NULL;
1802 STAILQ_INSERT_HEAD(&txq->free, bf, bf_list);
1944 struct malo_rxbuf *bf;
1966 bf = sc->malo_rxnext;
1968 if (bf == NULL) {
1969 bf = STAILQ_FIRST(&sc->malo_rxbuf);
1972 ds = bf->bf_desc;
1973 if (bf->bf_m == NULL) {
1983 (void)malo_rxbuf_init(sc, bf);
1995 malo_printrxbuf(bf, 0);
2006 bus_dmamap_sync(sc->malo_dmat, bf->bf_dmamap,
2014 m = bf->bf_m;
2036 mnew = malo_getrxmbuf(sc, bf);
2046 bf->bf_m = mnew;
2081 (void) malo_rxbuf_init(sc, bf);
2082 bf = STAILQ_NEXT(bf, bf_list);
2086 sc->malo_rxnext = bf;