| 530 | } |
| 531 | |
| 532 | static __rte_always_inline void |
| 533 | vhost_shadow_dequeue_single_packed(struct vhost_virtqueue *vq, |
| 534 | uint16_t buf_id, |
| 535 | uint16_t count) |
| 536 | { |
| 537 | uint16_t flags; |
| 538 | |
| 539 | flags = vq->desc_packed[vq->last_used_idx].flags; |
| 540 | if (vq->used_wrap_counter) { |
| 541 | flags |= VRING_DESC_F_USED; |
| 542 | flags |= VRING_DESC_F_AVAIL; |
| 543 | } else { |
| 544 | flags &= ~VRING_DESC_F_USED; |
| 545 | flags &= ~VRING_DESC_F_AVAIL; |
| 546 | } |
| 547 | |
| 548 | if (!vq->shadow_used_idx) { |
| 549 | vq->shadow_last_used_idx = vq->last_used_idx; |
| 550 | |
| 551 | vq->shadow_used_packed[0].id = buf_id; |
| 552 | vq->shadow_used_packed[0].len = 0; |
| 553 | vq->shadow_used_packed[0].flags = flags; |
| 554 | vq->shadow_used_idx++; |
| 555 | } else { |
| 556 | vq->desc_packed[vq->last_used_idx].id = buf_id; |
| 557 | vq->desc_packed[vq->last_used_idx].len = 0; |
| 558 | vq->desc_packed[vq->last_used_idx].flags = flags; |
| 559 | } |
| 560 | |
| 561 | vq_inc_last_used_packed(vq, count); |
| 562 | } |
| 563 | |
| 564 | static __rte_always_inline void |
| 565 | vhost_shadow_dequeue_single_packed_inorder(struct vhost_virtqueue *vq, |
no test coverage detected