[dpdk-dev,v2,11/11] net/ring: fix dev handle in eth_dev
Checks
Commit Message
The ring PMD uses special eth_dev allocators, which cannot be updated to
accept an rte_vdev_device.
Circumvent the limitation and store the rte_device handle in the
rte_eth_dev structure.
Fixes: 050fe6e9ff97 ("drivers/net: use ethdev allocation helper for
vdev")
Cc: stable@dpdk.org
Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
Cc: Bruce Richardson <bruce.richardson@intel.com>
---
drivers/net/ring/rte_eth_ring.c | 7 +++++++
1 file changed, 7 insertions(+)
@@ -515,6 +515,8 @@ rte_pmd_ring_probe(struct rte_vdev_device *dev)
RTE_LOG(INFO, PMD, "Initializing pmd_ring for %s\n", name);
if (params == NULL || params[0] == '\0') {
+ struct rte_eth_dev *eth_dev;
+
ret = eth_dev_ring_create(name, rte_socket_id(), DEV_CREATE);
if (ret == -1) {
RTE_LOG(INFO, PMD,
@@ -522,6 +524,11 @@ rte_pmd_ring_probe(struct rte_vdev_device *dev)
ret = eth_dev_ring_create(name, rte_socket_id(),
DEV_ATTACH);
}
+ /* find an ethdev entry */
+ eth_dev = rte_eth_dev_allocated(name);
+ if (eth_dev == NULL)
+ return -ENODEV;
+ eth_dev->device = &dev->device;
}
else {
kvlist = rte_kvargs_parse(params, valid_arguments);