From e729ec76c1ac3ecdfad521f053f38772203fcce7 Mon Sep 17 00:00:00 2001 From: Hemant Agrawal Date: Mon, 17 Jul 2017 14:18:14 +0530 Subject: [PATCH] net/dpaa2: support secondary process attach Signed-off-by: Hemant Agrawal --- drivers/net/dpaa2/dpaa2_ethdev.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/drivers/net/dpaa2/dpaa2_ethdev.c b/drivers/net/dpaa2/dpaa2_ethdev.c index d0f8a8fe08..c6625058a1 100644 --- a/drivers/net/dpaa2/dpaa2_ethdev.c +++ b/drivers/net/dpaa2/dpaa2_ethdev.c @@ -1482,7 +1482,7 @@ dpaa2_dev_uninit(struct rte_eth_dev *eth_dev) PMD_INIT_FUNC_TRACE(); if (rte_eal_process_type() != RTE_PROC_PRIMARY) - return -EPERM; + return 0; if (!dpni) { PMD_INIT_LOG(WARNING, "Already closed or not started"); @@ -1535,11 +1535,10 @@ rte_dpaa2_probe(struct rte_dpaa2_driver *dpaa2_drv, struct rte_eth_dev *eth_dev; int diag; - eth_dev = rte_eth_dev_allocate(dpaa2_dev->device.name); - if (eth_dev == NULL) - return -ENOMEM; - if (rte_eal_process_type() == RTE_PROC_PRIMARY) { + eth_dev = rte_eth_dev_allocate(dpaa2_dev->device.name); + if (!eth_dev) + return -ENODEV; eth_dev->data->dev_private = rte_zmalloc( "ethdev private structure", sizeof(struct dpaa2_dev_priv), @@ -1550,7 +1549,12 @@ rte_dpaa2_probe(struct rte_dpaa2_driver *dpaa2_drv, rte_eth_dev_release_port(eth_dev); return -ENOMEM; } + } else { + eth_dev = rte_eth_dev_attach_secondary(dpaa2_dev->device.name); + if (!eth_dev) + return -ENODEV; } + eth_dev->device = &dpaa2_dev->device; eth_dev->device->driver = &dpaa2_drv->driver; -- 2.20.1