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

Reply via email to