[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