vhost: export vhost vring info
Signed-off-by: Yuanhan Liu <yuanhan.liu@linux.intel.com> Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
This commit is contained in:
parent
ca33faf9ef
commit
40ef286f23
@ -38,5 +38,6 @@ DPDK_17.05 {
|
||||
rte_vhost_get_mem_table;
|
||||
rte_vhost_get_mtu;
|
||||
rte_vhost_get_negotiated_features;
|
||||
rte_vhost_get_vhost_vring;
|
||||
|
||||
} DPDK_16.07;
|
||||
|
@ -80,6 +80,17 @@ struct rte_vhost_memory {
|
||||
struct rte_vhost_mem_region regions[0];
|
||||
};
|
||||
|
||||
struct rte_vhost_vring {
|
||||
struct vring_desc *desc;
|
||||
struct vring_avail *avail;
|
||||
struct vring_used *used;
|
||||
uint64_t log_guest_addr;
|
||||
|
||||
int callfd;
|
||||
int kickfd;
|
||||
uint16_t size;
|
||||
};
|
||||
|
||||
/**
|
||||
* Device and vring operations.
|
||||
*/
|
||||
@ -298,4 +309,19 @@ 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 guest vring info, including the vring address, vring size, etc.
|
||||
*
|
||||
* @param vid
|
||||
* vhost device ID
|
||||
* @param vring_idx
|
||||
* vring index
|
||||
* @param vring
|
||||
* the structure to hold the requested vring info
|
||||
* @return
|
||||
* 0 on success, -1 on failure
|
||||
*/
|
||||
int rte_vhost_get_vhost_vring(int vid, uint16_t vring_idx,
|
||||
struct rte_vhost_vring *vring);
|
||||
|
||||
#endif /* _VIRTIO_NET_H_ */
|
||||
|
@ -395,6 +395,36 @@ rte_vhost_get_mem_table(int vid, struct rte_vhost_memory **mem)
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
rte_vhost_get_vhost_vring(int vid, uint16_t vring_idx,
|
||||
struct rte_vhost_vring *vring)
|
||||
{
|
||||
struct virtio_net *dev;
|
||||
struct vhost_virtqueue *vq;
|
||||
|
||||
dev = get_device(vid);
|
||||
if (!dev)
|
||||
return -1;
|
||||
|
||||
if (vring_idx >= VHOST_MAX_VRING)
|
||||
return -1;
|
||||
|
||||
vq = dev->virtqueue[vring_idx];
|
||||
if (!vq)
|
||||
return -1;
|
||||
|
||||
vring->desc = vq->desc;
|
||||
vring->avail = vq->avail;
|
||||
vring->used = vq->used;
|
||||
vring->log_guest_addr = vq->log_guest_addr;
|
||||
|
||||
vring->callfd = vq->callfd;
|
||||
vring->kickfd = vq->kickfd;
|
||||
vring->size = vq->size;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint16_t
|
||||
rte_vhost_avail_entries(int vid, uint16_t queue_id)
|
||||
{
|
||||
|
@ -120,6 +120,8 @@ struct vhost_virtqueue {
|
||||
#ifndef VIRTIO_NET_F_MQ
|
||||
#define VIRTIO_NET_F_MQ 22
|
||||
#endif
|
||||
|
||||
#define VHOST_MAX_VRING 0x100
|
||||
#define VHOST_MAX_QUEUE_PAIRS 0x80
|
||||
|
||||
#ifndef VIRTIO_NET_F_MTU
|
||||
|
Loading…
x
Reference in New Issue
Block a user