Lines Matching refs:ring

729 					     struct bcm_sysport_tx_ring *ring)  in __bcm_sysport_tx_reclaim()  argument
738 txq = netdev_get_tx_queue(ndev, ring->index); in __bcm_sysport_tx_reclaim()
741 hw_ind = tdma_readl(priv, TDMA_DESC_RING_PROD_CONS_INDEX(ring->index)); in __bcm_sysport_tx_reclaim()
743 ring->p_index = (hw_ind & RING_PROD_INDEX_MASK); in __bcm_sysport_tx_reclaim()
745 last_c_index = ring->c_index; in __bcm_sysport_tx_reclaim()
746 num_tx_cbs = ring->size; in __bcm_sysport_tx_reclaim()
757 ring->index, c_index, last_tx_cn, last_c_index); in __bcm_sysport_tx_reclaim()
760 cb = ring->cbs + last_c_index; in __bcm_sysport_tx_reclaim()
763 ring->desc_count++; in __bcm_sysport_tx_reclaim()
768 ring->c_index = c_index; in __bcm_sysport_tx_reclaim()
775 ring->index, ring->c_index, pkts_compl, bytes_compl); in __bcm_sysport_tx_reclaim()
782 struct bcm_sysport_tx_ring *ring) in bcm_sysport_tx_reclaim() argument
787 spin_lock_irqsave(&ring->lock, flags); in bcm_sysport_tx_reclaim()
788 released = __bcm_sysport_tx_reclaim(priv, ring); in bcm_sysport_tx_reclaim()
789 spin_unlock_irqrestore(&ring->lock, flags); in bcm_sysport_tx_reclaim()
796 struct bcm_sysport_tx_ring *ring = in bcm_sysport_tx_poll() local
800 work_done = bcm_sysport_tx_reclaim(ring->priv, ring); in bcm_sysport_tx_poll()
805 intrl2_1_mask_clear(ring->priv, BIT(ring->index)); in bcm_sysport_tx_poll()
900 unsigned int ring; in bcm_sysport_tx_isr() local
911 for (ring = 0; ring < dev->num_tx_queues; ring++) { in bcm_sysport_tx_isr()
912 if (!(priv->irq1_stat & BIT(ring))) in bcm_sysport_tx_isr()
915 txr = &priv->tx_rings[ring]; in bcm_sysport_tx_isr()
918 intrl2_1_mask_set(priv, BIT(ring)); in bcm_sysport_tx_isr()
1013 struct bcm_sysport_tx_ring *ring; in bcm_sysport_xmit() local
1026 ring = &priv->tx_rings[queue]; in bcm_sysport_xmit()
1029 spin_lock_irqsave(&ring->lock, flags); in bcm_sysport_xmit()
1030 if (unlikely(ring->desc_count == 0)) { in bcm_sysport_xmit()
1071 cb = &ring->cbs[ring->curr_desc]; in bcm_sysport_xmit()
1077 desc = ring->desc_cpu; in bcm_sysport_xmit()
1087 ring->curr_desc++; in bcm_sysport_xmit()
1088 if (ring->curr_desc == ring->size) in bcm_sysport_xmit()
1089 ring->curr_desc = 0; in bcm_sysport_xmit()
1090 ring->desc_count--; in bcm_sysport_xmit()
1101 tdma_port_write_desc_addr(priv, desc, ring->index); in bcm_sysport_xmit()
1104 if (ring->desc_count == 0) in bcm_sysport_xmit()
1108 ring->index, ring->desc_count, ring->curr_desc); in bcm_sysport_xmit()
1112 spin_unlock_irqrestore(&ring->lock, flags); in bcm_sysport_xmit()
1191 struct bcm_sysport_tx_ring *ring = &priv->tx_rings[index]; in bcm_sysport_init_tx_ring() local
1203 p = dma_zalloc_coherent(kdev, sizeof(struct dma_desc), &ring->desc_dma, in bcm_sysport_init_tx_ring()
1210 ring->cbs = kcalloc(size, sizeof(struct bcm_sysport_cb), GFP_KERNEL); in bcm_sysport_init_tx_ring()
1211 if (!ring->cbs) { in bcm_sysport_init_tx_ring()
1217 spin_lock_init(&ring->lock); in bcm_sysport_init_tx_ring()
1218 ring->priv = priv; in bcm_sysport_init_tx_ring()
1219 netif_napi_add(priv->netdev, &ring->napi, bcm_sysport_tx_poll, 64); in bcm_sysport_init_tx_ring()
1220 ring->index = index; in bcm_sysport_init_tx_ring()
1221 ring->size = size; in bcm_sysport_init_tx_ring()
1222 ring->alloc_size = ring->size; in bcm_sysport_init_tx_ring()
1223 ring->desc_cpu = p; in bcm_sysport_init_tx_ring()
1224 ring->desc_count = ring->size; in bcm_sysport_init_tx_ring()
1225 ring->curr_desc = 0; in bcm_sysport_init_tx_ring()
1238 tdma_writel(priv, ring->size | in bcm_sysport_init_tx_ring()
1247 napi_enable(&ring->napi); in bcm_sysport_init_tx_ring()
1251 ring->size, ring->desc_cpu); in bcm_sysport_init_tx_ring()
1259 struct bcm_sysport_tx_ring *ring = &priv->tx_rings[index]; in bcm_sysport_fini_tx_ring() local
1272 if (!ring->cbs) in bcm_sysport_fini_tx_ring()
1275 napi_disable(&ring->napi); in bcm_sysport_fini_tx_ring()
1276 netif_napi_del(&ring->napi); in bcm_sysport_fini_tx_ring()
1278 bcm_sysport_tx_reclaim(priv, ring); in bcm_sysport_fini_tx_ring()
1280 kfree(ring->cbs); in bcm_sysport_fini_tx_ring()
1281 ring->cbs = NULL; in bcm_sysport_fini_tx_ring()
1283 if (ring->desc_dma) { in bcm_sysport_fini_tx_ring()
1285 ring->desc_cpu, ring->desc_dma); in bcm_sysport_fini_tx_ring()
1286 ring->desc_dma = 0; in bcm_sysport_fini_tx_ring()
1288 ring->size = 0; in bcm_sysport_fini_tx_ring()
1289 ring->alloc_size = 0; in bcm_sysport_fini_tx_ring()