Lines Matching refs:ring

609     struct rt2661_tx_ring *ring, int count)  in rt2661_alloc_tx_ring()  argument
618 ring->count = count; in rt2661_alloc_tx_ring()
619 ring->queued = 0; in rt2661_alloc_tx_ring()
620 ring->cur = 0; in rt2661_alloc_tx_ring()
621 ring->next = 0; in rt2661_alloc_tx_ring()
622 ring->stat = 0; in rt2661_alloc_tx_ring()
627 &ring->txdesc_dma); in rt2661_alloc_tx_ring()
634 ring->desc = (struct rt2661_tx_desc *)ring->txdesc_dma.mem_va; in rt2661_alloc_tx_ring()
635 (void) bzero(ring->desc, size); in rt2661_alloc_tx_ring()
636 ring->paddr = ring->txdesc_dma.cookie.dmac_address; in rt2661_alloc_tx_ring()
638 ring->data = kmem_zalloc(len, KM_NOSLEEP); in rt2661_alloc_tx_ring()
639 if (ring->data == NULL) { in rt2661_alloc_tx_ring()
646 desc = &ring->desc[i]; in rt2661_alloc_tx_ring()
647 data = &ring->data[i]; in rt2661_alloc_tx_ring()
658 rt2661_free_dma_mem(&ring->data[i].txdata_dma); in rt2661_alloc_tx_ring()
668 (void) ddi_dma_sync(ring->txdesc_dma.dma_hdl, in rt2661_alloc_tx_ring()
672 if (ring->data) in rt2661_alloc_tx_ring()
673 kmem_free(ring->data, in rt2661_alloc_tx_ring()
676 rt2661_free_dma_mem(&ring->txdesc_dma); in rt2661_alloc_tx_ring()
682 rt2661_reset_tx_ring(struct rt2661_softc *sc, struct rt2661_tx_ring *ring) in rt2661_reset_tx_ring() argument
688 for (i = 0; i < ring->count; i++) { in rt2661_reset_tx_ring()
689 desc = &ring->desc[i]; in rt2661_reset_tx_ring()
690 data = &ring->data[i]; in rt2661_reset_tx_ring()
701 (void) ddi_dma_sync(ring->txdesc_dma.dma_hdl, 0, in rt2661_reset_tx_ring()
702 ring->count * sizeof (struct rt2661_tx_desc), in rt2661_reset_tx_ring()
705 ring->queued = 0; in rt2661_reset_tx_ring()
706 ring->cur = ring->next = ring->stat = 0; in rt2661_reset_tx_ring()
712 rt2661_free_tx_ring(struct rt2661_softc *sc, struct rt2661_tx_ring *ring) in rt2661_free_tx_ring() argument
717 if (ring->desc != NULL) { in rt2661_free_tx_ring()
718 rt2661_free_dma_mem(&ring->txdesc_dma); in rt2661_free_tx_ring()
721 if (ring->data != NULL) { in rt2661_free_tx_ring()
722 for (i = 0; i < ring->count; i++) { in rt2661_free_tx_ring()
723 data = &ring->data[i]; in rt2661_free_tx_ring()
730 kmem_free(ring->data, in rt2661_free_tx_ring()
731 ring->count * sizeof (struct rt2661_tx_data)); in rt2661_free_tx_ring()
738 struct rt2661_rx_ring *ring, int count) in rt2661_alloc_rx_ring() argument
747 ring->count = count; in rt2661_alloc_rx_ring()
748 ring->cur = 0; in rt2661_alloc_rx_ring()
749 ring->next = 0; in rt2661_alloc_rx_ring()
754 &ring->rxdesc_dma); in rt2661_alloc_rx_ring()
761 ring->desc = (struct rt2661_rx_desc *)ring->rxdesc_dma.mem_va; in rt2661_alloc_rx_ring()
762 (void) bzero(ring->desc, size); in rt2661_alloc_rx_ring()
763 ring->paddr = ring->rxdesc_dma.cookie.dmac_address; in rt2661_alloc_rx_ring()
765 ring->data = kmem_zalloc(len, KM_NOSLEEP); in rt2661_alloc_rx_ring()
766 if (ring->data == NULL) { in rt2661_alloc_rx_ring()
773 desc = &ring->desc[i]; in rt2661_alloc_rx_ring()
774 data = &ring->data[i]; in rt2661_alloc_rx_ring()
785 rt2661_free_dma_mem(&ring->data[i].rxdata_dma); in rt2661_alloc_rx_ring()
796 (void) ddi_dma_sync(ring->rxdesc_dma.dma_hdl, in rt2661_alloc_rx_ring()
800 if (ring->data) in rt2661_alloc_rx_ring()
801 kmem_free(ring->data, in rt2661_alloc_rx_ring()
804 rt2661_free_dma_mem(&ring->rxdesc_dma); in rt2661_alloc_rx_ring()
810 rt2661_reset_rx_ring(struct rt2661_softc *sc, struct rt2661_rx_ring *ring) in rt2661_reset_rx_ring() argument
814 for (i = 0; i < ring->count; i++) in rt2661_reset_rx_ring()
815 ring->desc[i].flags = LE_32(RT2661_RX_BUSY); in rt2661_reset_rx_ring()
818 (void) ddi_dma_sync(ring->rxdesc_dma.dma_hdl, 0, in rt2661_reset_rx_ring()
819 ring->count * sizeof (struct rt2661_rx_ring), in rt2661_reset_rx_ring()
822 ring->cur = ring->next = 0; in rt2661_reset_rx_ring()
827 rt2661_free_rx_ring(struct rt2661_softc *sc, struct rt2661_rx_ring *ring) in rt2661_free_rx_ring() argument
832 if (ring->desc != NULL) { in rt2661_free_rx_ring()
833 rt2661_free_dma_mem(&ring->rxdesc_dma); in rt2661_free_rx_ring()
836 if (ring->data != NULL) { in rt2661_free_rx_ring()
837 for (i = 0; i < ring->count; i++) { in rt2661_free_rx_ring()
838 data = &ring->data[i]; in rt2661_free_rx_ring()
841 kmem_free(ring->data, in rt2661_free_rx_ring()
842 ring->count * sizeof (struct rt2661_rx_data)); in rt2661_free_rx_ring()
847 rt2661_tx_dma_intr(struct rt2661_softc *sc, struct rt2661_tx_ring *ring) in rt2661_tx_dma_intr() argument
853 desc = &ring->desc[ring->next]; in rt2661_tx_dma_intr()
854 data = &ring->data[ring->next]; in rt2661_tx_dma_intr()
856 (void) ddi_dma_sync(ring->txdesc_dma.dma_hdl, in rt2661_tx_dma_intr()
857 ring->next * RT2661_TX_DESC_SIZE, in rt2661_tx_dma_intr()
872 (void) ddi_dma_sync(ring->txdesc_dma.dma_hdl, in rt2661_tx_dma_intr()
873 ring->next * RT2661_TX_DESC_SIZE, in rt2661_tx_dma_intr()
878 "tx dma done q=%p idx=%u\n", ring, ring->next); in rt2661_tx_dma_intr()
880 if (++ring->next >= ring->count) /* faster than % count */ in rt2661_tx_dma_intr()
881 ring->next = 0; in rt2661_tx_dma_intr()
889 struct rt2661_tx_ring *ring; in rt2661_tx_intr() local
903 ring = (qid <= 3) ? &sc->txq[qid] : &sc->mgtq; in rt2661_tx_intr()
906 data = &ring->data[ring->stat]; in rt2661_tx_intr()
942 "tx done q=%d idx=%u\n", qid, ring->stat); in rt2661_tx_intr()
947 ring->queued--; in rt2661_tx_intr()
950 if (++ring->stat >= ring->count) in rt2661_tx_intr()
951 ring->stat = 0; in rt2661_tx_intr()
965 struct rt2661_rx_ring *ring; in rt2661_rx_intr() local
976 ring = &sc->rxq; in rt2661_rx_intr()
981 desc = &ring->desc[ring->cur]; in rt2661_rx_intr()
982 data = &ring->data[ring->cur]; in rt2661_rx_intr()
984 (void) ddi_dma_sync(ring->rxdesc_dma.dma_hdl, in rt2661_rx_intr()
985 ring->cur * RT2661_RX_DESC_SIZE, in rt2661_rx_intr()
1050 (void) ddi_dma_sync(ring->rxdesc_dma.dma_hdl, in rt2661_rx_intr()
1051 ring->cur * RT2661_RX_DESC_SIZE, in rt2661_rx_intr()
1057 ring->cur = (ring->cur + 1) % RT2661_RX_RING_COUNT; in rt2661_rx_intr()
1407 struct rt2661_tx_ring *ring; in rt2661_send() local
1420 ring = &sc->txq[0]; in rt2661_send()
1423 if (ring->queued > RT2661_TX_RING_COUNT - 8) { in rt2661_send()
1469 desc = &ring->desc[ring->cur]; in rt2661_send()
1470 data = &ring->data[ring->cur]; in rt2661_send()
1501 (void) ddi_dma_sync(ring->txdesc_dma.dma_hdl, in rt2661_send()
1502 ring->cur * RT2661_TX_DESC_SIZE, in rt2661_send()
1508 pktlen, ring->cur, rate); in rt2661_send()
1511 ring->queued++; in rt2661_send()
1512 ring->cur = (ring->cur + 1) % RT2661_TX_RING_COUNT; in rt2661_send()
1533 struct rt2661_tx_ring *ring; in rt2661_mgmt_send() local
1550 ring = &sc->mgtq; in rt2661_mgmt_send()
1553 if (ring->queued >= RT2661_MGT_RING_COUNT) { in rt2661_mgmt_send()
1596 desc = &ring->desc[ring->cur]; in rt2661_mgmt_send()
1597 data = &ring->data[ring->cur]; in rt2661_mgmt_send()
1624 (void) ddi_dma_sync(ring->txdesc_dma.dma_hdl, in rt2661_mgmt_send()
1625 ring->cur * RT2661_TX_DESC_SIZE, in rt2661_mgmt_send()
1631 pktlen, ring->cur, rate); in rt2661_mgmt_send()
1634 ring->queued++; in rt2661_mgmt_send()
1635 ring->cur = (ring->cur + 1) % RT2661_MGT_RING_COUNT; in rt2661_mgmt_send()