[dpdk-dev] [PATCH 08/16] vhost: query pmd internal by vid
Yuanhan Liu
yuanhan.liu at linux.intel.com
Tue May 3 00:25:19 CEST 2016
Query internal by vid instead of "ifname", to avoid the dependency of
virtio_net struct.
Signed-off-by: Yuanhan Liu <yuanhan.liu at linux.intel.com>
---
drivers/net/vhost/rte_eth_vhost.c | 19 +++++++++----------
1 file changed, 9 insertions(+), 10 deletions(-)
diff --git a/drivers/net/vhost/rte_eth_vhost.c b/drivers/net/vhost/rte_eth_vhost.c
index 63538c1..290fd9e 100644
--- a/drivers/net/vhost/rte_eth_vhost.c
+++ b/drivers/net/vhost/rte_eth_vhost.c
@@ -86,6 +86,7 @@ struct vhost_queue {
};
struct pmd_internal {
+ int vid;
char *dev_name;
char *iface_name;
uint16_t max_queues;
@@ -194,20 +195,17 @@ eth_dev_configure(struct rte_eth_dev *dev __rte_unused)
}
static inline struct internal_list *
-find_internal_resource(char *ifname)
+find_internal_resource(int vid)
{
int found = 0;
struct internal_list *list;
struct pmd_internal *internal;
- if (ifname == NULL)
- return NULL;
-
pthread_mutex_lock(&internal_list_lock);
TAILQ_FOREACH(list, &internal_list, next) {
internal = list->eth_dev->data->dev_private;
- if (!strcmp(internal->iface_name, ifname)) {
+ if (internal->vid == vid) {
found = 1;
break;
}
@@ -238,14 +236,15 @@ new_device(struct virtio_net *dev)
return -1;
}
- list = find_internal_resource(dev->ifname);
+ list = find_internal_resource(dev->vid);
if (list == NULL) {
- RTE_LOG(INFO, PMD, "Invalid device name\n");
+ RTE_LOG(INFO, PMD, "Invalid vid %d\n", dev->vid);
return -1;
}
eth_dev = list->eth_dev;
internal = eth_dev->data->dev_private;
+ internal->vid = dev->vid;
#ifdef RTE_LIBRTE_VHOST_NUMA
ret = get_mempolicy(&newnode, NULL, 0, dev,
@@ -371,9 +370,9 @@ vring_state_changed(struct virtio_net *dev, uint16_t vring, int enable)
return -1;
}
- list = find_internal_resource(dev->ifname);
+ list = find_internal_resource(dev->vid);
if (list == NULL) {
- RTE_LOG(ERR, PMD, "Invalid interface name: %s\n", dev->ifname);
+ RTE_LOG(ERR, PMD, "Invalid vid %d\n", dev->vid);
return -1;
}
@@ -884,7 +883,7 @@ rte_pmd_vhost_devuninit(const char *name)
if (internal == NULL)
return -ENODEV;
- list = find_internal_resource(internal->iface_name);
+ list = find_internal_resource(internal->vid);
if (list == NULL)
return -ENODEV;
--
1.9.0
More information about the dev
mailing list