static int
do_eth_dev_ring_create(const char *name,
+ struct rte_vdev_device *vdev,
struct rte_ring * const rx_queues[],
const unsigned int nb_rx_queues,
struct rte_ring *const tx_queues[],
}
/* now put it all together
+ * - store EAL device in eth_dev,
* - store queue data in internals,
* - store numa_node info in eth_dev_data
* - point eth_dev_data to internals
* - and point eth_dev structure to new eth_dev_data structure
*/
+ eth_dev->device = &vdev->device;
+
data = eth_dev->data;
data->rx_queues = rx_queues_local;
data->tx_queues = tx_queues_local;
}
static int
-eth_dev_ring_create(const char *name, const unsigned int numa_node,
+eth_dev_ring_create(const char *name,
+ struct rte_vdev_device *vdev,
+ const unsigned int numa_node,
enum dev_action action, struct rte_eth_dev **eth_dev)
{
/* rx and tx are so-called from point of view of first port.
return -1;
}
- if (do_eth_dev_ring_create(name, rxtx, num_rings, rxtx, num_rings,
+ if (do_eth_dev_ring_create(name, vdev, rxtx, num_rings, rxtx, num_rings,
numa_node, action, eth_dev) < 0)
return -1;
PMD_LOG(INFO, "Initializing pmd_ring for %s", name);
if (params == NULL || params[0] == '\0') {
- ret = eth_dev_ring_create(name, rte_socket_id(), DEV_CREATE,
+ ret = eth_dev_ring_create(name, dev, rte_socket_id(), DEV_CREATE,
ð_dev);
if (ret == -1) {
PMD_LOG(INFO,
"Attach to pmd_ring for %s", name);
- ret = eth_dev_ring_create(name, rte_socket_id(),
+ ret = eth_dev_ring_create(name, dev, rte_socket_id(),
DEV_ATTACH, ð_dev);
}
} else {
if (!kvlist) {
PMD_LOG(INFO,
"Ignoring unsupported parameters when creatingrings-backed ethernet device");
- ret = eth_dev_ring_create(name, rte_socket_id(),
+ ret = eth_dev_ring_create(name, dev, rte_socket_id(),
DEV_CREATE, ð_dev);
if (ret == -1) {
PMD_LOG(INFO,
"Attach to pmd_ring for %s",
name);
- ret = eth_dev_ring_create(name, rte_socket_id(),
+ ret = eth_dev_ring_create(name, dev, rte_socket_id(),
DEV_ATTACH, ð_dev);
}
- if (eth_dev)
- eth_dev->device = &dev->device;
-
return ret;
}
if (ret < 0)
goto out_free;
- ret = do_eth_dev_ring_create(name,
+ ret = do_eth_dev_ring_create(name, dev,
internal_args->rx_queues,
internal_args->nb_rx_queues,
internal_args->tx_queues,
for (info->count = 0; info->count < info->total; info->count++) {
ret = eth_dev_ring_create(info->list[info->count].name,
+ dev,
info->list[info->count].node,
info->list[info->count].action,
ð_dev);
PMD_LOG(INFO,
"Attach to pmd_ring for %s",
name);
- ret = eth_dev_ring_create(name,
+ ret = eth_dev_ring_create(name, dev,
info->list[info->count].node,
DEV_ATTACH,
ð_dev);
}
}
- if (eth_dev)
- eth_dev->device = &dev->device;
-
out_free:
rte_kvargs_free(kvlist);
rte_free(info);