Lines Matching refs:ring
153 struct rt_softc_rx_ring *ring, int limit);
155 struct rt_softc_tx_ring *ring);
163 struct rt_softc_rx_ring *ring, int qid);
165 struct rt_softc_rx_ring *ring);
167 struct rt_softc_rx_ring *ring);
169 struct rt_softc_tx_ring *ring, int qid);
171 struct rt_softc_tx_ring *ring);
173 struct rt_softc_tx_ring *ring);
1025 struct rt_softc_tx_ring *ring; in rt_tx_data() local
1039 ring = &sc->tx_ring[qid]; in rt_tx_data()
1040 desc = &ring->desc[ring->desc_cur]; in rt_tx_data()
1041 data = &ring->data[ring->data_cur]; in rt_tx_data()
1043 error = bus_dmamap_load_mbuf_sg(ring->data_dma_tag, data->dma_map, m, in rt_tx_data()
1063 error = bus_dmamap_load_mbuf_sg(ring->data_dma_tag, in rt_tx_data()
1079 if ((ring->desc_queued + ndescs) > in rt_tx_data()
1086 bus_dmamap_unload(ring->data_dma_tag, data->dma_map); in rt_tx_data()
1136 ring->desc_queued++; in rt_tx_data()
1137 ring->desc_cur = (ring->desc_cur + 1) % in rt_tx_data()
1140 desc = &ring->desc[ring->desc_cur]; in rt_tx_data()
1152 bus_dmamap_sync(ring->seg0_dma_tag, ring->seg0_dma_map, in rt_tx_data()
1154 bus_dmamap_sync(ring->data_dma_tag, data->dma_map, in rt_tx_data()
1156 bus_dmamap_sync(ring->desc_dma_tag, ring->desc_dma_map, in rt_tx_data()
1159 ring->desc_queued++; in rt_tx_data()
1160 ring->desc_cur = (ring->desc_cur + 1) % RT_SOFTC_TX_RING_DESC_COUNT; in rt_tx_data()
1162 ring->data_queued++; in rt_tx_data()
1163 ring->data_cur = (ring->data_cur + 1) % RT_SOFTC_TX_RING_DATA_COUNT; in rt_tx_data()
1166 RT_WRITE(sc, sc->tx_ctx_idx[qid], ring->desc_cur); in rt_tx_data()
1831 rt_rx_eof(struct rt_softc *sc, struct rt_softc_rx_ring *ring, int limit) in rt_rx_eof() argument
1850 if (ring->cur == index) in rt_rx_eof()
1853 desc = &ring->desc[ring->cur]; in rt_rx_eof()
1854 data = &ring->data[ring->cur]; in rt_rx_eof()
1856 bus_dmamap_sync(ring->desc_dma_tag, ring->desc_dma_map, in rt_rx_eof()
1890 error = bus_dmamap_load_mbuf_sg(ring->data_dma_tag, in rt_rx_eof()
1891 ring->spare_dma_map, mnew, segs, &nsegs, BUS_DMA_NOWAIT); in rt_rx_eof()
1909 bus_dmamap_sync(ring->data_dma_tag, data->dma_map, in rt_rx_eof()
1911 bus_dmamap_unload(ring->data_dma_tag, data->dma_map); in rt_rx_eof()
1914 data->dma_map = ring->spare_dma_map; in rt_rx_eof()
1915 ring->spare_dma_map = dma_map; in rt_rx_eof()
1917 bus_dmamap_sync(ring->data_dma_tag, data->dma_map, in rt_rx_eof()
1963 bus_dmamap_sync(ring->desc_dma_tag, ring->desc_dma_map, in rt_rx_eof()
1966 ring->cur = (ring->cur + 1) % RT_SOFTC_RX_RING_DATA_COUNT; in rt_rx_eof()
1971 if (ring->cur == 0) in rt_rx_eof()
1976 ring->cur - 1); in rt_rx_eof()
1990 rt_tx_eof(struct rt_softc *sc, struct rt_softc_tx_ring *ring) in rt_tx_eof() argument
2004 index = RT_READ(sc, sc->tx_dtx_idx[ring->qid]); in rt_tx_eof()
2005 if (ring->desc_next == index) in rt_tx_eof()
2010 desc = &ring->desc[ring->desc_next]; in rt_tx_eof()
2012 bus_dmamap_sync(ring->desc_dma_tag, ring->desc_dma_map, in rt_tx_eof()
2019 data = &ring->data[ring->data_next]; in rt_tx_eof()
2021 bus_dmamap_sync(ring->data_dma_tag, data->dma_map, in rt_tx_eof()
2023 bus_dmamap_unload(ring->data_dma_tag, data->dma_map); in rt_tx_eof()
2031 RT_SOFTC_TX_RING_LOCK(ring); in rt_tx_eof()
2032 ring->data_queued--; in rt_tx_eof()
2033 ring->data_next = (ring->data_next + 1) % in rt_tx_eof()
2035 RT_SOFTC_TX_RING_UNLOCK(ring); in rt_tx_eof()
2040 bus_dmamap_sync(ring->desc_dma_tag, ring->desc_dma_map, in rt_tx_eof()
2043 RT_SOFTC_TX_RING_LOCK(ring); in rt_tx_eof()
2044 ring->desc_queued--; in rt_tx_eof()
2045 ring->desc_next = (ring->desc_next + 1) % in rt_tx_eof()
2047 RT_SOFTC_TX_RING_UNLOCK(ring); in rt_tx_eof()
2051 "Tx eof: qid=%d, ndescs=%d, nframes=%d\n", ring->qid, ndescs, in rt_tx_eof()
2194 rt_alloc_rx_ring(struct rt_softc *sc, struct rt_softc_rx_ring *ring, int qid) in rt_alloc_rx_ring() argument
2205 0, NULL, NULL, &ring->desc_dma_tag); in rt_alloc_rx_ring()
2212 error = bus_dmamem_alloc(ring->desc_dma_tag, (void **) &ring->desc, in rt_alloc_rx_ring()
2213 BUS_DMA_NOWAIT | BUS_DMA_ZERO, &ring->desc_dma_map); in rt_alloc_rx_ring()
2220 error = bus_dmamap_load(ring->desc_dma_tag, ring->desc_dma_map, in rt_alloc_rx_ring()
2221 ring->desc, in rt_alloc_rx_ring()
2223 rt_dma_map_addr, &ring->desc_phys_addr, 0); in rt_alloc_rx_ring()
2232 &ring->data_dma_tag); in rt_alloc_rx_ring()
2240 desc = &ring->desc[i]; in rt_alloc_rx_ring()
2241 data = &ring->data[i]; in rt_alloc_rx_ring()
2243 error = bus_dmamap_create(ring->data_dma_tag, 0, in rt_alloc_rx_ring()
2261 error = bus_dmamap_load_mbuf_sg(ring->data_dma_tag, in rt_alloc_rx_ring()
2277 error = bus_dmamap_create(ring->data_dma_tag, 0, in rt_alloc_rx_ring()
2278 &ring->spare_dma_map); in rt_alloc_rx_ring()
2285 bus_dmamap_sync(ring->desc_dma_tag, ring->desc_dma_map, in rt_alloc_rx_ring()
2287 ring->qid = qid; in rt_alloc_rx_ring()
2291 rt_free_rx_ring(sc, ring); in rt_alloc_rx_ring()
2299 rt_reset_rx_ring(struct rt_softc *sc, struct rt_softc_rx_ring *ring) in rt_reset_rx_ring() argument
2305 desc = &ring->desc[i]; in rt_reset_rx_ring()
2309 bus_dmamap_sync(ring->desc_dma_tag, ring->desc_dma_map, in rt_reset_rx_ring()
2311 ring->cur = 0; in rt_reset_rx_ring()
2318 rt_free_rx_ring(struct rt_softc *sc, struct rt_softc_rx_ring *ring) in rt_free_rx_ring() argument
2323 if (ring->desc != NULL) { in rt_free_rx_ring()
2324 bus_dmamap_sync(ring->desc_dma_tag, ring->desc_dma_map, in rt_free_rx_ring()
2326 bus_dmamap_unload(ring->desc_dma_tag, ring->desc_dma_map); in rt_free_rx_ring()
2327 bus_dmamem_free(ring->desc_dma_tag, ring->desc, in rt_free_rx_ring()
2328 ring->desc_dma_map); in rt_free_rx_ring()
2331 if (ring->desc_dma_tag != NULL) in rt_free_rx_ring()
2332 bus_dma_tag_destroy(ring->desc_dma_tag); in rt_free_rx_ring()
2335 data = &ring->data[i]; in rt_free_rx_ring()
2338 bus_dmamap_sync(ring->data_dma_tag, data->dma_map, in rt_free_rx_ring()
2340 bus_dmamap_unload(ring->data_dma_tag, data->dma_map); in rt_free_rx_ring()
2345 bus_dmamap_destroy(ring->data_dma_tag, data->dma_map); in rt_free_rx_ring()
2348 if (ring->spare_dma_map != NULL) in rt_free_rx_ring()
2349 bus_dmamap_destroy(ring->data_dma_tag, ring->spare_dma_map); in rt_free_rx_ring()
2351 if (ring->data_dma_tag != NULL) in rt_free_rx_ring()
2352 bus_dma_tag_destroy(ring->data_dma_tag); in rt_free_rx_ring()
2359 rt_alloc_tx_ring(struct rt_softc *sc, struct rt_softc_tx_ring *ring, int qid) in rt_alloc_tx_ring() argument
2364 mtx_init(&ring->lock, device_get_nameunit(sc->dev), NULL, MTX_DEF); in rt_alloc_tx_ring()
2370 0, NULL, NULL, &ring->desc_dma_tag); in rt_alloc_tx_ring()
2377 error = bus_dmamem_alloc(ring->desc_dma_tag, (void **) &ring->desc, in rt_alloc_tx_ring()
2378 BUS_DMA_NOWAIT | BUS_DMA_ZERO, &ring->desc_dma_map); in rt_alloc_tx_ring()
2385 error = bus_dmamap_load(ring->desc_dma_tag, ring->desc_dma_map, in rt_alloc_tx_ring()
2386 ring->desc, (RT_SOFTC_TX_RING_DESC_COUNT * in rt_alloc_tx_ring()
2388 &ring->desc_phys_addr, 0); in rt_alloc_tx_ring()
2394 ring->desc_queued = 0; in rt_alloc_tx_ring()
2395 ring->desc_cur = 0; in rt_alloc_tx_ring()
2396 ring->desc_next = 0; in rt_alloc_tx_ring()
2402 0, NULL, NULL, &ring->seg0_dma_tag); in rt_alloc_tx_ring()
2409 error = bus_dmamem_alloc(ring->seg0_dma_tag, (void **) &ring->seg0, in rt_alloc_tx_ring()
2410 BUS_DMA_NOWAIT | BUS_DMA_ZERO, &ring->seg0_dma_map); in rt_alloc_tx_ring()
2417 error = bus_dmamap_load(ring->seg0_dma_tag, ring->seg0_dma_map, in rt_alloc_tx_ring()
2418 ring->seg0, in rt_alloc_tx_ring()
2420 rt_dma_map_addr, &ring->seg0_phys_addr, 0); in rt_alloc_tx_ring()
2429 &ring->data_dma_tag); in rt_alloc_tx_ring()
2437 data = &ring->data[i]; in rt_alloc_tx_ring()
2439 error = bus_dmamap_create(ring->data_dma_tag, 0, in rt_alloc_tx_ring()
2448 ring->data_queued = 0; in rt_alloc_tx_ring()
2449 ring->data_cur = 0; in rt_alloc_tx_ring()
2450 ring->data_next = 0; in rt_alloc_tx_ring()
2452 ring->qid = qid; in rt_alloc_tx_ring()
2456 rt_free_tx_ring(sc, ring); in rt_alloc_tx_ring()
2464 rt_reset_tx_ring(struct rt_softc *sc, struct rt_softc_tx_ring *ring) in rt_reset_tx_ring() argument
2471 desc = &ring->desc[i]; in rt_reset_tx_ring()
2477 ring->desc_queued = 0; in rt_reset_tx_ring()
2478 ring->desc_cur = 0; in rt_reset_tx_ring()
2479 ring->desc_next = 0; in rt_reset_tx_ring()
2481 bus_dmamap_sync(ring->desc_dma_tag, ring->desc_dma_map, in rt_reset_tx_ring()
2484 bus_dmamap_sync(ring->seg0_dma_tag, ring->seg0_dma_map, in rt_reset_tx_ring()
2488 data = &ring->data[i]; in rt_reset_tx_ring()
2491 bus_dmamap_sync(ring->data_dma_tag, data->dma_map, in rt_reset_tx_ring()
2493 bus_dmamap_unload(ring->data_dma_tag, data->dma_map); in rt_reset_tx_ring()
2499 ring->data_queued = 0; in rt_reset_tx_ring()
2500 ring->data_cur = 0; in rt_reset_tx_ring()
2501 ring->data_next = 0; in rt_reset_tx_ring()
2508 rt_free_tx_ring(struct rt_softc *sc, struct rt_softc_tx_ring *ring) in rt_free_tx_ring() argument
2513 if (ring->desc != NULL) { in rt_free_tx_ring()
2514 bus_dmamap_sync(ring->desc_dma_tag, ring->desc_dma_map, in rt_free_tx_ring()
2516 bus_dmamap_unload(ring->desc_dma_tag, ring->desc_dma_map); in rt_free_tx_ring()
2517 bus_dmamem_free(ring->desc_dma_tag, ring->desc, in rt_free_tx_ring()
2518 ring->desc_dma_map); in rt_free_tx_ring()
2521 if (ring->desc_dma_tag != NULL) in rt_free_tx_ring()
2522 bus_dma_tag_destroy(ring->desc_dma_tag); in rt_free_tx_ring()
2524 if (ring->seg0 != NULL) { in rt_free_tx_ring()
2525 bus_dmamap_sync(ring->seg0_dma_tag, ring->seg0_dma_map, in rt_free_tx_ring()
2527 bus_dmamap_unload(ring->seg0_dma_tag, ring->seg0_dma_map); in rt_free_tx_ring()
2528 bus_dmamem_free(ring->seg0_dma_tag, ring->seg0, in rt_free_tx_ring()
2529 ring->seg0_dma_map); in rt_free_tx_ring()
2532 if (ring->seg0_dma_tag != NULL) in rt_free_tx_ring()
2533 bus_dma_tag_destroy(ring->seg0_dma_tag); in rt_free_tx_ring()
2536 data = &ring->data[i]; in rt_free_tx_ring()
2539 bus_dmamap_sync(ring->data_dma_tag, data->dma_map, in rt_free_tx_ring()
2541 bus_dmamap_unload(ring->data_dma_tag, data->dma_map); in rt_free_tx_ring()
2546 bus_dmamap_destroy(ring->data_dma_tag, data->dma_map); in rt_free_tx_ring()
2549 if (ring->data_dma_tag != NULL) in rt_free_tx_ring()
2550 bus_dma_tag_destroy(ring->data_dma_tag); in rt_free_tx_ring()
2552 mtx_destroy(&ring->lock); in rt_free_tx_ring()