Lines Matching refs:ri
155 struct mbuf * tulip_dequeue_mbuf(tulip_ringinfo_t *ri, tulip_descinfo_t *di,
196 tulip_dequeue_mbuf(tulip_ringinfo_t *ri, tulip_descinfo_t *di, int sync) in tulip_dequeue_mbuf() argument
206 TULIP_RXMAP_POSTSYNC(ri, di); in tulip_dequeue_mbuf()
209 TULIP_TXMAP_POSTSYNC(ri, di); in tulip_dequeue_mbuf()
214 bus_dmamap_unload(ri->ri_data_tag, *di->di_map); in tulip_dequeue_mbuf()
3144 tulip_ringinfo_t *ri; in tulip_reset() local
3189 ri = &sc->tulip_txinfo; in tulip_reset()
3190 for (di = ri->ri_first; di < ri->ri_last; di++) { in tulip_reset()
3191 m = tulip_dequeue_mbuf(ri, di, SYNC_NONE); in tulip_reset()
3197 ri->ri_nextin = ri->ri_nextout = ri->ri_first; in tulip_reset()
3198 ri->ri_free = ri->ri_max; in tulip_reset()
3199 TULIP_TXDESC_PRESYNC(ri); in tulip_reset()
3208 ri = &sc->tulip_rxinfo; in tulip_reset()
3209 ri->ri_nextin = ri->ri_nextout = ri->ri_first; in tulip_reset()
3210 ri->ri_free = ri->ri_max; in tulip_reset()
3211 for (di = ri->ri_first; di < ri->ri_last; di++) { in tulip_reset()
3216 TULIP_RXDESC_PRESYNC(ri); in tulip_reset()
3217 for (di = ri->ri_first; di < ri->ri_last; di++) { in tulip_reset()
3218 m = tulip_dequeue_mbuf(ri, di, SYNC_NONE); in tulip_reset()
3323 tulip_ringinfo_t * const ri = &sc->tulip_rxinfo; in tulip_rx_intr()
3334 tulip_descinfo_t *eop = ri->ri_nextin, *dip; in tulip_rx_intr()
3340 if (fillok && (ri->ri_max - ri->ri_free) < TULIP_RXQ_TARGET) in tulip_rx_intr()
3344 if (cnt == ri->ri_max) in tulip_rx_intr()
3351 if (eop == ri->ri_nextout) in tulip_rx_intr()
3358 TULIP_RXDESC_POSTSYNC(ri); in tulip_rx_intr()
3360 ms = tulip_dequeue_mbuf(ri, eop, SYNC_RX); in tulip_rx_intr()
3363 eop - ri->ri_first); in tulip_rx_intr()
3365 ri->ri_free++; in tulip_rx_intr()
3382 if (++eop == ri->ri_last) in tulip_rx_intr()
3383 eop = ri->ri_first; in tulip_rx_intr()
3384 TULIP_RXDESC_POSTSYNC(ri); in tulip_rx_intr()
3385 if (eop == ri->ri_nextout || DESC_STATUS(eop) & TULIP_DSTS_OWNER) { in tulip_rx_intr()
3407 ms = tulip_dequeue_mbuf(ri, dip, SYNC_RX); in tulip_rx_intr()
3410 dip - ri->ri_first); in tulip_rx_intr()
3411 ri->ri_free++; in tulip_rx_intr()
3415 if (++dip == ri->ri_last) in tulip_rx_intr()
3416 dip = ri->ri_first; in tulip_rx_intr()
3417 me->m_next = tulip_dequeue_mbuf(ri, dip, SYNC_RX); in tulip_rx_intr()
3418 ri->ri_free++; in tulip_rx_intr()
3422 me, dip - ri->ri_first); in tulip_rx_intr()
3482 if (++eop == ri->ri_last) in tulip_rx_intr()
3483 eop = ri->ri_first; in tulip_rx_intr()
3484 ri->ri_nextin = eop; in tulip_rx_intr()
3554 tulip_descinfo_t * const nextout = ri->ri_nextout; in tulip_rx_intr()
3560 error = bus_dmamap_load_mbuf(ri->ri_data_tag, *nextout->di_map, ms, in tulip_rx_intr()
3571 ms, nextout - ri->ri_first); in tulip_rx_intr()
3572 TULIP_RXDESC_POSTSYNC(ri); in tulip_rx_intr()
3573 if (++ri->ri_nextout == ri->ri_last) in tulip_rx_intr()
3574 ri->ri_nextout = ri->ri_first; in tulip_rx_intr()
3575 ri->ri_free--; in tulip_rx_intr()
3580 if ((ri->ri_max - ri->ri_free) >= TULIP_RXQ_TARGET) in tulip_rx_intr()
3596 tulip_ringinfo_t * const ri = &sc->tulip_txinfo; in tulip_tx_intr()
3603 while (ri->ri_free < ri->ri_max) { in tulip_tx_intr()
3606 TULIP_TXDESC_POSTSYNC(ri); in tulip_tx_intr()
3607 if (DESC_STATUS(ri->ri_nextin) & TULIP_DSTS_OWNER) in tulip_tx_intr()
3610 ri->ri_free++; in tulip_tx_intr()
3612 d_flag = DESC_FLAG(ri->ri_nextin); in tulip_tx_intr()
3617 ri->ri_nextin - ri->ri_first, DESC_STATUS(ri->ri_nextin)); in tulip_tx_intr()
3628 if (DESC_FLAG(ri->ri_nextin) & TULIP_DFLAG_TxINVRSFILT) in tulip_tx_intr()
3642 const u_int32_t d_status = DESC_STATUS(ri->ri_nextin); in tulip_tx_intr()
3644 m = tulip_dequeue_mbuf(ri, ri->ri_nextin, SYNC_TX); in tulip_tx_intr()
3647 ri->ri_nextin - ri->ri_first); in tulip_tx_intr()
3718 if (++ri->ri_nextin == ri->ri_last) in tulip_tx_intr()
3719 ri->ri_nextin = ri->ri_first; in tulip_tx_intr()
3728 if (ri->ri_free == ri->ri_max || (sc->tulip_flags & TULIP_TXPROBE_ACTIVE)) in tulip_tx_intr()
3895 tulip_ringinfo_t * const ri = &sc->tulip_txinfo; in tulip_txput()
3942 eop = nextout = ri->ri_nextout; in tulip_txput()
3944 free = ri->ri_free; in tulip_txput()
3963 error = bus_dmamap_load_mbuf_sg(ri->ri_data_tag, *eop->di_map, m, segs, in tulip_txput()
3982 error = bus_dmamap_load_mbuf_sg(ri->ri_data_tag, *eop->di_map, m, in tulip_txput()
4015 bus_dmamap_unload(ri->ri_data_tag, *eop->di_map); in tulip_txput()
4027 if (++nextout == ri->ri_last) in tulip_txput()
4028 nextout = ri->ri_first; in tulip_txput()
4038 if (++nextout == ri->ri_last) in tulip_txput()
4039 nextout = ri->ri_first; in tulip_txput()
4050 if (eop != ri->ri_nextout) { in tulip_txput()
4052 eop->di_map = ri->ri_nextout->di_map; in tulip_txput()
4053 ri->ri_nextout->di_map = map; in tulip_txput()
4067 m, ri->ri_nextout - ri->ri_first, eop - ri->ri_first); in tulip_txput()
4070 TULIP_TXMAP_PRESYNC(ri, ri->ri_nextout); in tulip_txput()
4079 TULIP_TXDESC_PRESYNC(ri); in tulip_txput()
4092 ri->ri_nextout->di_desc->d_flag |= TULIP_DFLAG_TxFIRSTSEG; in tulip_txput()
4093 TULIP_TXDESC_PRESYNC(ri); in tulip_txput()
4094 ri->ri_nextout->di_desc->d_status = TULIP_DSTS_OWNER; in tulip_txput()
4095 TULIP_TXDESC_PRESYNC(ri); in tulip_txput()
4100 ri->ri_nextout = nextout; in tulip_txput()
4101 ri->ri_free = free; in tulip_txput()
4155 tulip_ringinfo_t * const ri = &sc->tulip_txinfo; in tulip_txput_setup() local
4174 if (ri->ri_free < 2) in tulip_txput_setup()
4176 if ((sc->tulip_flags & TULIP_DOINGSETUP) || ri->ri_free == 1) { in tulip_txput_setup()
4187 ri->ri_free--; in tulip_txput_setup()
4188 nextout = ri->ri_nextout->di_desc; in tulip_txput_setup()
4203 TULIP_TXDESC_PRESYNC(ri); in tulip_txput_setup()
4205 ri->ri_nextout - ri->ri_first); in tulip_txput_setup()
4210 if (++ri->ri_nextout == ri->ri_last) in tulip_txput_setup()
4211 ri->ri_nextout = ri->ri_first; in tulip_txput_setup()
4218 ri->ri_nextout->di_desc->d_status = 0; in tulip_txput_setup()
4219 TULIP_TXDESC_PRESYNC(ri); in tulip_txput_setup()
4224 TULIP_TXDESC_PRESYNC(ri); in tulip_txput_setup()
4436 tulip_busdma_freering(tulip_ringinfo_t *ri) in tulip_busdma_freering() argument
4441 if (ri->ri_data_maps != NULL) { in tulip_busdma_freering()
4442 for (i = 0; i < ri->ri_max; i++) { in tulip_busdma_freering()
4443 if (ri->ri_data_maps[i] != NULL) { in tulip_busdma_freering()
4444 bus_dmamap_destroy(ri->ri_data_tag, ri->ri_data_maps[i]); in tulip_busdma_freering()
4445 ri->ri_data_maps[i] = NULL; in tulip_busdma_freering()
4448 free(ri->ri_data_maps, M_DEVBUF); in tulip_busdma_freering()
4449 ri->ri_data_maps = NULL; in tulip_busdma_freering()
4451 if (ri->ri_data_tag != NULL) { in tulip_busdma_freering()
4452 bus_dma_tag_destroy(ri->ri_data_tag); in tulip_busdma_freering()
4453 ri->ri_data_tag = NULL; in tulip_busdma_freering()
4457 if (ri->ri_dma_addr != 0) { in tulip_busdma_freering()
4458 bus_dmamap_unload(ri->ri_ring_tag, ri->ri_ring_map); in tulip_busdma_freering()
4459 ri->ri_dma_addr = 0; in tulip_busdma_freering()
4461 if (ri->ri_descs != NULL) { in tulip_busdma_freering()
4462 bus_dmamem_free(ri->ri_ring_tag, ri->ri_descs, ri->ri_ring_map); in tulip_busdma_freering()
4463 ri->ri_ring_map = NULL; in tulip_busdma_freering()
4464 ri->ri_descs = NULL; in tulip_busdma_freering()
4466 if (ri->ri_ring_tag != NULL) { in tulip_busdma_freering()
4467 bus_dma_tag_destroy(ri->ri_ring_tag); in tulip_busdma_freering()
4468 ri->ri_ring_tag = NULL; in tulip_busdma_freering()
4475 bus_size_t align, int nsegs, tulip_ringinfo_t *ri, const char *name) in tulip_busdma_allocring() argument
4481 ri->ri_max = count; in tulip_busdma_allocring()
4486 &ri->ri_ring_tag); in tulip_busdma_allocring()
4494 error = bus_dmamem_alloc(ri->ri_ring_tag, (void **)&ri->ri_descs, in tulip_busdma_allocring()
4495 BUS_DMA_NOWAIT | BUS_DMA_ZERO, &ri->ri_ring_map); in tulip_busdma_allocring()
4503 error = bus_dmamap_load(ri->ri_ring_tag, ri->ri_ring_map, ri->ri_descs, in tulip_busdma_allocring()
4504 size, tulip_dma_map_addr, &ri->ri_dma_addr, BUS_DMA_NOWAIT); in tulip_busdma_allocring()
4514 MCLBYTES * nsegs, nsegs, MCLBYTES, 0, NULL, NULL, &ri->ri_data_tag); in tulip_busdma_allocring()
4521 ri->ri_data_maps = malloc(sizeof(bus_dmamap_t) * count, M_DEVBUF, in tulip_busdma_allocring()
4524 error = bus_dmamap_create(ri->ri_data_tag, 0, &ri->ri_data_maps[i]); in tulip_busdma_allocring()
4643 tulip_ringinfo_t * const ri, in tulip_initring() argument
4648 ri->ri_descinfo = malloc(sizeof(tulip_descinfo_t) * ndescs, M_DEVBUF, in tulip_initring()
4651 ri->ri_descinfo[i].di_desc = &ri->ri_descs[i]; in tulip_initring()
4652 ri->ri_descinfo[i].di_map = &ri->ri_data_maps[i]; in tulip_initring()
4654 ri->ri_first = ri->ri_descinfo; in tulip_initring()
4655 ri->ri_max = ndescs; in tulip_initring()
4656 ri->ri_last = ri->ri_first + ri->ri_max; in tulip_initring()
4657 bzero(ri->ri_descs, sizeof(tulip_desc_t) * ri->ri_max); in tulip_initring()
4658 ri->ri_last[-1].di_desc->d_flag = TULIP_DFLAG_ENDRING; in tulip_initring()
4921 tulip_ringinfo_t *ri; in tulip_dumpring() local
4937 ri = &sc->tulip_rxinfo; in tulip_dumpring()
4941 ri = &sc->tulip_txinfo; in tulip_dumpring()
4949 ri->ri_nextin - ri->ri_first, ri->ri_nextout - ri->ri_first, in tulip_dumpring()
4950 ri->ri_max, ri->ri_free); in tulip_dumpring()
4951 for (di = ri->ri_first; di != ri->ri_last; di++) { in tulip_dumpring()
4953 db_printf(" descriptor %td: mbuf %p\n", di - ri->ri_first, in tulip_dumpring()
4956 db_printf(" descriptor %td: setup packet\n", di - ri->ri_first); in tulip_dumpring()
4964 tulip_ringinfo_t *ri; in tulip_dumpdesc() local
4981 ri = &sc->tulip_rxinfo; in tulip_dumpdesc()
4985 ri = &sc->tulip_txinfo; in tulip_dumpdesc()
4992 if (desc < 0 || desc >= ri->ri_max) { in tulip_dumpdesc()
4998 di = &ri->ri_first[desc]; in tulip_dumpdesc()