Lines Matching refs:ring

119 static struct qmu_gpd *gpd_dma_to_virt(struct mtu3_gpd_ring *ring,
122 dma_addr_t dma_base = ring->dma;
123 struct qmu_gpd *gpd_head = ring->start;
132 static dma_addr_t gpd_virt_to_dma(struct mtu3_gpd_ring *ring,
135 dma_addr_t dma_base = ring->dma;
136 struct qmu_gpd *gpd_head = ring->start;
146 static void gpd_ring_init(struct mtu3_gpd_ring *ring, struct qmu_gpd *gpd)
148 ring->start = gpd;
149 ring->enqueue = gpd;
150 ring->dequeue = gpd;
151 ring->end = gpd + MAX_GPD_NUM - 1;
156 struct mtu3_gpd_ring *ring = &mep->gpd_ring;
157 struct qmu_gpd *gpd = ring->start;
161 gpd_ring_init(ring, gpd);
168 struct mtu3_gpd_ring *ring = &mep->gpd_ring;
171 gpd = dma_pool_zalloc(mep->mtu->qmu_gpd_pool, GFP_ATOMIC, &ring->dma);
175 gpd_ring_init(ring, gpd);
182 struct mtu3_gpd_ring *ring = &mep->gpd_ring;
185 ring->start, ring->dma);
186 memset(ring, 0, sizeof(*ring));
203 static struct qmu_gpd *advance_enq_gpd(struct mtu3_gpd_ring *ring)
205 if (ring->enqueue < ring->end)
206 ring->enqueue++;
208 ring->enqueue = ring->start;
210 return ring->enqueue;
213 /* @dequeue may be NULL if ring is unallocated or freed */
214 static struct qmu_gpd *advance_deq_gpd(struct mtu3_gpd_ring *ring)
216 if (ring->dequeue < ring->end)
217 ring->dequeue++;
219 ring->dequeue = ring->start;
221 return ring->dequeue;
224 /* check if a ring is emtpy */
225 static bool gpd_ring_empty(struct mtu3_gpd_ring *ring)
227 struct qmu_gpd *enq = ring->enqueue;
230 if (ring->enqueue < ring->end)
233 next = ring->start;
236 return next == ring->dequeue;
247 struct mtu3_gpd_ring *ring = &mep->gpd_ring;
248 struct qmu_gpd *gpd = ring->enqueue;
260 enq = advance_enq_gpd(ring);
261 enq_dma = gpd_virt_to_dma(ring, enq);
290 struct mtu3_gpd_ring *ring = &mep->gpd_ring;
291 struct qmu_gpd *gpd = ring->enqueue;
303 enq = advance_enq_gpd(ring);
304 enq_dma = gpd_virt_to_dma(ring, enq);
335 struct mtu3_gpd_ring *ring = &mep->gpd_ring;
340 write_txq_start_addr(mbase, epnum, ring->dma);
354 write_rxq_start_addr(mbase, epnum, ring->dma);
428 struct mtu3_gpd_ring *ring = &mep->gpd_ring;
441 gpd_current = gpd_dma_to_virt(ring, cur_gpd_dma);
477 struct mtu3_gpd_ring *ring = &mep->gpd_ring;
483 gpd_current = gpd_dma_to_virt(ring, cur_gpd_dma);
511 struct mtu3_gpd_ring *ring = &mep->gpd_ring;
513 struct qmu_gpd *gpd = ring->dequeue;
521 gpd_current = gpd_dma_to_virt(ring, cur_gpd_dma);
524 __func__, epnum, gpd, gpd_current, ring->enqueue);
540 gpd = advance_deq_gpd(ring);
544 __func__, epnum, ring->dequeue, ring->enqueue);
551 struct mtu3_gpd_ring *ring = &mep->gpd_ring;
553 struct qmu_gpd *gpd = ring->dequeue;
560 gpd_current = gpd_dma_to_virt(ring, cur_gpd_dma);
563 __func__, epnum, gpd, gpd_current, ring->enqueue);
579 gpd = advance_deq_gpd(ring);
583 __func__, epnum, ring->dequeue, ring->enqueue);