| 590 | } |
| 591 | |
| 592 | static __rte_always_inline void |
| 593 | vhost_shadow_enqueue_packed(struct vhost_virtqueue *vq, |
| 594 | uint32_t *len, |
| 595 | uint16_t *id, |
| 596 | uint16_t *count, |
| 597 | uint16_t num_buffers) |
| 598 | { |
| 599 | uint16_t i; |
| 600 | |
| 601 | for (i = 0; i < num_buffers; i++) { |
| 602 | /* enqueue shadow flush action aligned with batch num */ |
| 603 | if (!vq->shadow_used_idx) |
| 604 | vq->shadow_aligned_idx = vq->last_used_idx & |
| 605 | PACKED_BATCH_MASK; |
| 606 | vq->shadow_used_packed[vq->shadow_used_idx].id = id[i]; |
| 607 | vq->shadow_used_packed[vq->shadow_used_idx].len = len[i]; |
| 608 | vq->shadow_used_packed[vq->shadow_used_idx].count = count[i]; |
| 609 | vq->shadow_aligned_idx += count[i]; |
| 610 | vq->shadow_used_idx++; |
| 611 | } |
| 612 | } |
| 613 | |
| 614 | static __rte_always_inline void |
| 615 | vhost_async_shadow_enqueue_packed(struct vhost_virtqueue *vq, |
no outgoing calls
no test coverage detected