| 612 | } |
| 613 | |
| 614 | static __rte_always_inline void |
| 615 | vhost_async_shadow_enqueue_packed(struct vhost_virtqueue *vq, |
| 616 | uint32_t *len, |
| 617 | uint16_t *id, |
| 618 | uint16_t *count, |
| 619 | uint16_t num_buffers) |
| 620 | __rte_exclusive_locks_required(&vq->access_lock) |
| 621 | { |
| 622 | uint16_t i; |
| 623 | struct vhost_async *async = vq->async; |
| 624 | |
| 625 | for (i = 0; i < num_buffers; i++) { |
| 626 | async->buffers_packed[async->buffer_idx_packed].id = id[i]; |
| 627 | async->buffers_packed[async->buffer_idx_packed].len = len[i]; |
| 628 | async->buffers_packed[async->buffer_idx_packed].count = count[i]; |
| 629 | async->buffer_idx_packed++; |
| 630 | if (async->buffer_idx_packed >= vq->size) |
| 631 | async->buffer_idx_packed -= vq->size; |
| 632 | } |
| 633 | } |
| 634 | |
| 635 | static __rte_always_inline void |
| 636 | vhost_shadow_enqueue_single_packed(struct virtio_net *dev, |
no outgoing calls
no test coverage detected