net/vhost: retrieve vid for a given port

In some cases when using the vHost PMD, certain vHost library functions
may still need to be accessed. One such example is the
rte_vhost_get_queue_num function which returns the number of virtqueues
reported by the guest - information which is not exposed by the PMD.

This commit introduces a new rte_eth_vhost function that returns the
'vid' associated with a given port id. This allows the PMD user to call
vHost library functions which require the 'vid' value.

Signed-off-by: Ciara Loftus <ciara.loftus@intel.com>
Acked-by: John McNamara <john.mcnamara@intel.com>
Acked-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
This commit is contained in:
Ciara Loftus 2016-09-13 14:47:43 +01:00 committed by Yuanhan Liu
parent 2d7c37194e
commit e22ed04288
3 changed files with 44 additions and 0 deletions

View File

@ -428,6 +428,35 @@ rte_eth_vhost_get_queue_event(uint8_t port_id,
return -1;
}
int
rte_eth_vhost_get_vid_from_port_id(uint8_t port_id)
{
struct internal_list *list;
struct rte_eth_dev *eth_dev;
struct vhost_queue *vq;
int vid = -1;
if (!rte_eth_dev_is_valid_port(port_id))
return -1;
pthread_mutex_lock(&internal_list_lock);
TAILQ_FOREACH(list, &internal_list, next) {
eth_dev = list->eth_dev;
if (eth_dev->data->port_id == port_id) {
vq = eth_dev->data->rx_queues[0];
if (vq) {
vid = vq->vid;
}
break;
}
}
pthread_mutex_unlock(&internal_list_lock);
return vid;
}
static void *
vhost_driver_session(void *param __rte_unused)
{

View File

@ -102,6 +102,15 @@ struct rte_eth_vhost_queue_event {
int rte_eth_vhost_get_queue_event(uint8_t port_id,
struct rte_eth_vhost_queue_event *event);
/**
* Get the 'vid' value associated with the specified port.
*
* @return
* - On success, the 'vid' associated with 'port_id'.
* - On failure, a negative value.
*/
int rte_eth_vhost_get_vid_from_port_id(uint8_t port_id);
#ifdef __cplusplus
}
#endif

View File

@ -8,3 +8,9 @@ DPDK_16.04 {
local: *;
};
DPDK_16.11 {
global:
rte_eth_vhost_get_vid_from_port_id;
};