MCPcopy Create free account
hub / github.com/F-Stack/f-stack / virtio_init_vring

Function virtio_init_vring

dpdk/drivers/net/virtio/virtqueue.c:268–298  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

266
267
268static void
269virtio_init_vring(struct virtqueue *vq)
270{
271 int size = vq->vq_nentries;
272 uint8_t *ring_mem = vq->vq_ring_virt_mem;
273
274 PMD_INIT_FUNC_TRACE();
275
276 memset(ring_mem, 0, vq->vq_ring_size);
277
278 vq->vq_used_cons_idx = 0;
279 vq->vq_desc_head_idx = 0;
280 vq->vq_avail_idx = 0;
281 vq->vq_desc_tail_idx = (uint16_t)(vq->vq_nentries - 1);
282 vq->vq_free_cnt = vq->vq_nentries;
283 memset(vq->vq_descx, 0, sizeof(struct vq_desc_extra) * vq->vq_nentries);
284 if (virtio_with_packed_queue(vq->hw)) {
285 vring_init_packed(&vq->vq_packed.ring, ring_mem,
286 VIRTIO_VRING_ALIGN, size);
287 vring_desc_init_packed(vq, size);
288 } else {
289 struct vring *vr = &vq->vq_split.ring;
290
291 vring_init_split(vr, ring_mem, VIRTIO_VRING_ALIGN, size);
292 vring_desc_init_split(vr->desc, size);
293 }
294 /*
295 * Disable device(host) interrupting guest
296 */
297 virtqueue_disable_intr(vq);
298}
299
300static int
301virtio_alloc_queue_headers(struct virtqueue *vq, int numa_node, const char *name)

Callers 1

virtqueue_allocFunction · 0.85

Calls 7

memsetFunction · 0.85
virtio_with_packed_queueFunction · 0.85
vring_init_packedFunction · 0.85
vring_desc_init_packedFunction · 0.85
vring_init_splitFunction · 0.85
vring_desc_init_splitFunction · 0.85
virtqueue_disable_intrFunction · 0.70

Tested by

no test coverage detected