Lines Matching refs:ring

665 					     struct bcm_sysport_tx_ring *ring)  in __bcm_sysport_tx_reclaim()  argument
674 txq = netdev_get_tx_queue(ndev, ring->index); in __bcm_sysport_tx_reclaim()
677 hw_ind = tdma_readl(priv, TDMA_DESC_RING_PROD_CONS_INDEX(ring->index)); in __bcm_sysport_tx_reclaim()
679 ring->p_index = (hw_ind & RING_PROD_INDEX_MASK); in __bcm_sysport_tx_reclaim()
681 last_c_index = ring->c_index; in __bcm_sysport_tx_reclaim()
682 num_tx_cbs = ring->size; in __bcm_sysport_tx_reclaim()
693 ring->index, c_index, last_tx_cn, last_c_index); in __bcm_sysport_tx_reclaim()
696 cb = ring->cbs + last_c_index; in __bcm_sysport_tx_reclaim()
699 ring->desc_count++; in __bcm_sysport_tx_reclaim()
704 ring->c_index = c_index; in __bcm_sysport_tx_reclaim()
711 ring->index, ring->c_index, pkts_compl, bytes_compl); in __bcm_sysport_tx_reclaim()
718 struct bcm_sysport_tx_ring *ring) in bcm_sysport_tx_reclaim() argument
723 spin_lock_irqsave(&ring->lock, flags); in bcm_sysport_tx_reclaim()
724 released = __bcm_sysport_tx_reclaim(priv, ring); in bcm_sysport_tx_reclaim()
725 spin_unlock_irqrestore(&ring->lock, flags); in bcm_sysport_tx_reclaim()
732 struct bcm_sysport_tx_ring *ring = in bcm_sysport_tx_poll() local
736 work_done = bcm_sysport_tx_reclaim(ring->priv, ring); in bcm_sysport_tx_poll()
741 intrl2_1_mask_clear(ring->priv, BIT(ring->index)); in bcm_sysport_tx_poll()
836 unsigned int ring; in bcm_sysport_tx_isr() local
847 for (ring = 0; ring < dev->num_tx_queues; ring++) { in bcm_sysport_tx_isr()
848 if (!(priv->irq1_stat & BIT(ring))) in bcm_sysport_tx_isr()
851 txr = &priv->tx_rings[ring]; in bcm_sysport_tx_isr()
854 intrl2_1_mask_set(priv, BIT(ring)); in bcm_sysport_tx_isr()
934 struct bcm_sysport_tx_ring *ring; in bcm_sysport_xmit() local
947 ring = &priv->tx_rings[queue]; in bcm_sysport_xmit()
950 spin_lock_irqsave(&ring->lock, flags); in bcm_sysport_xmit()
951 if (unlikely(ring->desc_count == 0)) { in bcm_sysport_xmit()
992 cb = &ring->cbs[ring->curr_desc]; in bcm_sysport_xmit()
998 desc = ring->desc_cpu; in bcm_sysport_xmit()
1008 ring->curr_desc++; in bcm_sysport_xmit()
1009 if (ring->curr_desc == ring->size) in bcm_sysport_xmit()
1010 ring->curr_desc = 0; in bcm_sysport_xmit()
1011 ring->desc_count--; in bcm_sysport_xmit()
1022 tdma_port_write_desc_addr(priv, desc, ring->index); in bcm_sysport_xmit()
1025 if (ring->desc_count == 0) in bcm_sysport_xmit()
1029 ring->index, ring->desc_count, ring->curr_desc); in bcm_sysport_xmit()
1033 spin_unlock_irqrestore(&ring->lock, flags); in bcm_sysport_xmit()
1112 struct bcm_sysport_tx_ring *ring = &priv->tx_rings[index]; in bcm_sysport_init_tx_ring() local
1124 p = dma_zalloc_coherent(kdev, sizeof(struct dma_desc), &ring->desc_dma, in bcm_sysport_init_tx_ring()
1131 ring->cbs = kcalloc(size, sizeof(struct bcm_sysport_cb), GFP_KERNEL); in bcm_sysport_init_tx_ring()
1132 if (!ring->cbs) { in bcm_sysport_init_tx_ring()
1138 spin_lock_init(&ring->lock); in bcm_sysport_init_tx_ring()
1139 ring->priv = priv; in bcm_sysport_init_tx_ring()
1140 netif_napi_add(priv->netdev, &ring->napi, bcm_sysport_tx_poll, 64); in bcm_sysport_init_tx_ring()
1141 ring->index = index; in bcm_sysport_init_tx_ring()
1142 ring->size = size; in bcm_sysport_init_tx_ring()
1143 ring->alloc_size = ring->size; in bcm_sysport_init_tx_ring()
1144 ring->desc_cpu = p; in bcm_sysport_init_tx_ring()
1145 ring->desc_count = ring->size; in bcm_sysport_init_tx_ring()
1146 ring->curr_desc = 0; in bcm_sysport_init_tx_ring()
1159 tdma_writel(priv, ring->size | in bcm_sysport_init_tx_ring()
1168 napi_enable(&ring->napi); in bcm_sysport_init_tx_ring()
1172 ring->size, ring->desc_cpu); in bcm_sysport_init_tx_ring()
1180 struct bcm_sysport_tx_ring *ring = &priv->tx_rings[index]; in bcm_sysport_fini_tx_ring() local
1193 if (!ring->cbs) in bcm_sysport_fini_tx_ring()
1196 napi_disable(&ring->napi); in bcm_sysport_fini_tx_ring()
1197 netif_napi_del(&ring->napi); in bcm_sysport_fini_tx_ring()
1199 bcm_sysport_tx_reclaim(priv, ring); in bcm_sysport_fini_tx_ring()
1201 kfree(ring->cbs); in bcm_sysport_fini_tx_ring()
1202 ring->cbs = NULL; in bcm_sysport_fini_tx_ring()
1204 if (ring->desc_dma) { in bcm_sysport_fini_tx_ring()
1206 ring->desc_cpu, ring->desc_dma); in bcm_sysport_fini_tx_ring()
1207 ring->desc_dma = 0; in bcm_sysport_fini_tx_ring()
1209 ring->size = 0; in bcm_sysport_fini_tx_ring()
1210 ring->alloc_size = 0; in bcm_sysport_fini_tx_ring()