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

Function vhost_flush_enqueue_batch_packed

dpdk/lib/vhost/virtio_net.c:401–435  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

399}
400
401static __rte_always_inline void
402vhost_flush_enqueue_batch_packed(struct virtio_net *dev,
403 struct vhost_virtqueue *vq,
404 uint64_t *lens,
405 uint16_t *ids)
406{
407 uint16_t i;
408 uint16_t flags;
409 uint16_t last_used_idx;
410 struct vring_packed_desc *desc_base;
411
412 last_used_idx = vq->last_used_idx;
413 desc_base = &vq->desc_packed[last_used_idx];
414
415 flags = PACKED_DESC_ENQUEUE_USED_FLAG(vq->used_wrap_counter);
416
417 vhost_for_each_try_unroll(i, 0, PACKED_BATCH_SIZE) {
418 desc_base[i].id = ids[i];
419 desc_base[i].len = lens[i];
420 }
421
422 rte_atomic_thread_fence(rte_memory_order_release);
423
424 vhost_for_each_try_unroll(i, 0, PACKED_BATCH_SIZE) {
425 desc_base[i].flags = flags;
426 }
427
428 vhost_log_cache_used_vring(dev, vq, last_used_idx *
429 sizeof(struct vring_packed_desc),
430 sizeof(struct vring_packed_desc) *
431 PACKED_BATCH_SIZE);
432 vhost_log_cache_sync(dev, vq);
433
434 vq_inc_last_used_packed(vq, PACKED_BATCH_SIZE);
435}
436
437static __rte_always_inline void
438vhost_async_shadow_enqueue_packed_batch(struct vhost_virtqueue *vq,

Callers 1

Calls 4

vhost_log_cache_syncFunction · 0.85
vq_inc_last_used_packedFunction · 0.85
rte_atomic_thread_fenceFunction · 0.50

Tested by

no test coverage detected