Lines Matching refs:rxq
149 * bits 8..15 = RXQ OCCUP, one bit per queue.
150 * bits 16..23 = RXQ FREE, one bit per queue.
459 struct mvneta_rx_queue *rxq,
466 mvreg_write(pp, MVNETA_RXQ_STATUS_UPDATE_REG(rxq->id),
472 mvreg_write(pp, MVNETA_RXQ_STATUS_UPDATE_REG(rxq->id),
478 struct mvneta_rx_queue *rxq)
482 val = mvreg_read(pp, MVNETA_RXQ_STATUS_REG(rxq->id));
490 struct mvneta_rx_queue *rxq,
498 mvreg_write(pp, MVNETA_RXQ_STATUS_UPDATE_REG(rxq->id), val);
518 mvreg_write(pp, MVNETA_RXQ_STATUS_UPDATE_REG(rxq->id), val);
524 mvneta_rxq_next_desc_get(struct mvneta_rx_queue *rxq)
526 int rx_desc = rxq->next_desc_to_proc;
528 rxq->next_desc_to_proc = MVNETA_QUEUE_NEXT_DESC(rxq, rx_desc);
529 return rxq->descs + rx_desc;
558 /* Set rxq buf size */
560 struct mvneta_rx_queue *rxq,
565 val = mvreg_read(pp, MVNETA_RXQ_SIZE_REG(rxq->id));
570 mvreg_write(pp, MVNETA_RXQ_SIZE_REG(rxq->id), val);
599 struct mvneta_rx_queue *rxq = &pp->rxqs[queue];
600 if (rxq->descs != NULL)
975 int rxq)
977 return &pp->rxqs[rxq];
981 /* Drop packets received by the RXQ and free buffers */
983 struct mvneta_rx_queue *rxq)
987 rx_done = mvneta_rxq_busy_desc_num_get(pp, rxq);
989 mvneta_rxq_desc_num_update(pp, rxq, rx_done, rx_done);
992 /* Handle rxq fill: allocates rxq skbs; called when initializing a port */
993 static int mvneta_rxq_fill(struct mvneta_port *pp, struct mvneta_rx_queue *rxq,
1003 mvneta_rx_desc_fill(rxq->descs + i, addr, addr);
1009 mvneta_rxq_non_occup_desc_add(pp, rxq, i);
1018 struct mvneta_rx_queue *rxq)
1021 rxq->size = pp->rx_ring_size;
1024 rxq->descs_phys = (dma_addr_t)rxq->descs;
1025 if (rxq->descs == NULL)
1028 WARN_ON(rxq->descs != PTR_ALIGN(rxq->descs, ARCH_DMA_MINALIGN));
1030 rxq->last_desc = rxq->size - 1;
1033 mvreg_write(pp, MVNETA_RXQ_BASE_ADDR_REG(rxq->id), rxq->descs_phys);
1034 mvreg_write(pp, MVNETA_RXQ_SIZE_REG(rxq->id), rxq->size);
1036 /* Fill RXQ with buffers from RX pool */
1037 mvneta_rxq_buf_size_set(pp, rxq, RX_BUFFER_SIZE);
1038 mvneta_rxq_fill(pp, rxq, rxq->size);
1045 struct mvneta_rx_queue *rxq)
1047 mvneta_rxq_drop_pkts(pp, rxq);
1049 rxq->descs = NULL;
1050 rxq->last_desc = 0;
1051 rxq->next_desc_to_proc = 0;
1052 rxq->descs_phys = 0;
1126 netdev_err(pp->dev, "%s: can't create rxq=%d\n",
1279 struct mvneta_rx_queue *rxq = &pp->rxqs[queue];
1280 rxq->id = queue;
1281 rxq->size = pp->rx_ring_size;
1636 struct mvneta_rx_queue *rxq;
1640 rxq = mvneta_rxq_handle_get(pp, rxq_def);
1641 rx_done = mvneta_rxq_busy_desc_num_get(pp, rxq);
1652 rx_desc = mvneta_rxq_next_desc_get(rxq);
1677 mvneta_rxq_desc_num_update(pp, rxq, 1, 1);