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:
parent
2d7c37194e
commit
e22ed04288
@ -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)
|
||||
{
|
||||
|
@ -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
|
||||
|
@ -8,3 +8,9 @@ DPDK_16.04 {
|
||||
|
||||
local: *;
|
||||
};
|
||||
|
||||
DPDK_16.11 {
|
||||
global:
|
||||
|
||||
rte_eth_vhost_get_vid_from_port_id;
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user