ethdev: use device name from device structure
[dpdk.git] / lib / librte_ether / rte_ethdev.c
index 71a576c..957ae2a 100644 (file)
@@ -179,9 +179,11 @@ rte_eth_dev_allocated(const char *name)
        unsigned i;
 
        for (i = 0; i < RTE_MAX_ETHPORTS; i++) {
-               if ((rte_eth_devices[i].state == RTE_ETH_DEV_ATTACHED) &&
-                   strcmp(rte_eth_devices[i].data->name, name) == 0)
-                       return &rte_eth_devices[i];
+               if (rte_eth_devices[i].state == RTE_ETH_DEV_ATTACHED &&
+                               rte_eth_devices[i].device) {
+                       if (!strcmp(rte_eth_devices[i].device->name, name))
+                               return &rte_eth_devices[i];
+               }
        }
        return NULL;
 }
@@ -311,7 +313,7 @@ rte_eth_dev_count(void)
 int
 rte_eth_dev_get_name_by_port(uint8_t port_id, char *name)
 {
-       char *tmp;
+       const char *tmp;
 
        RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -EINVAL);
 
@@ -322,7 +324,7 @@ rte_eth_dev_get_name_by_port(uint8_t port_id, char *name)
 
        /* shouldn't check 'rte_eth_devices[i].data',
         * because it might be overwritten by VDEV PMD */
-       tmp = rte_eth_dev_data[port_id].name;
+       tmp = rte_eth_devices[port_id].device->name;
        strcpy(name, tmp);
        return 0;
 }
@@ -330,6 +332,7 @@ rte_eth_dev_get_name_by_port(uint8_t port_id, char *name)
 int
 rte_eth_dev_get_port_by_name(const char *name, uint8_t *port_id)
 {
+       int ret;
        int i;
 
        if (name == NULL) {
@@ -341,11 +344,13 @@ rte_eth_dev_get_port_by_name(const char *name, uint8_t *port_id)
                return -ENODEV;
 
        RTE_ETH_FOREACH_DEV(i) {
-               if (!strncmp(name,
-                       rte_eth_dev_data[i].name, strlen(name))) {
+               if (!rte_eth_devices[i].device)
+                       continue;
 
+               ret = strncmp(name, rte_eth_devices[i].device->name,
+                               strlen(name));
+               if (ret == 0) {
                        *port_id = i;
-
                        return 0;
                }
        }
@@ -438,9 +443,10 @@ rte_eth_dev_detach(uint8_t port_id, char *name)
        if (rte_eth_dev_is_detachable(port_id))
                goto err;
 
-       snprintf(name, sizeof(rte_eth_devices[port_id].data->name),
-                "%s", rte_eth_devices[port_id].data->name);
-       ret = rte_eal_dev_detach(name);
+       snprintf(name, sizeof(rte_eth_devices[port_id].device->name),
+                "%s", rte_eth_devices[port_id].device->name);
+
+       ret = rte_eal_dev_detach(rte_eth_devices[port_id].device);
        if (ret < 0)
                goto err;