Lines Matching refs:ring

156 		    struct rt_softc_rx_ring *ring, int limit);
158 struct rt_softc_tx_ring *ring);
166 struct rt_softc_rx_ring *ring, int qid);
168 struct rt_softc_rx_ring *ring);
170 struct rt_softc_rx_ring *ring);
172 struct rt_softc_tx_ring *ring, int qid);
174 struct rt_softc_tx_ring *ring);
176 struct rt_softc_tx_ring *ring);
1042 struct rt_softc_tx_ring *ring; in rt_tx_data() local
1056 ring = &sc->tx_ring[qid]; in rt_tx_data()
1057 desc = &ring->desc[ring->desc_cur]; in rt_tx_data()
1058 data = &ring->data[ring->data_cur]; in rt_tx_data()
1060 error = bus_dmamap_load_mbuf_sg(ring->data_dma_tag, data->dma_map, m, in rt_tx_data()
1080 error = bus_dmamap_load_mbuf_sg(ring->data_dma_tag, in rt_tx_data()
1096 if ((ring->desc_queued + ndescs) > in rt_tx_data()
1103 bus_dmamap_unload(ring->data_dma_tag, data->dma_map); in rt_tx_data()
1152 ring->desc_queued++; in rt_tx_data()
1153 ring->desc_cur = (ring->desc_cur + 1) % in rt_tx_data()
1156 desc = &ring->desc[ring->desc_cur]; in rt_tx_data()
1168 bus_dmamap_sync(ring->seg0_dma_tag, ring->seg0_dma_map, in rt_tx_data()
1170 bus_dmamap_sync(ring->data_dma_tag, data->dma_map, in rt_tx_data()
1172 bus_dmamap_sync(ring->desc_dma_tag, ring->desc_dma_map, in rt_tx_data()
1175 ring->desc_queued++; in rt_tx_data()
1176 ring->desc_cur = (ring->desc_cur + 1) % RT_SOFTC_TX_RING_DESC_COUNT; in rt_tx_data()
1178 ring->data_queued++; in rt_tx_data()
1179 ring->data_cur = (ring->data_cur + 1) % RT_SOFTC_TX_RING_DATA_COUNT; in rt_tx_data()
1182 RT_WRITE(sc, sc->tx_ctx_idx[qid], ring->desc_cur); in rt_tx_data()
1847 rt_rx_eof(struct rt_softc *sc, struct rt_softc_rx_ring *ring, int limit) in rt_rx_eof() argument
1866 if (ring->cur == index) in rt_rx_eof()
1869 desc = &ring->desc[ring->cur]; in rt_rx_eof()
1870 data = &ring->data[ring->cur]; in rt_rx_eof()
1872 bus_dmamap_sync(ring->desc_dma_tag, ring->desc_dma_map, in rt_rx_eof()
1906 error = bus_dmamap_load_mbuf_sg(ring->data_dma_tag, in rt_rx_eof()
1907 ring->spare_dma_map, mnew, segs, &nsegs, BUS_DMA_NOWAIT); in rt_rx_eof()
1925 bus_dmamap_sync(ring->data_dma_tag, data->dma_map, in rt_rx_eof()
1927 bus_dmamap_unload(ring->data_dma_tag, data->dma_map); in rt_rx_eof()
1930 data->dma_map = ring->spare_dma_map; in rt_rx_eof()
1931 ring->spare_dma_map = dma_map; in rt_rx_eof()
1933 bus_dmamap_sync(ring->data_dma_tag, data->dma_map, in rt_rx_eof()
1979 bus_dmamap_sync(ring->desc_dma_tag, ring->desc_dma_map, in rt_rx_eof()
1982 ring->cur = (ring->cur + 1) % RT_SOFTC_RX_RING_DATA_COUNT; in rt_rx_eof()
1987 if (ring->cur == 0) in rt_rx_eof()
1992 ring->cur - 1); in rt_rx_eof()
2006 rt_tx_eof(struct rt_softc *sc, struct rt_softc_tx_ring *ring) in rt_tx_eof() argument
2020 index = RT_READ(sc, sc->tx_dtx_idx[ring->qid]); in rt_tx_eof()
2021 if (ring->desc_next == index) in rt_tx_eof()
2026 desc = &ring->desc[ring->desc_next]; in rt_tx_eof()
2028 bus_dmamap_sync(ring->desc_dma_tag, ring->desc_dma_map, in rt_tx_eof()
2035 data = &ring->data[ring->data_next]; in rt_tx_eof()
2037 bus_dmamap_sync(ring->data_dma_tag, data->dma_map, in rt_tx_eof()
2039 bus_dmamap_unload(ring->data_dma_tag, data->dma_map); in rt_tx_eof()
2047 RT_SOFTC_TX_RING_LOCK(ring); in rt_tx_eof()
2048 ring->data_queued--; in rt_tx_eof()
2049 ring->data_next = (ring->data_next + 1) % in rt_tx_eof()
2051 RT_SOFTC_TX_RING_UNLOCK(ring); in rt_tx_eof()
2056 bus_dmamap_sync(ring->desc_dma_tag, ring->desc_dma_map, in rt_tx_eof()
2059 RT_SOFTC_TX_RING_LOCK(ring); in rt_tx_eof()
2060 ring->desc_queued--; in rt_tx_eof()
2061 ring->desc_next = (ring->desc_next + 1) % in rt_tx_eof()
2063 RT_SOFTC_TX_RING_UNLOCK(ring); in rt_tx_eof()
2067 "Tx eof: qid=%d, ndescs=%d, nframes=%d\n", ring->qid, ndescs, in rt_tx_eof()
2210 rt_alloc_rx_ring(struct rt_softc *sc, struct rt_softc_rx_ring *ring, int qid) in rt_alloc_rx_ring() argument
2221 0, NULL, NULL, &ring->desc_dma_tag); in rt_alloc_rx_ring()
2228 error = bus_dmamem_alloc(ring->desc_dma_tag, (void **) &ring->desc, in rt_alloc_rx_ring()
2229 BUS_DMA_NOWAIT | BUS_DMA_ZERO, &ring->desc_dma_map); in rt_alloc_rx_ring()
2236 error = bus_dmamap_load(ring->desc_dma_tag, ring->desc_dma_map, in rt_alloc_rx_ring()
2237 ring->desc, in rt_alloc_rx_ring()
2239 rt_dma_map_addr, &ring->desc_phys_addr, 0); in rt_alloc_rx_ring()
2248 &ring->data_dma_tag); in rt_alloc_rx_ring()
2256 desc = &ring->desc[i]; in rt_alloc_rx_ring()
2257 data = &ring->data[i]; in rt_alloc_rx_ring()
2259 error = bus_dmamap_create(ring->data_dma_tag, 0, in rt_alloc_rx_ring()
2277 error = bus_dmamap_load_mbuf_sg(ring->data_dma_tag, in rt_alloc_rx_ring()
2293 error = bus_dmamap_create(ring->data_dma_tag, 0, in rt_alloc_rx_ring()
2294 &ring->spare_dma_map); in rt_alloc_rx_ring()
2301 bus_dmamap_sync(ring->desc_dma_tag, ring->desc_dma_map, in rt_alloc_rx_ring()
2303 ring->qid = qid; in rt_alloc_rx_ring()
2307 rt_free_rx_ring(sc, ring); in rt_alloc_rx_ring()
2315 rt_reset_rx_ring(struct rt_softc *sc, struct rt_softc_rx_ring *ring) in rt_reset_rx_ring() argument
2321 desc = &ring->desc[i]; in rt_reset_rx_ring()
2325 bus_dmamap_sync(ring->desc_dma_tag, ring->desc_dma_map, in rt_reset_rx_ring()
2327 ring->cur = 0; in rt_reset_rx_ring()
2334 rt_free_rx_ring(struct rt_softc *sc, struct rt_softc_rx_ring *ring) in rt_free_rx_ring() argument
2339 if (ring->desc != NULL) { in rt_free_rx_ring()
2340 bus_dmamap_sync(ring->desc_dma_tag, ring->desc_dma_map, in rt_free_rx_ring()
2342 bus_dmamap_unload(ring->desc_dma_tag, ring->desc_dma_map); in rt_free_rx_ring()
2343 bus_dmamem_free(ring->desc_dma_tag, ring->desc, in rt_free_rx_ring()
2344 ring->desc_dma_map); in rt_free_rx_ring()
2347 if (ring->desc_dma_tag != NULL) in rt_free_rx_ring()
2348 bus_dma_tag_destroy(ring->desc_dma_tag); in rt_free_rx_ring()
2351 data = &ring->data[i]; in rt_free_rx_ring()
2354 bus_dmamap_sync(ring->data_dma_tag, data->dma_map, in rt_free_rx_ring()
2356 bus_dmamap_unload(ring->data_dma_tag, data->dma_map); in rt_free_rx_ring()
2361 bus_dmamap_destroy(ring->data_dma_tag, data->dma_map); in rt_free_rx_ring()
2364 if (ring->spare_dma_map != NULL) in rt_free_rx_ring()
2365 bus_dmamap_destroy(ring->data_dma_tag, ring->spare_dma_map); in rt_free_rx_ring()
2367 if (ring->data_dma_tag != NULL) in rt_free_rx_ring()
2368 bus_dma_tag_destroy(ring->data_dma_tag); in rt_free_rx_ring()
2375 rt_alloc_tx_ring(struct rt_softc *sc, struct rt_softc_tx_ring *ring, int qid) in rt_alloc_tx_ring() argument
2380 mtx_init(&ring->lock, device_get_nameunit(sc->dev), NULL, MTX_DEF); in rt_alloc_tx_ring()
2386 0, NULL, NULL, &ring->desc_dma_tag); in rt_alloc_tx_ring()
2393 error = bus_dmamem_alloc(ring->desc_dma_tag, (void **) &ring->desc, in rt_alloc_tx_ring()
2394 BUS_DMA_NOWAIT | BUS_DMA_ZERO, &ring->desc_dma_map); in rt_alloc_tx_ring()
2401 error = bus_dmamap_load(ring->desc_dma_tag, ring->desc_dma_map, in rt_alloc_tx_ring()
2402 ring->desc, (RT_SOFTC_TX_RING_DESC_COUNT * in rt_alloc_tx_ring()
2404 &ring->desc_phys_addr, 0); in rt_alloc_tx_ring()
2410 ring->desc_queued = 0; in rt_alloc_tx_ring()
2411 ring->desc_cur = 0; in rt_alloc_tx_ring()
2412 ring->desc_next = 0; in rt_alloc_tx_ring()
2418 0, NULL, NULL, &ring->seg0_dma_tag); in rt_alloc_tx_ring()
2425 error = bus_dmamem_alloc(ring->seg0_dma_tag, (void **) &ring->seg0, in rt_alloc_tx_ring()
2426 BUS_DMA_NOWAIT | BUS_DMA_ZERO, &ring->seg0_dma_map); in rt_alloc_tx_ring()
2433 error = bus_dmamap_load(ring->seg0_dma_tag, ring->seg0_dma_map, in rt_alloc_tx_ring()
2434 ring->seg0, in rt_alloc_tx_ring()
2436 rt_dma_map_addr, &ring->seg0_phys_addr, 0); in rt_alloc_tx_ring()
2445 &ring->data_dma_tag); in rt_alloc_tx_ring()
2453 data = &ring->data[i]; in rt_alloc_tx_ring()
2455 error = bus_dmamap_create(ring->data_dma_tag, 0, in rt_alloc_tx_ring()
2464 ring->data_queued = 0; in rt_alloc_tx_ring()
2465 ring->data_cur = 0; in rt_alloc_tx_ring()
2466 ring->data_next = 0; in rt_alloc_tx_ring()
2468 ring->qid = qid; in rt_alloc_tx_ring()
2472 rt_free_tx_ring(sc, ring); in rt_alloc_tx_ring()
2480 rt_reset_tx_ring(struct rt_softc *sc, struct rt_softc_tx_ring *ring) in rt_reset_tx_ring() argument
2487 desc = &ring->desc[i]; in rt_reset_tx_ring()
2493 ring->desc_queued = 0; in rt_reset_tx_ring()
2494 ring->desc_cur = 0; in rt_reset_tx_ring()
2495 ring->desc_next = 0; in rt_reset_tx_ring()
2497 bus_dmamap_sync(ring->desc_dma_tag, ring->desc_dma_map, in rt_reset_tx_ring()
2500 bus_dmamap_sync(ring->seg0_dma_tag, ring->seg0_dma_map, in rt_reset_tx_ring()
2504 data = &ring->data[i]; in rt_reset_tx_ring()
2507 bus_dmamap_sync(ring->data_dma_tag, data->dma_map, in rt_reset_tx_ring()
2509 bus_dmamap_unload(ring->data_dma_tag, data->dma_map); in rt_reset_tx_ring()
2515 ring->data_queued = 0; in rt_reset_tx_ring()
2516 ring->data_cur = 0; in rt_reset_tx_ring()
2517 ring->data_next = 0; in rt_reset_tx_ring()
2524 rt_free_tx_ring(struct rt_softc *sc, struct rt_softc_tx_ring *ring) in rt_free_tx_ring() argument
2529 if (ring->desc != NULL) { in rt_free_tx_ring()
2530 bus_dmamap_sync(ring->desc_dma_tag, ring->desc_dma_map, in rt_free_tx_ring()
2532 bus_dmamap_unload(ring->desc_dma_tag, ring->desc_dma_map); in rt_free_tx_ring()
2533 bus_dmamem_free(ring->desc_dma_tag, ring->desc, in rt_free_tx_ring()
2534 ring->desc_dma_map); in rt_free_tx_ring()
2537 if (ring->desc_dma_tag != NULL) in rt_free_tx_ring()
2538 bus_dma_tag_destroy(ring->desc_dma_tag); in rt_free_tx_ring()
2540 if (ring->seg0 != NULL) { in rt_free_tx_ring()
2541 bus_dmamap_sync(ring->seg0_dma_tag, ring->seg0_dma_map, in rt_free_tx_ring()
2543 bus_dmamap_unload(ring->seg0_dma_tag, ring->seg0_dma_map); in rt_free_tx_ring()
2544 bus_dmamem_free(ring->seg0_dma_tag, ring->seg0, in rt_free_tx_ring()
2545 ring->seg0_dma_map); in rt_free_tx_ring()
2548 if (ring->seg0_dma_tag != NULL) in rt_free_tx_ring()
2549 bus_dma_tag_destroy(ring->seg0_dma_tag); in rt_free_tx_ring()
2552 data = &ring->data[i]; in rt_free_tx_ring()
2555 bus_dmamap_sync(ring->data_dma_tag, data->dma_map, in rt_free_tx_ring()
2557 bus_dmamap_unload(ring->data_dma_tag, data->dma_map); in rt_free_tx_ring()
2562 bus_dmamap_destroy(ring->data_dma_tag, data->dma_map); in rt_free_tx_ring()
2565 if (ring->data_dma_tag != NULL) in rt_free_tx_ring()
2566 bus_dma_tag_destroy(ring->data_dma_tag); in rt_free_tx_ring()
2568 mtx_destroy(&ring->lock); in rt_free_tx_ring()