Lines Matching refs:ring

454 rt2560_alloc_tx_ring(struct rt2560_softc *sc, struct rt2560_tx_ring *ring,  in rt2560_alloc_tx_ring()  argument
459 ring->count = count; in rt2560_alloc_tx_ring()
460 ring->queued = 0; in rt2560_alloc_tx_ring()
461 ring->cur = ring->next = 0; in rt2560_alloc_tx_ring()
462 ring->cur_encrypt = ring->next_encrypt = 0; in rt2560_alloc_tx_ring()
467 0, NULL, NULL, &ring->desc_dmat); in rt2560_alloc_tx_ring()
473 error = bus_dmamem_alloc(ring->desc_dmat, (void **)&ring->desc, in rt2560_alloc_tx_ring()
474 BUS_DMA_NOWAIT | BUS_DMA_ZERO, &ring->desc_map); in rt2560_alloc_tx_ring()
480 error = bus_dmamap_load(ring->desc_dmat, ring->desc_map, ring->desc, in rt2560_alloc_tx_ring()
481 count * RT2560_TX_DESC_SIZE, rt2560_dma_map_addr, &ring->physaddr, in rt2560_alloc_tx_ring()
488 ring->data = malloc(count * sizeof (struct rt2560_tx_data), M_DEVBUF, in rt2560_alloc_tx_ring()
490 if (ring->data == NULL) { in rt2560_alloc_tx_ring()
499 &ring->data_dmat); in rt2560_alloc_tx_ring()
506 error = bus_dmamap_create(ring->data_dmat, 0, in rt2560_alloc_tx_ring()
507 &ring->data[i].map); in rt2560_alloc_tx_ring()
516 fail: rt2560_free_tx_ring(sc, ring); in rt2560_alloc_tx_ring()
521 rt2560_reset_tx_ring(struct rt2560_softc *sc, struct rt2560_tx_ring *ring) in rt2560_reset_tx_ring() argument
527 for (i = 0; i < ring->count; i++) { in rt2560_reset_tx_ring()
528 desc = &ring->desc[i]; in rt2560_reset_tx_ring()
529 data = &ring->data[i]; in rt2560_reset_tx_ring()
532 bus_dmamap_sync(ring->data_dmat, data->map, in rt2560_reset_tx_ring()
534 bus_dmamap_unload(ring->data_dmat, data->map); in rt2560_reset_tx_ring()
547 bus_dmamap_sync(ring->desc_dmat, ring->desc_map, BUS_DMASYNC_PREWRITE); in rt2560_reset_tx_ring()
549 ring->queued = 0; in rt2560_reset_tx_ring()
550 ring->cur = ring->next = 0; in rt2560_reset_tx_ring()
551 ring->cur_encrypt = ring->next_encrypt = 0; in rt2560_reset_tx_ring()
555 rt2560_free_tx_ring(struct rt2560_softc *sc, struct rt2560_tx_ring *ring) in rt2560_free_tx_ring() argument
560 if (ring->desc != NULL) { in rt2560_free_tx_ring()
561 bus_dmamap_sync(ring->desc_dmat, ring->desc_map, in rt2560_free_tx_ring()
563 bus_dmamap_unload(ring->desc_dmat, ring->desc_map); in rt2560_free_tx_ring()
564 bus_dmamem_free(ring->desc_dmat, ring->desc, ring->desc_map); in rt2560_free_tx_ring()
567 if (ring->desc_dmat != NULL) in rt2560_free_tx_ring()
568 bus_dma_tag_destroy(ring->desc_dmat); in rt2560_free_tx_ring()
570 if (ring->data != NULL) { in rt2560_free_tx_ring()
571 for (i = 0; i < ring->count; i++) { in rt2560_free_tx_ring()
572 data = &ring->data[i]; in rt2560_free_tx_ring()
575 bus_dmamap_sync(ring->data_dmat, data->map, in rt2560_free_tx_ring()
577 bus_dmamap_unload(ring->data_dmat, data->map); in rt2560_free_tx_ring()
585 bus_dmamap_destroy(ring->data_dmat, data->map); in rt2560_free_tx_ring()
588 free(ring->data, M_DEVBUF); in rt2560_free_tx_ring()
591 if (ring->data_dmat != NULL) in rt2560_free_tx_ring()
592 bus_dma_tag_destroy(ring->data_dmat); in rt2560_free_tx_ring()
596 rt2560_alloc_rx_ring(struct rt2560_softc *sc, struct rt2560_rx_ring *ring, in rt2560_alloc_rx_ring() argument
604 ring->count = count; in rt2560_alloc_rx_ring()
605 ring->cur = ring->next = 0; in rt2560_alloc_rx_ring()
606 ring->cur_decrypt = 0; in rt2560_alloc_rx_ring()
611 0, NULL, NULL, &ring->desc_dmat); in rt2560_alloc_rx_ring()
617 error = bus_dmamem_alloc(ring->desc_dmat, (void **)&ring->desc, in rt2560_alloc_rx_ring()
618 BUS_DMA_NOWAIT | BUS_DMA_ZERO, &ring->desc_map); in rt2560_alloc_rx_ring()
624 error = bus_dmamap_load(ring->desc_dmat, ring->desc_map, ring->desc, in rt2560_alloc_rx_ring()
625 count * RT2560_RX_DESC_SIZE, rt2560_dma_map_addr, &ring->physaddr, in rt2560_alloc_rx_ring()
632 ring->data = malloc(count * sizeof (struct rt2560_rx_data), M_DEVBUF, in rt2560_alloc_rx_ring()
634 if (ring->data == NULL) { in rt2560_alloc_rx_ring()
645 1, MCLBYTES, 0, NULL, NULL, &ring->data_dmat); in rt2560_alloc_rx_ring()
655 error = bus_dmamap_create(ring->data_dmat, 0, &data->map); in rt2560_alloc_rx_ring()
669 error = bus_dmamap_load(ring->data_dmat, data->map, in rt2560_alloc_rx_ring()
682 bus_dmamap_sync(ring->desc_dmat, ring->desc_map, BUS_DMASYNC_PREWRITE); in rt2560_alloc_rx_ring()
686 fail: rt2560_free_rx_ring(sc, ring); in rt2560_alloc_rx_ring()
691 rt2560_reset_rx_ring(struct rt2560_softc *sc, struct rt2560_rx_ring *ring) in rt2560_reset_rx_ring() argument
695 for (i = 0; i < ring->count; i++) { in rt2560_reset_rx_ring()
696 ring->desc[i].flags = htole32(RT2560_RX_BUSY); in rt2560_reset_rx_ring()
697 ring->data[i].drop = 0; in rt2560_reset_rx_ring()
700 bus_dmamap_sync(ring->desc_dmat, ring->desc_map, BUS_DMASYNC_PREWRITE); in rt2560_reset_rx_ring()
702 ring->cur = ring->next = 0; in rt2560_reset_rx_ring()
703 ring->cur_decrypt = 0; in rt2560_reset_rx_ring()
707 rt2560_free_rx_ring(struct rt2560_softc *sc, struct rt2560_rx_ring *ring) in rt2560_free_rx_ring() argument
712 if (ring->desc != NULL) { in rt2560_free_rx_ring()
713 bus_dmamap_sync(ring->desc_dmat, ring->desc_map, in rt2560_free_rx_ring()
715 bus_dmamap_unload(ring->desc_dmat, ring->desc_map); in rt2560_free_rx_ring()
716 bus_dmamem_free(ring->desc_dmat, ring->desc, ring->desc_map); in rt2560_free_rx_ring()
719 if (ring->desc_dmat != NULL) in rt2560_free_rx_ring()
720 bus_dma_tag_destroy(ring->desc_dmat); in rt2560_free_rx_ring()
722 if (ring->data != NULL) { in rt2560_free_rx_ring()
723 for (i = 0; i < ring->count; i++) { in rt2560_free_rx_ring()
724 data = &ring->data[i]; in rt2560_free_rx_ring()
727 bus_dmamap_sync(ring->data_dmat, data->map, in rt2560_free_rx_ring()
729 bus_dmamap_unload(ring->data_dmat, data->map); in rt2560_free_rx_ring()
734 bus_dmamap_destroy(ring->data_dmat, data->map); in rt2560_free_rx_ring()
737 free(ring->data, M_DEVBUF); in rt2560_free_rx_ring()
740 if (ring->data_dmat != NULL) in rt2560_free_rx_ring()
741 bus_dma_tag_destroy(ring->data_dmat); in rt2560_free_rx_ring()