Lines Matching refs:queue

71 static struct macb_dma_desc *macb_tx_desc(struct macb_queue *queue,  in macb_tx_desc()  argument
74 return &queue->tx_ring[macb_tx_ring_wrap(index)]; in macb_tx_desc()
77 static struct macb_tx_skb *macb_tx_skb(struct macb_queue *queue, in macb_tx_skb() argument
80 return &queue->tx_skb[macb_tx_ring_wrap(index)]; in macb_tx_skb()
83 static dma_addr_t macb_tx_dma(struct macb_queue *queue, unsigned int index) in macb_tx_dma() argument
89 return queue->tx_ring_dma + offset; in macb_tx_dma()
552 struct macb_queue *queue = container_of(work, struct macb_queue, in macb_tx_error_task() local
554 struct macb *bp = queue->bp; in macb_tx_error_task()
562 (unsigned int)(queue - bp->queues), in macb_tx_error_task()
563 queue->tx_tail, queue->tx_head); in macb_tx_error_task()
589 for (tail = queue->tx_tail; tail != queue->tx_head; tail++) { in macb_tx_error_task()
592 desc = macb_tx_desc(queue, tail); in macb_tx_error_task()
594 tx_skb = macb_tx_skb(queue, tail); in macb_tx_error_task()
602 tx_skb = macb_tx_skb(queue, tail); in macb_tx_error_task()
632 desc = macb_tx_desc(queue, 0); in macb_tx_error_task()
640 queue_writel(queue, TBQP, queue->tx_ring_dma); in macb_tx_error_task()
642 queue->tx_head = 0; in macb_tx_error_task()
643 queue->tx_tail = 0; in macb_tx_error_task()
647 queue_writel(queue, IER, MACB_TX_INT_FLAGS); in macb_tx_error_task()
656 static void macb_tx_interrupt(struct macb_queue *queue) in macb_tx_interrupt() argument
661 struct macb *bp = queue->bp; in macb_tx_interrupt()
662 u16 queue_index = queue - bp->queues; in macb_tx_interrupt()
668 queue_writel(queue, ISR, MACB_BIT(TCOMP)); in macb_tx_interrupt()
673 head = queue->tx_head; in macb_tx_interrupt()
674 for (tail = queue->tx_tail; tail != head; tail++) { in macb_tx_interrupt()
680 desc = macb_tx_desc(queue, tail); in macb_tx_interrupt()
695 tx_skb = macb_tx_skb(queue, tail); in macb_tx_interrupt()
718 queue->tx_tail = tail; in macb_tx_interrupt()
720 CIRC_CNT(queue->tx_head, queue->tx_tail, in macb_tx_interrupt()
1036 struct macb_queue *queue = dev_id; in macb_interrupt() local
1037 struct macb *bp = queue->bp; in macb_interrupt()
1041 status = queue_readl(queue, ISR); in macb_interrupt()
1051 queue_writel(queue, IDR, -1); in macb_interrupt()
1056 (unsigned int)(queue - bp->queues), in macb_interrupt()
1067 queue_writel(queue, IDR, MACB_RX_INT_FLAGS); in macb_interrupt()
1069 queue_writel(queue, ISR, MACB_BIT(RCOMP)); in macb_interrupt()
1078 queue_writel(queue, IDR, MACB_TX_INT_FLAGS); in macb_interrupt()
1079 schedule_work(&queue->tx_error_task); in macb_interrupt()
1082 queue_writel(queue, ISR, MACB_TX_ERR_FLAGS); in macb_interrupt()
1088 macb_tx_interrupt(queue); in macb_interrupt()
1118 queue_writel(queue, ISR, MACB_BIT(ISR_ROVR)); in macb_interrupt()
1130 queue_writel(queue, ISR, MACB_BIT(HRESP)); in macb_interrupt()
1133 status = queue_readl(queue, ISR); in macb_interrupt()
1149 struct macb_queue *queue; in macb_poll_controller() local
1154 for (q = 0, queue = bp->queues; q < bp->num_queues; ++q, ++queue) in macb_poll_controller()
1155 macb_interrupt(dev->irq, queue); in macb_poll_controller()
1161 struct macb_queue *queue, in macb_tx_map() argument
1165 unsigned int len, entry, i, tx_head = queue->tx_head; in macb_tx_map()
1179 tx_skb = &queue->tx_skb[entry]; in macb_tx_map()
1208 tx_skb = &queue->tx_skb[entry]; in macb_tx_map()
1247 desc = &queue->tx_ring[entry]; in macb_tx_map()
1253 tx_skb = &queue->tx_skb[entry]; in macb_tx_map()
1254 desc = &queue->tx_ring[entry]; in macb_tx_map()
1271 } while (i != queue->tx_head); in macb_tx_map()
1273 queue->tx_head = tx_head; in macb_tx_map()
1280 for (i = queue->tx_head; i != tx_head; i++) { in macb_tx_map()
1281 tx_skb = macb_tx_skb(queue, i); in macb_tx_map()
1293 struct macb_queue *queue = &bp->queues[queue_index]; in macb_start_xmit() local
1320 if (CIRC_SPACE(queue->tx_head, queue->tx_tail, TX_RING_SIZE) < count) { in macb_start_xmit()
1324 queue->tx_head, queue->tx_tail); in macb_start_xmit()
1329 if (!macb_tx_map(bp, queue, skb)) { in macb_start_xmit()
1341 if (CIRC_SPACE(queue->tx_head, queue->tx_tail, TX_RING_SIZE) < 1) in macb_start_xmit()
1410 struct macb_queue *queue; in macb_free_consistent() local
1420 for (q = 0, queue = bp->queues; q < bp->num_queues; ++q, ++queue) { in macb_free_consistent()
1421 kfree(queue->tx_skb); in macb_free_consistent()
1422 queue->tx_skb = NULL; in macb_free_consistent()
1423 if (queue->tx_ring) { in macb_free_consistent()
1425 queue->tx_ring, queue->tx_ring_dma); in macb_free_consistent()
1426 queue->tx_ring = NULL; in macb_free_consistent()
1464 struct macb_queue *queue; in macb_alloc_consistent() local
1468 for (q = 0, queue = bp->queues; q < bp->num_queues; ++q, ++queue) { in macb_alloc_consistent()
1470 queue->tx_ring = dma_alloc_coherent(&bp->pdev->dev, size, in macb_alloc_consistent()
1471 &queue->tx_ring_dma, in macb_alloc_consistent()
1473 if (!queue->tx_ring) in macb_alloc_consistent()
1477 q, size, (unsigned long)queue->tx_ring_dma, in macb_alloc_consistent()
1478 queue->tx_ring); in macb_alloc_consistent()
1481 queue->tx_skb = kmalloc(size, GFP_KERNEL); in macb_alloc_consistent()
1482 if (!queue->tx_skb) in macb_alloc_consistent()
1507 struct macb_queue *queue; in gem_init_rings() local
1511 for (q = 0, queue = bp->queues; q < bp->num_queues; ++q, ++queue) { in gem_init_rings()
1513 queue->tx_ring[i].addr = 0; in gem_init_rings()
1514 queue->tx_ring[i].ctrl = MACB_BIT(TX_USED); in gem_init_rings()
1516 queue->tx_ring[TX_RING_SIZE - 1].ctrl |= MACB_BIT(TX_WRAP); in gem_init_rings()
1517 queue->tx_head = 0; in gem_init_rings()
1518 queue->tx_tail = 0; in gem_init_rings()
1553 struct macb_queue *queue; in macb_reset_hw() local
1570 for (q = 0, queue = bp->queues; q < bp->num_queues; ++q, ++queue) { in macb_reset_hw()
1571 queue_writel(queue, IDR, -1); in macb_reset_hw()
1572 queue_readl(queue, ISR); in macb_reset_hw()
1676 struct macb_queue *queue; in macb_init_hw() local
1714 for (q = 0, queue = bp->queues; q < bp->num_queues; ++q, ++queue) { in macb_init_hw()
1715 queue_writel(queue, TBQP, queue->tx_ring_dma); in macb_init_hw()
1718 queue_writel(queue, IER, in macb_init_hw()
2327 struct macb_queue *queue; in macb_init() local
2339 queue = &bp->queues[q]; in macb_init()
2340 queue->bp = bp; in macb_init()
2342 queue->ISR = GEM_ISR(hw_q - 1); in macb_init()
2343 queue->IER = GEM_IER(hw_q - 1); in macb_init()
2344 queue->IDR = GEM_IDR(hw_q - 1); in macb_init()
2345 queue->IMR = GEM_IMR(hw_q - 1); in macb_init()
2346 queue->TBQP = GEM_TBQP(hw_q - 1); in macb_init()
2349 queue->ISR = MACB_ISR; in macb_init()
2350 queue->IER = MACB_IER; in macb_init()
2351 queue->IDR = MACB_IDR; in macb_init()
2352 queue->IMR = MACB_IMR; in macb_init()
2353 queue->TBQP = MACB_TBQP; in macb_init()
2361 queue->irq = platform_get_irq(pdev, q); in macb_init()
2362 err = devm_request_irq(&pdev->dev, queue->irq, macb_interrupt, in macb_init()
2363 IRQF_SHARED, dev->name, queue); in macb_init()
2367 queue->irq, err); in macb_init()
2371 INIT_WORK(&queue->tx_error_task, macb_tx_error_task); in macb_init()