| 1691 | } |
| 1692 | |
| 1693 | int |
| 1694 | rte_vhost_set_vring_base(int vid, uint16_t queue_id, |
| 1695 | uint16_t last_avail_idx, uint16_t last_used_idx) |
| 1696 | { |
| 1697 | struct vhost_virtqueue *vq; |
| 1698 | struct virtio_net *dev = get_device(vid); |
| 1699 | |
| 1700 | if (!dev) |
| 1701 | return -1; |
| 1702 | |
| 1703 | if (queue_id >= VHOST_MAX_VRING) |
| 1704 | return -1; |
| 1705 | |
| 1706 | vq = dev->virtqueue[queue_id]; |
| 1707 | if (!vq) |
| 1708 | return -1; |
| 1709 | |
| 1710 | if (vq_is_packed(dev)) { |
| 1711 | vq->last_avail_idx = last_avail_idx & 0x7fff; |
| 1712 | vq->avail_wrap_counter = !!(last_avail_idx & (1 << 15)); |
| 1713 | vq->last_used_idx = last_used_idx & 0x7fff; |
| 1714 | vq->used_wrap_counter = !!(last_used_idx & (1 << 15)); |
| 1715 | } else { |
| 1716 | vq->last_avail_idx = last_avail_idx; |
| 1717 | vq->last_used_idx = last_used_idx; |
| 1718 | } |
| 1719 | |
| 1720 | return 0; |
| 1721 | } |
| 1722 | |
| 1723 | int |
| 1724 | rte_vhost_get_vring_base_from_inflight(int vid, |
no test coverage detected