Lines Matching refs:dr

1028 	struct bwn_dma_ring *dr;  in bwn_tx_isfull()  local
1036 dr = bwn_dma_select(mac, M_WME_GETAC(m)); in bwn_tx_isfull()
1037 if (dr->dr_stop == 1 || in bwn_tx_isfull()
1038 bwn_dma_freeslot(dr) < BWN_TX_SLOTS_PER_FRAME) { in bwn_tx_isfull()
1039 dr->dr_stop = 1; in bwn_tx_isfull()
1178 struct bwn_dma_ring *dr = bwn_dma_select(mac, M_WME_GETAC(*mp)); in bwn_dma_tx_start() local
1183 uint8_t *txhdr_cache = (uint8_t *)dr->dr_txhdr_cache; in bwn_dma_tx_start()
1184 int error, slot, backup[2] = { dr->dr_curslot, dr->dr_usedslot }; in bwn_dma_tx_start()
1187 KASSERT(!dr->dr_stop, ("%s:%d: fail", __func__, __LINE__)); in bwn_dma_tx_start()
1192 slot = bwn_dma_getslot(dr); in bwn_dma_tx_start()
1193 dr->getdesc(dr, slot, &desc, &mt); in bwn_dma_tx_start()
1197 error = bwn_set_txhdr(dr->dr_mac, ni, m, in bwn_dma_tx_start()
1199 BWN_DMA_COOKIE(dr, slot)); in bwn_dma_tx_start()
1202 error = bus_dmamap_load(dr->dr_txring_dtag, mt->mt_dmap, in bwn_dma_tx_start()
1210 bus_dmamap_sync(dr->dr_txring_dtag, mt->mt_dmap, in bwn_dma_tx_start()
1212 dr->setdesc(dr, desc, mt->mt_paddr, BWN_HDRSIZE(mac), 1, 0, 0); in bwn_dma_tx_start()
1213 bus_dmamap_sync(dr->dr_ring_dtag, dr->dr_ring_dmap, in bwn_dma_tx_start()
1216 slot = bwn_dma_getslot(dr); in bwn_dma_tx_start()
1217 dr->getdesc(dr, slot, &desc, &mt); in bwn_dma_tx_start()
1254 dr->setdesc(dr, desc, mt->mt_paddr, m->m_pkthdr.len, 0, 1, 1); in bwn_dma_tx_start()
1255 bus_dmamap_sync(dr->dr_ring_dtag, dr->dr_ring_dmap, in bwn_dma_tx_start()
1260 dr->start_transfer(dr, bwn_dma_nextslot(dr, slot)); in bwn_dma_tx_start()
1263 dr->dr_curslot = backup[0]; in bwn_dma_tx_start()
1264 dr->dr_usedslot = backup[1]; in bwn_dma_tx_start()
2819 struct bwn_dma_ring *dr; in bwn_dma_ringsetup() local
2825 dr = malloc(sizeof(*dr), M_DEVBUF, M_NOWAIT | M_ZERO); in bwn_dma_ringsetup()
2826 if (dr == NULL) in bwn_dma_ringsetup()
2828 dr->dr_numslots = BWN_RXRING_SLOTS; in bwn_dma_ringsetup()
2830 dr->dr_numslots = BWN_TXRING_SLOTS; in bwn_dma_ringsetup()
2832 dr->dr_meta = malloc(dr->dr_numslots * sizeof(struct bwn_dmadesc_meta), in bwn_dma_ringsetup()
2834 if (dr->dr_meta == NULL) in bwn_dma_ringsetup()
2837 dr->dr_type = mac->mac_dmatype; in bwn_dma_ringsetup()
2838 dr->dr_mac = mac; in bwn_dma_ringsetup()
2839 dr->dr_base = bwn_dma_base(dr->dr_type, controller_index); in bwn_dma_ringsetup()
2840 dr->dr_index = controller_index; in bwn_dma_ringsetup()
2841 if (dr->dr_type == BHND_DMA_ADDR_64BIT) { in bwn_dma_ringsetup()
2842 dr->getdesc = bwn_dma_64_getdesc; in bwn_dma_ringsetup()
2843 dr->setdesc = bwn_dma_64_setdesc; in bwn_dma_ringsetup()
2844 dr->start_transfer = bwn_dma_64_start_transfer; in bwn_dma_ringsetup()
2845 dr->suspend = bwn_dma_64_suspend; in bwn_dma_ringsetup()
2846 dr->resume = bwn_dma_64_resume; in bwn_dma_ringsetup()
2847 dr->get_curslot = bwn_dma_64_get_curslot; in bwn_dma_ringsetup()
2848 dr->set_curslot = bwn_dma_64_set_curslot; in bwn_dma_ringsetup()
2850 dr->getdesc = bwn_dma_32_getdesc; in bwn_dma_ringsetup()
2851 dr->setdesc = bwn_dma_32_setdesc; in bwn_dma_ringsetup()
2852 dr->start_transfer = bwn_dma_32_start_transfer; in bwn_dma_ringsetup()
2853 dr->suspend = bwn_dma_32_suspend; in bwn_dma_ringsetup()
2854 dr->resume = bwn_dma_32_resume; in bwn_dma_ringsetup()
2855 dr->get_curslot = bwn_dma_32_get_curslot; in bwn_dma_ringsetup()
2856 dr->set_curslot = bwn_dma_32_set_curslot; in bwn_dma_ringsetup()
2859 dr->dr_tx = 1; in bwn_dma_ringsetup()
2860 dr->dr_curslot = -1; in bwn_dma_ringsetup()
2862 if (dr->dr_index == 0) { in bwn_dma_ringsetup()
2866 dr->dr_rx_bufsize = in bwn_dma_ringsetup()
2868 dr->dr_frameoffset = in bwn_dma_ringsetup()
2872 dr->dr_rx_bufsize = in bwn_dma_ringsetup()
2874 dr->dr_frameoffset = in bwn_dma_ringsetup()
2882 error = bwn_dma_allocringmemory(dr); in bwn_dma_ringsetup()
2894 dr->dr_txhdr_cache = contigmalloc( in bwn_dma_ringsetup()
2895 (dr->dr_numslots / BWN_TX_SLOTS_PER_FRAME) * in bwn_dma_ringsetup()
2898 if (dr->dr_txhdr_cache == NULL) { in bwn_dma_ringsetup()
2917 &dr->dr_txring_dtag); in bwn_dma_ringsetup()
2924 for (i = 0; i < dr->dr_numslots; i += 2) { in bwn_dma_ringsetup()
2925 dr->getdesc(dr, i, &desc, &mt); in bwn_dma_ringsetup()
2931 error = bus_dmamap_create(dr->dr_txring_dtag, 0, in bwn_dma_ringsetup()
2939 dr->getdesc(dr, i + 1, &desc, &mt); in bwn_dma_ringsetup()
2955 &dr->dr_spare_dmap); in bwn_dma_ringsetup()
2962 for (i = 0; i < dr->dr_numslots; i++) { in bwn_dma_ringsetup()
2963 dr->getdesc(dr, i, &desc, &mt); in bwn_dma_ringsetup()
2972 error = bwn_dma_newbuf(dr, desc, mt, 1); in bwn_dma_ringsetup()
2980 bus_dmamap_sync(dr->dr_ring_dtag, dr->dr_ring_dmap, in bwn_dma_ringsetup()
2983 dr->dr_usedslot = dr->dr_numslots; in bwn_dma_ringsetup()
2987 return (dr); in bwn_dma_ringsetup()
2990 if (dr->dr_txhdr_cache != NULL) { in bwn_dma_ringsetup()
2991 contigfree(dr->dr_txhdr_cache, in bwn_dma_ringsetup()
2992 (dr->dr_numslots / BWN_TX_SLOTS_PER_FRAME) * in bwn_dma_ringsetup()
2996 free(dr->dr_meta, M_DEVBUF); in bwn_dma_ringsetup()
2998 free(dr, M_DEVBUF); in bwn_dma_ringsetup()
3003 bwn_dma_ringfree(struct bwn_dma_ring **dr) in bwn_dma_ringfree() argument
3006 if (dr == NULL) in bwn_dma_ringfree()
3009 bwn_dma_free_descbufs(*dr); in bwn_dma_ringfree()
3010 bwn_dma_free_ringmemory(*dr); in bwn_dma_ringfree()
3012 if ((*dr)->dr_txhdr_cache != NULL) { in bwn_dma_ringfree()
3013 contigfree((*dr)->dr_txhdr_cache, in bwn_dma_ringfree()
3014 ((*dr)->dr_numslots / BWN_TX_SLOTS_PER_FRAME) * in bwn_dma_ringfree()
3017 free((*dr)->dr_meta, M_DEVBUF); in bwn_dma_ringfree()
3018 free(*dr, M_DEVBUF); in bwn_dma_ringfree()
3020 *dr = NULL; in bwn_dma_ringfree()
3024 bwn_dma_32_getdesc(struct bwn_dma_ring *dr, int slot, in bwn_dma_32_getdesc() argument
3029 *meta = &(dr->dr_meta[slot]); in bwn_dma_32_getdesc()
3030 desc = dr->dr_ring_descbase; in bwn_dma_32_getdesc()
3037 bwn_dma_32_setdesc(struct bwn_dma_ring *dr, in bwn_dma_32_setdesc() argument
3047 descbase = dr->dr_ring_descbase; in bwn_dma_32_setdesc()
3048 dma = &dr->dr_mac->mac_method.dma; in bwn_dma_32_setdesc()
3052 KASSERT(slot >= 0 && slot < dr->dr_numslots, in bwn_dma_32_setdesc()
3058 if (slot == dr->dr_numslots - 1) in bwn_dma_32_setdesc()
3074 bwn_dma_32_start_transfer(struct bwn_dma_ring *dr, int slot) in bwn_dma_32_start_transfer() argument
3077 BWN_DMA_WRITE(dr, BWN_DMA32_TXINDEX, in bwn_dma_32_start_transfer()
3082 bwn_dma_32_suspend(struct bwn_dma_ring *dr) in bwn_dma_32_suspend() argument
3085 BWN_DMA_WRITE(dr, BWN_DMA32_TXCTL, in bwn_dma_32_suspend()
3086 BWN_DMA_READ(dr, BWN_DMA32_TXCTL) | BWN_DMA32_TXSUSPEND); in bwn_dma_32_suspend()
3090 bwn_dma_32_resume(struct bwn_dma_ring *dr) in bwn_dma_32_resume() argument
3093 BWN_DMA_WRITE(dr, BWN_DMA32_TXCTL, in bwn_dma_32_resume()
3094 BWN_DMA_READ(dr, BWN_DMA32_TXCTL) & ~BWN_DMA32_TXSUSPEND); in bwn_dma_32_resume()
3098 bwn_dma_32_get_curslot(struct bwn_dma_ring *dr) in bwn_dma_32_get_curslot() argument
3102 val = BWN_DMA_READ(dr, BWN_DMA32_RXSTATUS); in bwn_dma_32_get_curslot()
3109 bwn_dma_32_set_curslot(struct bwn_dma_ring *dr, int slot) in bwn_dma_32_set_curslot() argument
3112 BWN_DMA_WRITE(dr, BWN_DMA32_RXINDEX, in bwn_dma_32_set_curslot()
3117 bwn_dma_64_getdesc(struct bwn_dma_ring *dr, int slot, in bwn_dma_64_getdesc() argument
3122 *meta = &(dr->dr_meta[slot]); in bwn_dma_64_getdesc()
3123 desc = dr->dr_ring_descbase; in bwn_dma_64_getdesc()
3130 bwn_dma_64_setdesc(struct bwn_dma_ring *dr, in bwn_dma_64_setdesc() argument
3143 descbase = dr->dr_ring_descbase; in bwn_dma_64_setdesc()
3144 dma = &dr->dr_mac->mac_method.dma; in bwn_dma_64_setdesc()
3148 KASSERT(slot >= 0 && slot < dr->dr_numslots, in bwn_dma_64_setdesc()
3157 if (slot == dr->dr_numslots - 1) in bwn_dma_64_setdesc()
3178 bwn_dma_64_start_transfer(struct bwn_dma_ring *dr, int slot) in bwn_dma_64_start_transfer() argument
3181 BWN_DMA_WRITE(dr, BWN_DMA64_TXINDEX, in bwn_dma_64_start_transfer()
3186 bwn_dma_64_suspend(struct bwn_dma_ring *dr) in bwn_dma_64_suspend() argument
3189 BWN_DMA_WRITE(dr, BWN_DMA64_TXCTL, in bwn_dma_64_suspend()
3190 BWN_DMA_READ(dr, BWN_DMA64_TXCTL) | BWN_DMA64_TXSUSPEND); in bwn_dma_64_suspend()
3194 bwn_dma_64_resume(struct bwn_dma_ring *dr) in bwn_dma_64_resume() argument
3197 BWN_DMA_WRITE(dr, BWN_DMA64_TXCTL, in bwn_dma_64_resume()
3198 BWN_DMA_READ(dr, BWN_DMA64_TXCTL) & ~BWN_DMA64_TXSUSPEND); in bwn_dma_64_resume()
3202 bwn_dma_64_get_curslot(struct bwn_dma_ring *dr) in bwn_dma_64_get_curslot() argument
3206 val = BWN_DMA_READ(dr, BWN_DMA64_RXSTATUS); in bwn_dma_64_get_curslot()
3213 bwn_dma_64_set_curslot(struct bwn_dma_ring *dr, int slot) in bwn_dma_64_set_curslot() argument
3216 BWN_DMA_WRITE(dr, BWN_DMA64_RXINDEX, in bwn_dma_64_set_curslot()
3221 bwn_dma_allocringmemory(struct bwn_dma_ring *dr) in bwn_dma_allocringmemory() argument
3223 struct bwn_mac *mac = dr->dr_mac; in bwn_dma_allocringmemory()
3238 &dr->dr_ring_dtag); in bwn_dma_allocringmemory()
3245 error = bus_dmamem_alloc(dr->dr_ring_dtag, in bwn_dma_allocringmemory()
3246 &dr->dr_ring_descbase, BUS_DMA_WAITOK | BUS_DMA_ZERO, in bwn_dma_allocringmemory()
3247 &dr->dr_ring_dmap); in bwn_dma_allocringmemory()
3253 error = bus_dmamap_load(dr->dr_ring_dtag, dr->dr_ring_dmap, in bwn_dma_allocringmemory()
3254 dr->dr_ring_descbase, BWN_DMA_RINGMEMSIZE, in bwn_dma_allocringmemory()
3255 bwn_dma_ring_addr, &dr->dr_ring_dmabase, BUS_DMA_NOWAIT); in bwn_dma_allocringmemory()
3266 bwn_dma_setup(struct bwn_dma_ring *dr) in bwn_dma_setup() argument
3274 mac = dr->dr_mac; in bwn_dma_setup()
3278 paddr = dr->dr_ring_dmabase; in bwn_dma_setup()
3284 if (dr->dr_tx) { in bwn_dma_setup()
3285 dr->dr_curslot = -1; in bwn_dma_setup()
3287 if (dr->dr_type == BHND_DMA_ADDR_64BIT) { in bwn_dma_setup()
3292 BWN_DMA_WRITE(dr, BWN_DMA64_TXCTL, value); in bwn_dma_setup()
3293 BWN_DMA_WRITE(dr, BWN_DMA64_TXRINGLO, addrlo); in bwn_dma_setup()
3294 BWN_DMA_WRITE(dr, BWN_DMA64_TXRINGHI, addrhi); in bwn_dma_setup()
3300 BWN_DMA_WRITE(dr, BWN_DMA32_TXCTL, value); in bwn_dma_setup()
3301 BWN_DMA_WRITE(dr, BWN_DMA32_TXRING, addrlo); in bwn_dma_setup()
3309 dr->dr_usedslot = dr->dr_numslots; in bwn_dma_setup()
3311 if (dr->dr_type == BHND_DMA_ADDR_64BIT) { in bwn_dma_setup()
3312 value = (dr->dr_frameoffset << BWN_DMA64_RXFROFF_SHIFT); in bwn_dma_setup()
3317 BWN_DMA_WRITE(dr, BWN_DMA64_RXCTL, value); in bwn_dma_setup()
3318 BWN_DMA_WRITE(dr, BWN_DMA64_RXRINGLO, addrlo); in bwn_dma_setup()
3319 BWN_DMA_WRITE(dr, BWN_DMA64_RXRINGHI, addrhi); in bwn_dma_setup()
3320 BWN_DMA_WRITE(dr, BWN_DMA64_RXINDEX, dr->dr_numslots * in bwn_dma_setup()
3323 value = (dr->dr_frameoffset << BWN_DMA32_RXFROFF_SHIFT); in bwn_dma_setup()
3328 BWN_DMA_WRITE(dr, BWN_DMA32_RXCTL, value); in bwn_dma_setup()
3329 BWN_DMA_WRITE(dr, BWN_DMA32_RXRING, addrlo); in bwn_dma_setup()
3330 BWN_DMA_WRITE(dr, BWN_DMA32_RXINDEX, dr->dr_numslots * in bwn_dma_setup()
3336 bwn_dma_free_ringmemory(struct bwn_dma_ring *dr) in bwn_dma_free_ringmemory() argument
3339 bus_dmamap_unload(dr->dr_ring_dtag, dr->dr_ring_dmap); in bwn_dma_free_ringmemory()
3340 bus_dmamem_free(dr->dr_ring_dtag, dr->dr_ring_descbase, in bwn_dma_free_ringmemory()
3341 dr->dr_ring_dmap); in bwn_dma_free_ringmemory()
3345 bwn_dma_cleanup(struct bwn_dma_ring *dr) in bwn_dma_cleanup() argument
3348 if (dr->dr_tx) { in bwn_dma_cleanup()
3349 bwn_dma_tx_reset(dr->dr_mac, dr->dr_base, dr->dr_type); in bwn_dma_cleanup()
3350 if (dr->dr_type == BHND_DMA_ADDR_64BIT) { in bwn_dma_cleanup()
3351 BWN_DMA_WRITE(dr, BWN_DMA64_TXRINGLO, 0); in bwn_dma_cleanup()
3352 BWN_DMA_WRITE(dr, BWN_DMA64_TXRINGHI, 0); in bwn_dma_cleanup()
3354 BWN_DMA_WRITE(dr, BWN_DMA32_TXRING, 0); in bwn_dma_cleanup()
3356 bwn_dma_rx_reset(dr->dr_mac, dr->dr_base, dr->dr_type); in bwn_dma_cleanup()
3357 if (dr->dr_type == BHND_DMA_ADDR_64BIT) { in bwn_dma_cleanup()
3358 BWN_DMA_WRITE(dr, BWN_DMA64_RXRINGLO, 0); in bwn_dma_cleanup()
3359 BWN_DMA_WRITE(dr, BWN_DMA64_RXRINGHI, 0); in bwn_dma_cleanup()
3361 BWN_DMA_WRITE(dr, BWN_DMA32_RXRING, 0); in bwn_dma_cleanup()
3366 bwn_dma_free_descbufs(struct bwn_dma_ring *dr) in bwn_dma_free_descbufs() argument
3370 struct bwn_mac *mac = dr->dr_mac; in bwn_dma_free_descbufs()
3375 if (!dr->dr_usedslot) in bwn_dma_free_descbufs()
3377 for (i = 0; i < dr->dr_numslots; i++) { in bwn_dma_free_descbufs()
3378 dr->getdesc(dr, i, &desc, &meta); in bwn_dma_free_descbufs()
3381 if (!dr->dr_tx) in bwn_dma_free_descbufs()
3386 if (dr->dr_tx) { in bwn_dma_free_descbufs()
3388 bus_dmamap_unload(dr->dr_txring_dtag, in bwn_dma_free_descbufs()
3395 bwn_dma_free_descbuf(dr, meta); in bwn_dma_free_descbufs()
3498 bwn_dma_free_descbuf(struct bwn_dma_ring *dr, in bwn_dma_free_descbuf() argument
3513 bwn_dma_set_redzone(struct bwn_dma_ring *dr, struct mbuf *m) in bwn_dma_set_redzone() argument
3521 KASSERT(dr->dr_rx_bufsize >= dr->dr_frameoffset + in bwn_dma_set_redzone()
3524 frame = mtod(m, char *) + dr->dr_frameoffset; in bwn_dma_set_redzone()
3529 bwn_dma_check_redzone(struct bwn_dma_ring *dr, struct mbuf *m) in bwn_dma_check_redzone() argument
3531 unsigned char *f = mtod(m, char *) + dr->dr_frameoffset; in bwn_dma_check_redzone()
5385 bwn_dma_rx(struct bwn_dma_ring *dr) in bwn_dma_rx() argument
5389 KASSERT(!dr->dr_tx, ("%s:%d: fail", __func__, __LINE__)); in bwn_dma_rx()
5390 curslot = dr->get_curslot(dr); in bwn_dma_rx()
5391 KASSERT(curslot >= 0 && curslot < dr->dr_numslots, in bwn_dma_rx()
5394 slot = dr->dr_curslot; in bwn_dma_rx()
5395 for (; slot != curslot; slot = bwn_dma_nextslot(dr, slot)) in bwn_dma_rx()
5396 bwn_dma_rxeof(dr, &slot); in bwn_dma_rx()
5398 bus_dmamap_sync(dr->dr_ring_dtag, dr->dr_ring_dmap, in bwn_dma_rx()
5401 dr->set_curslot(dr, slot); in bwn_dma_rx()
5402 dr->dr_curslot = slot; in bwn_dma_rx()
5539 bwn_dma_freeslot(struct bwn_dma_ring *dr) in bwn_dma_freeslot() argument
5541 BWN_ASSERT_LOCKED(dr->dr_mac->mac_sc); in bwn_dma_freeslot()
5543 return (dr->dr_numslots - dr->dr_usedslot); in bwn_dma_freeslot()
5547 bwn_dma_nextslot(struct bwn_dma_ring *dr, int slot) in bwn_dma_nextslot() argument
5549 BWN_ASSERT_LOCKED(dr->dr_mac->mac_sc); in bwn_dma_nextslot()
5551 KASSERT(slot >= -1 && slot <= dr->dr_numslots - 1, in bwn_dma_nextslot()
5553 if (slot == dr->dr_numslots - 1) in bwn_dma_nextslot()
5559 bwn_dma_rxeof(struct bwn_dma_ring *dr, int *slot) in bwn_dma_rxeof() argument
5561 struct bwn_mac *mac = dr->dr_mac; in bwn_dma_rxeof()
5573 dr->getdesc(dr, *slot, &desc, &meta); in bwn_dma_rxeof()
5578 if (bwn_dma_newbuf(dr, desc, meta, 0)) { in bwn_dma_rxeof()
5589 if (bwn_dma_check_redzone(dr, m)) { in bwn_dma_rxeof()
5591 bwn_dma_set_redzone(dr, m); in bwn_dma_rxeof()
5596 if (len > dr->dr_rx_bufsize) { in bwn_dma_rxeof()
5599 dr->getdesc(dr, *slot, &desc, &meta); in bwn_dma_rxeof()
5600 bwn_dma_set_redzone(dr, meta->mt_m); in bwn_dma_rxeof()
5603 *slot = bwn_dma_nextslot(dr, *slot); in bwn_dma_rxeof()
5605 tmp -= dr->dr_rx_bufsize; in bwn_dma_rxeof()
5611 len, dr->dr_rx_bufsize, cnt); in bwn_dma_rxeof()
5632 m->m_len = m->m_pkthdr.len = len + dr->dr_frameoffset; in bwn_dma_rxeof()
5633 m_adj(m, dr->dr_frameoffset); in bwn_dma_rxeof()
5635 bwn_rxeof(dr->dr_mac, m, rxhdr); in bwn_dma_rxeof()
5795 bwn_dma_newbuf(struct bwn_dma_ring *dr, struct bwn_dmadesc_generic *desc, in bwn_dma_newbuf() argument
5798 struct bwn_mac *mac = dr->dr_mac; in bwn_dma_newbuf()
5822 bwn_dma_set_redzone(dr, m); in bwn_dma_newbuf()
5827 error = bus_dmamap_load_mbuf(dma->rxbuf_dtag, dr->dr_spare_dmap, m, in bwn_dma_newbuf()
5850 meta->mt_dmap = dr->dr_spare_dmap; in bwn_dma_newbuf()
5851 dr->dr_spare_dmap = map; in bwn_dma_newbuf()
5865 dr->setdesc(dr, desc, meta->mt_paddr, meta->mt_m->m_len - in bwn_dma_newbuf()
6140 struct bwn_dma_ring *dr; in bwn_dma_handle_txeof() local
6148 dr = bwn_dma_parse_cookie(mac, status, status->cookie, &slot); in bwn_dma_handle_txeof()
6149 if (dr == NULL) { in bwn_dma_handle_txeof()
6153 KASSERT(dr->dr_tx, ("%s:%d: fail", __func__, __LINE__)); in bwn_dma_handle_txeof()
6156 KASSERT(slot >= 0 && slot < dr->dr_numslots, in bwn_dma_handle_txeof()
6158 dr->getdesc(dr, slot, &desc, &meta); in bwn_dma_handle_txeof()
6161 bus_dmamap_unload(dr->dr_txring_dtag, meta->mt_dmap); in bwn_dma_handle_txeof()
6177 dr->dr_usedslot--; in bwn_dma_handle_txeof()
6180 slot = bwn_dma_nextslot(dr, slot); in bwn_dma_handle_txeof()
6183 if (dr->dr_stop) { in bwn_dma_handle_txeof()
6184 KASSERT(bwn_dma_freeslot(dr) >= BWN_TX_SLOTS_PER_FRAME, in bwn_dma_handle_txeof()
6186 dr->dr_stop = 0; in bwn_dma_handle_txeof()
6880 bwn_dma_getslot(struct bwn_dma_ring *dr) in bwn_dma_getslot() argument
6884 BWN_ASSERT_LOCKED(dr->dr_mac->mac_sc); in bwn_dma_getslot()
6886 KASSERT(dr->dr_tx, ("%s:%d: fail", __func__, __LINE__)); in bwn_dma_getslot()
6887 KASSERT(!(dr->dr_stop), ("%s:%d: fail", __func__, __LINE__)); in bwn_dma_getslot()
6888 KASSERT(bwn_dma_freeslot(dr) != 0, ("%s:%d: fail", __func__, __LINE__)); in bwn_dma_getslot()
6890 slot = bwn_dma_nextslot(dr, dr->dr_curslot); in bwn_dma_getslot()
6892 dr->dr_curslot = slot; in bwn_dma_getslot()
6893 dr->dr_usedslot++; in bwn_dma_getslot()
7305 struct bwn_dma_ring *dr; in bwn_dma_parse_cookie() local
7312 dr = dma->wme[WME_AC_BK]; in bwn_dma_parse_cookie()
7315 dr = dma->wme[WME_AC_BE]; in bwn_dma_parse_cookie()
7318 dr = dma->wme[WME_AC_VI]; in bwn_dma_parse_cookie()
7321 dr = dma->wme[WME_AC_VO]; in bwn_dma_parse_cookie()
7324 dr = dma->mcast; in bwn_dma_parse_cookie()
7327 dr = NULL; in bwn_dma_parse_cookie()
7332 if (*slot < 0 || *slot >= dr->dr_numslots) { in bwn_dma_parse_cookie()
7342 dr->dr_numslots); in bwn_dma_parse_cookie()
7346 return (dr); in bwn_dma_parse_cookie()
7367 bwn_dma_ringstop(struct bwn_dma_ring **dr) in bwn_dma_ringstop() argument
7370 if (dr == NULL) in bwn_dma_ringstop()
7373 bwn_dma_cleanup(*dr); in bwn_dma_ringstop()