Lines Matching refs:bf

793 	struct ath_buf *bf;  in ath_start()  local
806 bf = TAILQ_FIRST(&sc->sc_txbuf); in ath_start()
807 if (bf != NULL) in ath_start()
808 TAILQ_REMOVE(&sc->sc_txbuf, bf, bf_list); in ath_start()
810 if (bf == NULL) { in ath_start()
832 TAILQ_INSERT_TAIL(&sc->sc_txbuf, bf, bf_list); in ath_start()
839 TAILQ_INSERT_TAIL(&sc->sc_txbuf, bf, bf_list); in ath_start()
881 if (ath_tx_start(sc, ni, bf, m)) { in ath_start()
884 TAILQ_INSERT_TAIL(&sc->sc_txbuf, bf, bf_list); in ath_start()
1188 struct ath_buf *bf; in ath_beacon_alloc() local
1196 bf = sc->sc_bcbuf; in ath_beacon_alloc()
1197 if (bf->bf_m != NULL) { in ath_beacon_alloc()
1198 bus_dmamap_unload(sc->sc_dmat, bf->bf_dmamap); in ath_beacon_alloc()
1199 m_freem(bf->bf_m); in ath_beacon_alloc()
1200 bf->bf_m = NULL; in ath_beacon_alloc()
1201 bf->bf_node = NULL; in ath_beacon_alloc()
1217 error = bus_dmamap_load_mbuf(sc->sc_dmat, bf->bf_dmamap, m, in ath_beacon_alloc()
1223 KASSERT(bf->bf_nseg == 1, in ath_beacon_alloc()
1224 ("%s: multi-segment packet; nseg %u", __func__, bf->bf_nseg)); in ath_beacon_alloc()
1225 bf->bf_m = m; in ath_beacon_alloc()
1228 ds = bf->bf_desc; in ath_beacon_alloc()
1232 ds->ds_link = bf->bf_daddr; /* link to self */ in ath_beacon_alloc()
1237 ds->ds_data = bf->bf_segs[0].ds_addr; in ath_beacon_alloc()
1240 (caddr_t)bf->bf_segs[0].ds_addr, (u_int)bf->bf_segs[0].ds_len)); in ath_beacon_alloc()
1276 , roundup(bf->bf_segs[0].ds_len, 4) /* buffer length */ in ath_beacon_alloc()
1294 struct ath_buf *bf = sc->sc_bcbuf; in ath_beacon_proc() local
1299 bf == NULL || bf->bf_m == NULL) { in ath_beacon_proc()
1301 __func__, ic->ic_flags, bf, bf ? bf->bf_m : NULL)); in ath_beacon_proc()
1309 bus_dmamap_sync(sc->sc_dmat, bf->bf_dmamap, 0, in ath_beacon_proc()
1310 bf->bf_dmamap->dm_mapsize, BUS_DMASYNC_PREWRITE); in ath_beacon_proc()
1312 ath_hal_put_tx_buf(ah, sc->sc_bhalq, bf->bf_daddr); in ath_beacon_proc()
1316 sc->sc_bhalq, (caddr_t)bf->bf_daddr, bf->bf_desc)); in ath_beacon_proc()
1322 struct ath_buf *bf = sc->sc_bcbuf; in ath_beacon_free() local
1324 if (bf->bf_m != NULL) { in ath_beacon_free()
1325 bus_dmamap_unload(sc->sc_dmat, bf->bf_dmamap); in ath_beacon_free()
1326 m_freem(bf->bf_m); in ath_beacon_free()
1327 bf->bf_m = NULL; in ath_beacon_free()
1328 bf->bf_node = NULL; in ath_beacon_free()
1461 struct ath_buf *bf; in ath_desc_alloc() local
1504 bf = malloc(bsize, M_DEVBUF, M_NOWAIT | M_ZERO); in ath_desc_alloc()
1505 if (bf == NULL) { in ath_desc_alloc()
1511 sc->sc_bufptr = bf; in ath_desc_alloc()
1514 for (i = 0; i < ATH_RXBUF; i++, bf++, ds++) { in ath_desc_alloc()
1515 bf->bf_desc = ds; in ath_desc_alloc()
1516 bf->bf_daddr = sc->sc_desc_paddr + in ath_desc_alloc()
1519 MCLBYTES, 0, 0, &bf->bf_dmamap)) != 0) { in ath_desc_alloc()
1524 TAILQ_INSERT_TAIL(&sc->sc_rxbuf, bf, bf_list); in ath_desc_alloc()
1528 for (i = 0; i < ATH_TXBUF; i++, bf++, ds += ATH_TXDESC) { in ath_desc_alloc()
1529 bf->bf_desc = ds; in ath_desc_alloc()
1530 bf->bf_daddr = sc->sc_desc_paddr + in ath_desc_alloc()
1533 ATH_TXDESC, MCLBYTES, 0, 0, &bf->bf_dmamap)) != 0) { in ath_desc_alloc()
1538 TAILQ_INSERT_TAIL(&sc->sc_txbuf, bf, bf_list); in ath_desc_alloc()
1543 bf->bf_desc = ds; in ath_desc_alloc()
1544 bf->bf_daddr = sc->sc_desc_paddr + ((caddr_t)ds - (caddr_t)sc->sc_desc); in ath_desc_alloc()
1546 &bf->bf_dmamap)) != 0) { in ath_desc_alloc()
1551 sc->sc_bcbuf = bf; in ath_desc_alloc()
1581 struct ath_buf *bf; in ath_desc_free() local
1587 TAILQ_FOREACH(bf, &sc->sc_txq, bf_list) { in ath_desc_free()
1588 bus_dmamap_unload(sc->sc_dmat, bf->bf_dmamap); in ath_desc_free()
1589 bus_dmamap_destroy(sc->sc_dmat, bf->bf_dmamap); in ath_desc_free()
1590 m_freem(bf->bf_m); in ath_desc_free()
1592 TAILQ_FOREACH(bf, &sc->sc_txbuf, bf_list) in ath_desc_free()
1593 bus_dmamap_destroy(sc->sc_dmat, bf->bf_dmamap); in ath_desc_free()
1594 TAILQ_FOREACH(bf, &sc->sc_rxbuf, bf_list) { in ath_desc_free()
1595 if (bf->bf_m) { in ath_desc_free()
1596 bus_dmamap_unload(sc->sc_dmat, bf->bf_dmamap); in ath_desc_free()
1597 bus_dmamap_destroy(sc->sc_dmat, bf->bf_dmamap); in ath_desc_free()
1598 m_freem(bf->bf_m); in ath_desc_free()
1599 bf->bf_m = NULL; in ath_desc_free()
1635 struct ath_buf *bf; in ath_node_free() local
1637 TAILQ_FOREACH(bf, &sc->sc_txq, bf_list) { in ath_node_free()
1638 if (bf->bf_node == ni) in ath_node_free()
1639 bf->bf_node = NULL; in ath_node_free()
1691 ath_rxbuf_init(struct ath_softc *sc, struct ath_buf *bf) in ath_rxbuf_init() argument
1698 m = bf->bf_m; in ath_rxbuf_init()
1714 bf->bf_m = m; in ath_rxbuf_init()
1717 error = bus_dmamap_load_mbuf(sc->sc_dmat, bf->bf_dmamap, m, in ath_rxbuf_init()
1726 KASSERT(bf->bf_nseg == 1, in ath_rxbuf_init()
1728 bf->bf_nseg)); in ath_rxbuf_init()
1730 bus_dmamap_sync(sc->sc_dmat, bf->bf_dmamap, 0, in ath_rxbuf_init()
1731 bf->bf_dmamap->dm_mapsize, BUS_DMASYNC_PREREAD); in ath_rxbuf_init()
1748 ds = bf->bf_desc; in ath_rxbuf_init()
1752 ds->ds_link = bf->bf_daddr; /* link to self */ in ath_rxbuf_init()
1754 ds->ds_data = bf->bf_segs[0].ds_addr; in ath_rxbuf_init()
1761 *sc->sc_rxlink = bf->bf_daddr; in ath_rxbuf_init()
1774 struct ath_buf *bf; in ath_rx_proc() local
1792 bf = TAILQ_FIRST(&sc->sc_rxbuf); in ath_rx_proc()
1793 if (bf == NULL) { /* NB: shouldn't happen */ in ath_rx_proc()
1797 ds = bf->bf_desc; in ath_rx_proc()
1798 if (ds->ds_link == bf->bf_daddr) { in ath_rx_proc()
1802 m = bf->bf_m; in ath_rx_proc()
1820 bf->bf_daddr, PA2DESC(sc, ds->ds_link)); in ath_rx_proc()
1823 ath_printrxbuf(bf, status == HAL_OK); in ath_rx_proc()
1827 TAILQ_REMOVE(&sc->sc_rxbuf, bf, bf_list); in ath_rx_proc()
1887 bus_dmamap_sync(sc->sc_dmat, bf->bf_dmamap, 0, in ath_rx_proc()
1888 bf->bf_dmamap->dm_mapsize, BUS_DMASYNC_POSTREAD); in ath_rx_proc()
1890 bus_dmamap_unload(sc->sc_dmat, bf->bf_dmamap); in ath_rx_proc()
1891 bf->bf_m = NULL; in ath_rx_proc()
1970 TAILQ_INSERT_TAIL(&sc->sc_rxbuf, bf, bf_list); in ath_rx_proc()
1971 } while (ath_rxbuf_init(sc, bf) == 0); in ath_rx_proc()
1987 struct ath_buf *bf, struct mbuf *m0) in ath_tx_start() argument
2088 error = bus_dmamap_load_mbuf(sc->sc_dmat, bf->bf_dmamap, m0, in ath_tx_start()
2102 error = bus_dmamap_load_mbuf(sc->sc_dmat, bf->bf_dmamap, m0, in ath_tx_start()
2109 KASSERT(bf->bf_nseg == 1, in ath_tx_start()
2111 bf->bf_nseg)); in ath_tx_start()
2116 } else if (bf->bf_nseg == 0) { /* null packet, discard */ in ath_tx_start()
2122 bus_dmamap_sync(sc->sc_dmat, bf->bf_dmamap, 0, in ath_tx_start()
2123 bf->bf_dmamap->dm_mapsize, BUS_DMASYNC_PREWRITE); in ath_tx_start()
2124 bf->bf_m = m0; in ath_tx_start()
2125 bf->bf_node = ni; /* NB: held reference */ in ath_tx_start()
2129 ds = bf->bf_desc; in ath_tx_start()
2137 bf->bf_id.id_node = NULL; in ath_tx_start()
2160 bf->bf_id.id_len = m0->m_pkthdr.len; in ath_tx_start()
2161 bf->bf_id.id_rateidx = ni->ni_txrate; in ath_tx_start()
2162 bf->bf_id.id_node = ni; in ath_tx_start()
2163 bf->bf_id.id_rssi = ath_node_getrssi(ic, ni); in ath_tx_start()
2317 for (i = 0; i < bf->bf_nseg; i++, ds++) { in ath_tx_start()
2318 ds->ds_data = bf->bf_segs[i].ds_addr; in ath_tx_start()
2319 if (i == bf->bf_nseg - 1) { in ath_tx_start()
2322 ds->ds_link = bf->bf_daddr + sizeof(*ds) * (i + 1); in ath_tx_start()
2325 , bf->bf_segs[i].ds_len /* segment length */ in ath_tx_start()
2327 , i == bf->bf_nseg - 1 /* last segment */ in ath_tx_start()
2340 TAILQ_INSERT_TAIL(&sc->sc_txq, bf, bf_list); in ath_tx_start()
2342 ath_hal_put_tx_buf(ah, sc->sc_txhalq[hwqueue], bf->bf_daddr); in ath_tx_start()
2344 (caddr_t)bf->bf_daddr, bf->bf_desc)); in ath_tx_start()
2346 *sc->sc_txlink = bf->bf_daddr; in ath_tx_start()
2348 sc->sc_txlink, (caddr_t)bf->bf_daddr, bf->bf_desc)); in ath_tx_start()
2350 sc->sc_txlink = &bf->bf_desc[bf->bf_nseg - 1].ds_link; in ath_tx_start()
2362 struct ath_buf *bf; in ath_tx_proc() local
2373 bf = TAILQ_FIRST(&sc->sc_txq); in ath_tx_proc()
2374 if (bf == NULL) { in ath_tx_proc()
2380 ds = &bf->bf_desc[bf->bf_nseg - 1]; in ath_tx_proc()
2384 ath_printtxbuf(bf, status == HAL_OK); in ath_tx_proc()
2390 TAILQ_REMOVE(&sc->sc_txq, bf, bf_list); in ath_tx_proc()
2393 ni = bf->bf_node; in ath_tx_proc()
2397 if (bf->bf_id.id_node != NULL) in ath_tx_proc()
2399 &an->an_rssadapt, &bf->bf_id); in ath_tx_proc()
2402 if (bf->bf_id.id_node != NULL) in ath_tx_proc()
2404 &an->an_rssadapt, &bf->bf_id); in ath_tx_proc()
2426 bus_dmamap_sync(sc->sc_dmat, bf->bf_dmamap, 0, in ath_tx_proc()
2427 bf->bf_dmamap->dm_mapsize, BUS_DMASYNC_POSTWRITE); in ath_tx_proc()
2428 bus_dmamap_unload(sc->sc_dmat, bf->bf_dmamap); in ath_tx_proc()
2429 m_freem(bf->bf_m); in ath_tx_proc()
2430 bf->bf_m = NULL; in ath_tx_proc()
2431 bf->bf_node = NULL; in ath_tx_proc()
2434 TAILQ_INSERT_TAIL(&sc->sc_txbuf, bf, bf_list); in ath_tx_proc()
2453 struct ath_buf *bf; in ath_draintxq() local
2473 bf = TAILQ_FIRST(&sc->sc_txq); in ath_draintxq()
2474 if (bf == NULL) { in ath_draintxq()
2479 TAILQ_REMOVE(&sc->sc_txq, bf, bf_list); in ath_draintxq()
2483 ath_printtxbuf(bf, in ath_draintxq()
2484 ath_hal_proc_tx_desc(ah, bf->bf_desc) == HAL_OK); in ath_draintxq()
2487 bus_dmamap_unload(sc->sc_dmat, bf->bf_dmamap); in ath_draintxq()
2488 m_freem(bf->bf_m); in ath_draintxq()
2489 bf->bf_m = NULL; in ath_draintxq()
2490 ni = bf->bf_node; in ath_draintxq()
2491 bf->bf_node = NULL; in ath_draintxq()
2499 TAILQ_INSERT_TAIL(&sc->sc_txbuf, bf, bf_list); in ath_draintxq()
2522 struct ath_buf *bf; in ath_stoprecv() local
2526 TAILQ_FOREACH(bf, &sc->sc_rxbuf, bf_list) { in ath_stoprecv()
2527 struct ath_desc *ds = bf->bf_desc; in ath_stoprecv()
2528 if (ath_hal_proc_rx_desc(ah, ds, bf->bf_daddr, in ath_stoprecv()
2530 ath_printrxbuf(bf, 1); in ath_stoprecv()
2545 struct ath_buf *bf; in ath_startrecv() local
2548 TAILQ_FOREACH(bf, &sc->sc_rxbuf, bf_list) { in ath_startrecv()
2549 int error = ath_rxbuf_init(sc, bf); in ath_startrecv()
2558 bf = TAILQ_FIRST(&sc->sc_rxbuf); in ath_startrecv()
2559 ath_hal_put_rx_buf(ah, bf->bf_daddr); in ath_startrecv()
3053 ath_printrxbuf(struct ath_buf *bf, int done) in ath_printrxbuf() argument
3058 for (i = 0, ds = bf->bf_desc; i < bf->bf_nseg; i++, ds++) { in ath_printrxbuf()
3060 i, ds, (struct ath_desc *)bf->bf_daddr + i, in ath_printrxbuf()
3069 ath_printtxbuf(struct ath_buf *bf, int done) in ath_printtxbuf() argument
3074 for (i = 0, ds = bf->bf_desc; i < bf->bf_nseg; i++, ds++) { in ath_printtxbuf()
3077 i, ds, (struct ath_desc *)bf->bf_daddr + i, in ath_printtxbuf()