Lines Matching refs:ring

138 		    struct rt_softc_rx_ring *ring, int limit);
140 struct rt_softc_tx_ring *ring);
148 struct rt_softc_rx_ring *ring, int qid);
150 struct rt_softc_rx_ring *ring);
152 struct rt_softc_rx_ring *ring);
154 struct rt_softc_tx_ring *ring, int qid);
156 struct rt_softc_tx_ring *ring);
158 struct rt_softc_tx_ring *ring);
986 struct rt_softc_tx_ring *ring; in rt_tx_data() local
1000 ring = &sc->tx_ring[qid]; in rt_tx_data()
1001 desc = &ring->desc[ring->desc_cur]; in rt_tx_data()
1002 data = &ring->data[ring->data_cur]; in rt_tx_data()
1004 error = bus_dmamap_load_mbuf_sg(ring->data_dma_tag, data->dma_map, m, in rt_tx_data()
1024 error = bus_dmamap_load_mbuf_sg(ring->data_dma_tag, in rt_tx_data()
1040 if ((ring->desc_queued + ndescs) > in rt_tx_data()
1047 bus_dmamap_unload(ring->data_dma_tag, data->dma_map); in rt_tx_data()
1090 ring->desc_queued++; in rt_tx_data()
1091 ring->desc_cur = (ring->desc_cur + 1) % in rt_tx_data()
1094 desc = &ring->desc[ring->desc_cur]; in rt_tx_data()
1106 bus_dmamap_sync(ring->seg0_dma_tag, ring->seg0_dma_map, in rt_tx_data()
1108 bus_dmamap_sync(ring->data_dma_tag, data->dma_map, in rt_tx_data()
1110 bus_dmamap_sync(ring->desc_dma_tag, ring->desc_dma_map, in rt_tx_data()
1113 ring->desc_queued++; in rt_tx_data()
1114 ring->desc_cur = (ring->desc_cur + 1) % RT_SOFTC_TX_RING_DESC_COUNT; in rt_tx_data()
1116 ring->data_queued++; in rt_tx_data()
1117 ring->data_cur = (ring->data_cur + 1) % RT_SOFTC_TX_RING_DATA_COUNT; in rt_tx_data()
1120 RT_WRITE(sc, sc->tx_ctx_idx[qid], ring->desc_cur); in rt_tx_data()
1784 rt_rx_eof(struct rt_softc *sc, struct rt_softc_rx_ring *ring, int limit) in rt_rx_eof() argument
1803 if (ring->cur == index) in rt_rx_eof()
1806 desc = &ring->desc[ring->cur]; in rt_rx_eof()
1807 data = &ring->data[ring->cur]; in rt_rx_eof()
1809 bus_dmamap_sync(ring->desc_dma_tag, ring->desc_dma_map, in rt_rx_eof()
1843 error = bus_dmamap_load_mbuf_sg(ring->data_dma_tag, in rt_rx_eof()
1844 ring->spare_dma_map, mnew, segs, &nsegs, BUS_DMA_NOWAIT); in rt_rx_eof()
1862 bus_dmamap_sync(ring->data_dma_tag, data->dma_map, in rt_rx_eof()
1864 bus_dmamap_unload(ring->data_dma_tag, data->dma_map); in rt_rx_eof()
1867 data->dma_map = ring->spare_dma_map; in rt_rx_eof()
1868 ring->spare_dma_map = dma_map; in rt_rx_eof()
1870 bus_dmamap_sync(ring->data_dma_tag, data->dma_map, in rt_rx_eof()
1919 bus_dmamap_sync(ring->desc_dma_tag, ring->desc_dma_map, in rt_rx_eof()
1922 ring->cur = (ring->cur + 1) % RT_SOFTC_RX_RING_DATA_COUNT; in rt_rx_eof()
1927 if (ring->cur == 0) in rt_rx_eof()
1932 ring->cur - 1); in rt_rx_eof()
1946 rt_tx_eof(struct rt_softc *sc, struct rt_softc_tx_ring *ring) in rt_tx_eof() argument
1960 index = RT_READ(sc, sc->tx_dtx_idx[ring->qid]); in rt_tx_eof()
1961 if (ring->desc_next == index) in rt_tx_eof()
1966 desc = &ring->desc[ring->desc_next]; in rt_tx_eof()
1968 bus_dmamap_sync(ring->desc_dma_tag, ring->desc_dma_map, in rt_tx_eof()
1975 data = &ring->data[ring->data_next]; in rt_tx_eof()
1977 bus_dmamap_sync(ring->data_dma_tag, data->dma_map, in rt_tx_eof()
1979 bus_dmamap_unload(ring->data_dma_tag, data->dma_map); in rt_tx_eof()
1987 RT_SOFTC_TX_RING_LOCK(ring); in rt_tx_eof()
1988 ring->data_queued--; in rt_tx_eof()
1989 ring->data_next = (ring->data_next + 1) % in rt_tx_eof()
1991 RT_SOFTC_TX_RING_UNLOCK(ring); in rt_tx_eof()
1996 bus_dmamap_sync(ring->desc_dma_tag, ring->desc_dma_map, in rt_tx_eof()
1999 RT_SOFTC_TX_RING_LOCK(ring); in rt_tx_eof()
2000 ring->desc_queued--; in rt_tx_eof()
2001 ring->desc_next = (ring->desc_next + 1) % in rt_tx_eof()
2003 RT_SOFTC_TX_RING_UNLOCK(ring); in rt_tx_eof()
2007 "Tx eof: qid=%d, ndescs=%d, nframes=%d\n", ring->qid, ndescs, in rt_tx_eof()
2149 rt_alloc_rx_ring(struct rt_softc *sc, struct rt_softc_rx_ring *ring, int qid) in rt_alloc_rx_ring() argument
2160 0, NULL, NULL, &ring->desc_dma_tag); in rt_alloc_rx_ring()
2167 error = bus_dmamem_alloc(ring->desc_dma_tag, (void **) &ring->desc, in rt_alloc_rx_ring()
2168 BUS_DMA_NOWAIT | BUS_DMA_ZERO, &ring->desc_dma_map); in rt_alloc_rx_ring()
2175 error = bus_dmamap_load(ring->desc_dma_tag, ring->desc_dma_map, in rt_alloc_rx_ring()
2176 ring->desc, in rt_alloc_rx_ring()
2178 rt_dma_map_addr, &ring->desc_phys_addr, 0); in rt_alloc_rx_ring()
2187 &ring->data_dma_tag); in rt_alloc_rx_ring()
2195 desc = &ring->desc[i]; in rt_alloc_rx_ring()
2196 data = &ring->data[i]; in rt_alloc_rx_ring()
2198 error = bus_dmamap_create(ring->data_dma_tag, 0, in rt_alloc_rx_ring()
2216 error = bus_dmamap_load_mbuf_sg(ring->data_dma_tag, in rt_alloc_rx_ring()
2232 error = bus_dmamap_create(ring->data_dma_tag, 0, in rt_alloc_rx_ring()
2233 &ring->spare_dma_map); in rt_alloc_rx_ring()
2240 bus_dmamap_sync(ring->desc_dma_tag, ring->desc_dma_map, in rt_alloc_rx_ring()
2242 ring->qid = qid; in rt_alloc_rx_ring()
2246 rt_free_rx_ring(sc, ring); in rt_alloc_rx_ring()
2254 rt_reset_rx_ring(struct rt_softc *sc, struct rt_softc_rx_ring *ring) in rt_reset_rx_ring() argument
2260 desc = &ring->desc[i]; in rt_reset_rx_ring()
2264 bus_dmamap_sync(ring->desc_dma_tag, ring->desc_dma_map, in rt_reset_rx_ring()
2266 ring->cur = 0; in rt_reset_rx_ring()
2273 rt_free_rx_ring(struct rt_softc *sc, struct rt_softc_rx_ring *ring) in rt_free_rx_ring() argument
2278 if (ring->desc != NULL) { in rt_free_rx_ring()
2279 bus_dmamap_sync(ring->desc_dma_tag, ring->desc_dma_map, in rt_free_rx_ring()
2281 bus_dmamap_unload(ring->desc_dma_tag, ring->desc_dma_map); in rt_free_rx_ring()
2282 bus_dmamem_free(ring->desc_dma_tag, ring->desc, in rt_free_rx_ring()
2283 ring->desc_dma_map); in rt_free_rx_ring()
2286 if (ring->desc_dma_tag != NULL) in rt_free_rx_ring()
2287 bus_dma_tag_destroy(ring->desc_dma_tag); in rt_free_rx_ring()
2290 data = &ring->data[i]; in rt_free_rx_ring()
2293 bus_dmamap_sync(ring->data_dma_tag, data->dma_map, in rt_free_rx_ring()
2295 bus_dmamap_unload(ring->data_dma_tag, data->dma_map); in rt_free_rx_ring()
2300 bus_dmamap_destroy(ring->data_dma_tag, data->dma_map); in rt_free_rx_ring()
2303 if (ring->spare_dma_map != NULL) in rt_free_rx_ring()
2304 bus_dmamap_destroy(ring->data_dma_tag, ring->spare_dma_map); in rt_free_rx_ring()
2306 if (ring->data_dma_tag != NULL) in rt_free_rx_ring()
2307 bus_dma_tag_destroy(ring->data_dma_tag); in rt_free_rx_ring()
2314 rt_alloc_tx_ring(struct rt_softc *sc, struct rt_softc_tx_ring *ring, int qid) in rt_alloc_tx_ring() argument
2319 mtx_init(&ring->lock, device_get_nameunit(sc->dev), NULL, MTX_DEF); in rt_alloc_tx_ring()
2325 0, NULL, NULL, &ring->desc_dma_tag); in rt_alloc_tx_ring()
2332 error = bus_dmamem_alloc(ring->desc_dma_tag, (void **) &ring->desc, in rt_alloc_tx_ring()
2333 BUS_DMA_NOWAIT | BUS_DMA_ZERO, &ring->desc_dma_map); in rt_alloc_tx_ring()
2340 error = bus_dmamap_load(ring->desc_dma_tag, ring->desc_dma_map, in rt_alloc_tx_ring()
2341 ring->desc, (RT_SOFTC_TX_RING_DESC_COUNT * in rt_alloc_tx_ring()
2343 &ring->desc_phys_addr, 0); in rt_alloc_tx_ring()
2349 ring->desc_queued = 0; in rt_alloc_tx_ring()
2350 ring->desc_cur = 0; in rt_alloc_tx_ring()
2351 ring->desc_next = 0; in rt_alloc_tx_ring()
2357 0, NULL, NULL, &ring->seg0_dma_tag); in rt_alloc_tx_ring()
2364 error = bus_dmamem_alloc(ring->seg0_dma_tag, (void **) &ring->seg0, in rt_alloc_tx_ring()
2365 BUS_DMA_NOWAIT | BUS_DMA_ZERO, &ring->seg0_dma_map); in rt_alloc_tx_ring()
2372 error = bus_dmamap_load(ring->seg0_dma_tag, ring->seg0_dma_map, in rt_alloc_tx_ring()
2373 ring->seg0, in rt_alloc_tx_ring()
2375 rt_dma_map_addr, &ring->seg0_phys_addr, 0); in rt_alloc_tx_ring()
2384 &ring->data_dma_tag); in rt_alloc_tx_ring()
2392 data = &ring->data[i]; in rt_alloc_tx_ring()
2394 error = bus_dmamap_create(ring->data_dma_tag, 0, in rt_alloc_tx_ring()
2403 ring->data_queued = 0; in rt_alloc_tx_ring()
2404 ring->data_cur = 0; in rt_alloc_tx_ring()
2405 ring->data_next = 0; in rt_alloc_tx_ring()
2407 ring->qid = qid; in rt_alloc_tx_ring()
2411 rt_free_tx_ring(sc, ring); in rt_alloc_tx_ring()
2419 rt_reset_tx_ring(struct rt_softc *sc, struct rt_softc_tx_ring *ring) in rt_reset_tx_ring() argument
2426 desc = &ring->desc[i]; in rt_reset_tx_ring()
2432 ring->desc_queued = 0; in rt_reset_tx_ring()
2433 ring->desc_cur = 0; in rt_reset_tx_ring()
2434 ring->desc_next = 0; in rt_reset_tx_ring()
2436 bus_dmamap_sync(ring->desc_dma_tag, ring->desc_dma_map, in rt_reset_tx_ring()
2439 bus_dmamap_sync(ring->seg0_dma_tag, ring->seg0_dma_map, in rt_reset_tx_ring()
2443 data = &ring->data[i]; in rt_reset_tx_ring()
2446 bus_dmamap_sync(ring->data_dma_tag, data->dma_map, in rt_reset_tx_ring()
2448 bus_dmamap_unload(ring->data_dma_tag, data->dma_map); in rt_reset_tx_ring()
2454 ring->data_queued = 0; in rt_reset_tx_ring()
2455 ring->data_cur = 0; in rt_reset_tx_ring()
2456 ring->data_next = 0; in rt_reset_tx_ring()
2463 rt_free_tx_ring(struct rt_softc *sc, struct rt_softc_tx_ring *ring) in rt_free_tx_ring() argument
2468 if (ring->desc != NULL) { in rt_free_tx_ring()
2469 bus_dmamap_sync(ring->desc_dma_tag, ring->desc_dma_map, in rt_free_tx_ring()
2471 bus_dmamap_unload(ring->desc_dma_tag, ring->desc_dma_map); in rt_free_tx_ring()
2472 bus_dmamem_free(ring->desc_dma_tag, ring->desc, in rt_free_tx_ring()
2473 ring->desc_dma_map); in rt_free_tx_ring()
2476 if (ring->desc_dma_tag != NULL) in rt_free_tx_ring()
2477 bus_dma_tag_destroy(ring->desc_dma_tag); in rt_free_tx_ring()
2479 if (ring->seg0 != NULL) { in rt_free_tx_ring()
2480 bus_dmamap_sync(ring->seg0_dma_tag, ring->seg0_dma_map, in rt_free_tx_ring()
2482 bus_dmamap_unload(ring->seg0_dma_tag, ring->seg0_dma_map); in rt_free_tx_ring()
2483 bus_dmamem_free(ring->seg0_dma_tag, ring->seg0, in rt_free_tx_ring()
2484 ring->seg0_dma_map); in rt_free_tx_ring()
2487 if (ring->seg0_dma_tag != NULL) in rt_free_tx_ring()
2488 bus_dma_tag_destroy(ring->seg0_dma_tag); in rt_free_tx_ring()
2491 data = &ring->data[i]; in rt_free_tx_ring()
2494 bus_dmamap_sync(ring->data_dma_tag, data->dma_map, in rt_free_tx_ring()
2496 bus_dmamap_unload(ring->data_dma_tag, data->dma_map); in rt_free_tx_ring()
2501 bus_dmamap_destroy(ring->data_dma_tag, data->dma_map); in rt_free_tx_ring()
2504 if (ring->data_dma_tag != NULL) in rt_free_tx_ring()
2505 bus_dma_tag_destroy(ring->data_dma_tag); in rt_free_tx_ring()
2507 mtx_destroy(&ring->lock); in rt_free_tx_ring()