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

Function vring_translate_packed

dpdk/lib/vhost/vhost.c:527–558  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

525}
526
527static int
528vring_translate_packed(struct virtio_net *dev, struct vhost_virtqueue *vq)
529 __rte_shared_locks_required(&vq->iotlb_lock)
530{
531 uint64_t req_size, size;
532
533 req_size = sizeof(struct vring_packed_desc) * vq->size;
534 size = req_size;
535 vq->desc_packed = (struct vring_packed_desc *)(uintptr_t)
536 vhost_iova_to_vva(dev, vq, vq->ring_addrs.desc_user_addr,
537 &size, VHOST_ACCESS_RW);
538 if (!vq->desc_packed || size != req_size)
539 return -1;
540
541 req_size = sizeof(struct vring_packed_desc_event);
542 size = req_size;
543 vq->driver_event = (struct vring_packed_desc_event *)(uintptr_t)
544 vhost_iova_to_vva(dev, vq, vq->ring_addrs.avail_user_addr,
545 &size, VHOST_ACCESS_RO);
546 if (!vq->driver_event || size != req_size)
547 return -1;
548
549 req_size = sizeof(struct vring_packed_desc_event);
550 size = req_size;
551 vq->device_event = (struct vring_packed_desc_event *)(uintptr_t)
552 vhost_iova_to_vva(dev, vq, vq->ring_addrs.used_user_addr,
553 &size, VHOST_ACCESS_RW);
554 if (!vq->device_event || size != req_size)
555 return -1;
556
557 return 0;
558}
559
560int
561vring_translate(struct virtio_net *dev, struct vhost_virtqueue *vq)

Callers 1

vring_translateFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected