| 633 | } |
| 634 | |
| 635 | static __rte_always_inline void |
| 636 | vhost_shadow_enqueue_single_packed(struct virtio_net *dev, |
| 637 | struct vhost_virtqueue *vq, |
| 638 | uint32_t *len, |
| 639 | uint16_t *id, |
| 640 | uint16_t *count, |
| 641 | uint16_t num_buffers) |
| 642 | __rte_shared_locks_required(&vq->iotlb_lock) |
| 643 | { |
| 644 | vhost_shadow_enqueue_packed(vq, len, id, count, num_buffers); |
| 645 | |
| 646 | if (vq->shadow_aligned_idx >= PACKED_BATCH_SIZE) { |
| 647 | do_data_copy_enqueue(dev, vq); |
| 648 | vhost_flush_enqueue_shadow_packed(dev, vq); |
| 649 | } |
| 650 | } |
| 651 | |
| 652 | /* avoid write operation when necessary, to lessen cache issues */ |
| 653 | #define ASSIGN_UNLESS_EQUAL(var, val) do { \ |
no test coverage detected