Lines Matching refs:queue

69 static struct macb_dma_desc *macb_tx_desc(struct macb_queue *queue,  in macb_tx_desc()  argument
72 return &queue->tx_ring[macb_tx_ring_wrap(index)]; in macb_tx_desc()
75 static struct macb_tx_skb *macb_tx_skb(struct macb_queue *queue, in macb_tx_skb() argument
78 return &queue->tx_skb[macb_tx_ring_wrap(index)]; in macb_tx_skb()
81 static dma_addr_t macb_tx_dma(struct macb_queue *queue, unsigned int index) in macb_tx_dma() argument
87 return queue->tx_ring_dma + offset; in macb_tx_dma()
500 struct macb_queue *queue = container_of(work, struct macb_queue, in macb_tx_error_task() local
502 struct macb *bp = queue->bp; in macb_tx_error_task()
510 (unsigned int)(queue - bp->queues), in macb_tx_error_task()
511 queue->tx_tail, queue->tx_head); in macb_tx_error_task()
537 for (tail = queue->tx_tail; tail != queue->tx_head; tail++) { in macb_tx_error_task()
540 desc = macb_tx_desc(queue, tail); in macb_tx_error_task()
542 tx_skb = macb_tx_skb(queue, tail); in macb_tx_error_task()
550 tx_skb = macb_tx_skb(queue, tail); in macb_tx_error_task()
580 desc = macb_tx_desc(queue, 0); in macb_tx_error_task()
588 queue_writel(queue, TBQP, queue->tx_ring_dma); in macb_tx_error_task()
590 queue->tx_head = 0; in macb_tx_error_task()
591 queue->tx_tail = 0; in macb_tx_error_task()
595 queue_writel(queue, IER, MACB_TX_INT_FLAGS); in macb_tx_error_task()
604 static void macb_tx_interrupt(struct macb_queue *queue) in macb_tx_interrupt() argument
609 struct macb *bp = queue->bp; in macb_tx_interrupt()
610 u16 queue_index = queue - bp->queues; in macb_tx_interrupt()
616 queue_writel(queue, ISR, MACB_BIT(TCOMP)); in macb_tx_interrupt()
621 head = queue->tx_head; in macb_tx_interrupt()
622 for (tail = queue->tx_tail; tail != head; tail++) { in macb_tx_interrupt()
628 desc = macb_tx_desc(queue, tail); in macb_tx_interrupt()
643 tx_skb = macb_tx_skb(queue, tail); in macb_tx_interrupt()
666 queue->tx_tail = tail; in macb_tx_interrupt()
668 CIRC_CNT(queue->tx_head, queue->tx_tail, in macb_tx_interrupt()
984 struct macb_queue *queue = dev_id; in macb_interrupt() local
985 struct macb *bp = queue->bp; in macb_interrupt()
989 status = queue_readl(queue, ISR); in macb_interrupt()
999 queue_writel(queue, IDR, -1); in macb_interrupt()
1004 (unsigned int)(queue - bp->queues), in macb_interrupt()
1015 queue_writel(queue, IDR, MACB_RX_INT_FLAGS); in macb_interrupt()
1017 queue_writel(queue, ISR, MACB_BIT(RCOMP)); in macb_interrupt()
1026 queue_writel(queue, IDR, MACB_TX_INT_FLAGS); in macb_interrupt()
1027 schedule_work(&queue->tx_error_task); in macb_interrupt()
1030 queue_writel(queue, ISR, MACB_TX_ERR_FLAGS); in macb_interrupt()
1036 macb_tx_interrupt(queue); in macb_interrupt()
1066 queue_writel(queue, ISR, MACB_BIT(ISR_ROVR)); in macb_interrupt()
1078 queue_writel(queue, ISR, MACB_BIT(HRESP)); in macb_interrupt()
1081 status = queue_readl(queue, ISR); in macb_interrupt()
1097 struct macb_queue *queue; in macb_poll_controller() local
1102 for (q = 0, queue = bp->queues; q < bp->num_queues; ++q, ++queue) in macb_poll_controller()
1103 macb_interrupt(dev->irq, queue); in macb_poll_controller()
1115 struct macb_queue *queue, in macb_tx_map() argument
1119 unsigned int len, entry, i, tx_head = queue->tx_head; in macb_tx_map()
1133 tx_skb = &queue->tx_skb[entry]; in macb_tx_map()
1162 tx_skb = &queue->tx_skb[entry]; in macb_tx_map()
1201 desc = &queue->tx_ring[entry]; in macb_tx_map()
1207 tx_skb = &queue->tx_skb[entry]; in macb_tx_map()
1208 desc = &queue->tx_ring[entry]; in macb_tx_map()
1225 } while (i != queue->tx_head); in macb_tx_map()
1227 queue->tx_head = tx_head; in macb_tx_map()
1234 for (i = queue->tx_head; i != tx_head; i++) { in macb_tx_map()
1235 tx_skb = macb_tx_skb(queue, i); in macb_tx_map()
1247 struct macb_queue *queue = &bp->queues[queue_index]; in macb_start_xmit() local
1274 if (CIRC_SPACE(queue->tx_head, queue->tx_tail, TX_RING_SIZE) < count) { in macb_start_xmit()
1278 queue->tx_head, queue->tx_tail); in macb_start_xmit()
1283 if (!macb_tx_map(bp, queue, skb)) { in macb_start_xmit()
1295 if (CIRC_SPACE(queue->tx_head, queue->tx_tail, TX_RING_SIZE) < 1) in macb_start_xmit()
1364 struct macb_queue *queue; in macb_free_consistent() local
1374 for (q = 0, queue = bp->queues; q < bp->num_queues; ++q, ++queue) { in macb_free_consistent()
1375 kfree(queue->tx_skb); in macb_free_consistent()
1376 queue->tx_skb = NULL; in macb_free_consistent()
1377 if (queue->tx_ring) { in macb_free_consistent()
1379 queue->tx_ring, queue->tx_ring_dma); in macb_free_consistent()
1380 queue->tx_ring = NULL; in macb_free_consistent()
1418 struct macb_queue *queue; in macb_alloc_consistent() local
1422 for (q = 0, queue = bp->queues; q < bp->num_queues; ++q, ++queue) { in macb_alloc_consistent()
1424 queue->tx_ring = dma_alloc_coherent(&bp->pdev->dev, size, in macb_alloc_consistent()
1425 &queue->tx_ring_dma, in macb_alloc_consistent()
1427 if (!queue->tx_ring) in macb_alloc_consistent()
1431 q, size, (unsigned long)queue->tx_ring_dma, in macb_alloc_consistent()
1432 queue->tx_ring); in macb_alloc_consistent()
1435 queue->tx_skb = kmalloc(size, GFP_KERNEL); in macb_alloc_consistent()
1436 if (!queue->tx_skb) in macb_alloc_consistent()
1461 struct macb_queue *queue; in gem_init_rings() local
1465 for (q = 0, queue = bp->queues; q < bp->num_queues; ++q, ++queue) { in gem_init_rings()
1467 queue->tx_ring[i].addr = 0; in gem_init_rings()
1468 queue->tx_ring[i].ctrl = MACB_BIT(TX_USED); in gem_init_rings()
1470 queue->tx_ring[TX_RING_SIZE - 1].ctrl |= MACB_BIT(TX_WRAP); in gem_init_rings()
1471 queue->tx_head = 0; in gem_init_rings()
1472 queue->tx_tail = 0; in gem_init_rings()
1507 struct macb_queue *queue; in macb_reset_hw() local
1524 for (q = 0, queue = bp->queues; q < bp->num_queues; ++q, ++queue) { in macb_reset_hw()
1525 queue_writel(queue, IDR, -1); in macb_reset_hw()
1526 queue_readl(queue, ISR); in macb_reset_hw()
1642 struct macb_queue *queue; in macb_init_hw() local
1670 for (q = 0, queue = bp->queues; q < bp->num_queues; ++q, ++queue) { in macb_init_hw()
1671 queue_writel(queue, TBQP, queue->tx_ring_dma); in macb_init_hw()
1674 queue_writel(queue, IER, in macb_init_hw()
2262 struct macb_queue *queue; in macb_init() local
2274 queue = &bp->queues[q]; in macb_init()
2275 queue->bp = bp; in macb_init()
2277 queue->ISR = GEM_ISR(hw_q - 1); in macb_init()
2278 queue->IER = GEM_IER(hw_q - 1); in macb_init()
2279 queue->IDR = GEM_IDR(hw_q - 1); in macb_init()
2280 queue->IMR = GEM_IMR(hw_q - 1); in macb_init()
2281 queue->TBQP = GEM_TBQP(hw_q - 1); in macb_init()
2284 queue->ISR = MACB_ISR; in macb_init()
2285 queue->IER = MACB_IER; in macb_init()
2286 queue->IDR = MACB_IDR; in macb_init()
2287 queue->IMR = MACB_IMR; in macb_init()
2288 queue->TBQP = MACB_TBQP; in macb_init()
2296 queue->irq = platform_get_irq(pdev, q); in macb_init()
2297 err = devm_request_irq(&pdev->dev, queue->irq, macb_interrupt, in macb_init()
2298 IRQF_SHARED, dev->name, queue); in macb_init()
2302 queue->irq, err); in macb_init()
2306 INIT_WORK(&queue->tx_error_task, macb_tx_error_task); in macb_init()