This patch introduces an API for getting virtqueue format. Signed-off-by: Lin Li <lili...@baidu.com> Signed-off-by: Xun Ni <ni...@baidu.com> Signed-off-by: Yu Zhang <zhangy...@baidu.com> Signed-off-by: Jin Yu <jin...@intel.com> --- lib/librte_vhost/rte_vhost.h | 13 +++++++++++++ lib/librte_vhost/rte_vhost_version.map | 1 + lib/librte_vhost/vhost.c | 12 ++++++++++++ 3 files changed, 26 insertions(+)
diff --git a/lib/librte_vhost/rte_vhost.h b/lib/librte_vhost/rte_vhost.h index 8b6435d0d..6d768c550 100644 --- a/lib/librte_vhost/rte_vhost.h +++ b/lib/librte_vhost/rte_vhost.h @@ -11,6 +11,7 @@ */ #include <stdint.h> +#include <stdbool.h> #include <sys/eventfd.h> #include <rte_memory.h> @@ -678,6 +679,18 @@ uint16_t rte_vhost_dequeue_burst(int vid, uint16_t queue_id, */ int rte_vhost_get_mem_table(int vid, struct rte_vhost_memory **mem); +/** + * Get vq is packed + * + * @param vid + * vhost device ID + * @return + * true on packed, false on split + */ +__rte_experimental +bool +rte_vhost_vq_is_packed(int vid); + /** * Get guest vring info, including the vring address, vring size, etc. * diff --git a/lib/librte_vhost/rte_vhost_version.map b/lib/librte_vhost/rte_vhost_version.map index ce517b127..0dce0d2bb 100644 --- a/lib/librte_vhost/rte_vhost_version.map +++ b/lib/librte_vhost/rte_vhost_version.map @@ -95,4 +95,5 @@ EXPERIMENTAL { rte_vhost_clr_inflight_desc_packed; rte_vhost_get_vhost_ring_inflight; rte_vhost_get_vring_base_from_inflight; + rte_vhost_vq_is_packed; }; diff --git a/lib/librte_vhost/vhost.c b/lib/librte_vhost/vhost.c index 1b6dcca98..372a25375 100644 --- a/lib/librte_vhost/vhost.c +++ b/lib/librte_vhost/vhost.c @@ -753,6 +753,18 @@ rte_vhost_get_mem_table(int vid, struct rte_vhost_memory **mem) return 0; } +bool +rte_vhost_vq_is_packed(int vid) +{ + struct virtio_net *dev; + + dev = get_device(vid); + if (unlikely(!dev)) + return -1; + + return vq_is_packed(dev); +} + int rte_vhost_get_vhost_vring(int vid, uint16_t vring_idx, struct rte_vhost_vring *vring) -- 2.17.2