Lines Matching refs:ring
177 unsigned int vnic_dev_desc_ring_size(struct vnic_dev_ring *ring,
190 ring->base_align = 512;
195 ring->desc_count = ALIGN(desc_count, count_align);
197 ring->desc_size = ALIGN(desc_size, desc_align);
199 ring->size = ring->desc_count * ring->desc_size;
200 ring->size_unaligned = ring->size + ring->base_align;
202 return ring->size_unaligned;
205 void vnic_dev_clear_desc_ring(struct vnic_dev_ring *ring)
207 memset(ring->descs, 0, ring->size);
210 int vnic_dev_alloc_desc_ring(struct vnic_dev *vdev, struct vnic_dev_ring *ring,
213 vnic_dev_desc_ring_size(ring, desc_count, desc_size);
215 ring->descs_unaligned = dma_alloc_coherent(&vdev->pdev->dev,
216 ring->size_unaligned,
217 &ring->base_addr_unaligned, GFP_KERNEL);
219 if (!ring->descs_unaligned) {
221 "Failed to allocate ring (size=%d), aborting\n",
222 (int)ring->size);
226 ring->base_addr = ALIGN(ring->base_addr_unaligned,
227 ring->base_align);
228 ring->descs = (u8 *)ring->descs_unaligned +
229 (ring->base_addr - ring->base_addr_unaligned);
231 vnic_dev_clear_desc_ring(ring);
233 ring->desc_avail = ring->desc_count - 1;
238 void vnic_dev_free_desc_ring(struct vnic_dev *vdev, struct vnic_dev_ring *ring)
240 if (ring->descs) {
242 ring->size_unaligned,
243 ring->descs_unaligned,
244 ring->base_addr_unaligned);
245 ring->descs = NULL;
461 (struct vnic_devcmd2 *) vdev->devcmd2->wq.ring.descs;