If multi-process is disabled (--no-shconf/--in-memory), there is no need to build a multi-process message.
Signed-off-by: David Marchand <[email protected]> --- lib/eal/common/eal_common_dev.c | 46 ++++++++++++++++++++++++--------- 1 file changed, 34 insertions(+), 12 deletions(-) diff --git a/lib/eal/common/eal_common_dev.c b/lib/eal/common/eal_common_dev.c index 48b631532a..b0ec2b0601 100644 --- a/lib/eal/common/eal_common_dev.c +++ b/lib/eal/common/eal_common_dev.c @@ -267,10 +267,16 @@ RTE_EXPORT_SYMBOL(rte_dev_probe) int rte_dev_probe(const char *devargs) { + const struct internal_config *internal_conf = + eal_get_internal_configuration(); + bool do_mp = internal_conf->no_shconf == 0; struct eal_dev_mp_req req; struct rte_device *dev; int ret; + if (!do_mp) + goto skip_mp_req; + memset(&req, 0, sizeof(req)); req.t = EAL_DEV_REQ_TYPE_ATTACH; strlcpy(req.devargs, devargs, EAL_DEV_MP_DEV_ARGS_MAX_LEN); @@ -294,6 +300,7 @@ rte_dev_probe(const char *devargs) /* attach a shared device from primary start from here: */ +skip_mp_req: /* primary attach the new device itself. */ ret = local_dev_probe(devargs, &dev); @@ -311,6 +318,9 @@ rte_dev_probe(const char *devargs) return ret; } + if (!do_mp) + goto skip_mp_notify; + /* primary send attach sync request to secondary. */ ret = eal_dev_hotplug_request_to_secondary(&req); @@ -337,16 +347,19 @@ rte_dev_probe(const char *devargs) goto rollback; } +skip_mp_notify: return 0; rollback: - req.t = EAL_DEV_REQ_TYPE_ATTACH_ROLLBACK; + if (do_mp) { + req.t = EAL_DEV_REQ_TYPE_ATTACH_ROLLBACK; - /* primary send rollback request to secondary. */ - if (eal_dev_hotplug_request_to_secondary(&req) != 0) - EAL_LOG(WARNING, - "Failed to rollback device attach on secondary." - "Devices in secondary may not sync with primary"); + /* primary send rollback request to secondary. */ + if (eal_dev_hotplug_request_to_secondary(&req) != 0) + EAL_LOG(WARNING, + "Failed to rollback device attach on secondary." + "Devices in secondary may not sync with primary"); + } /* primary rollback itself. */ if (local_dev_remove(dev) != 0) @@ -405,6 +418,9 @@ RTE_EXPORT_SYMBOL(rte_dev_remove) int rte_dev_remove(struct rte_device *dev) { + const struct internal_config *internal_conf = + eal_get_internal_configuration(); + bool do_mp = internal_conf->no_shconf == 0; struct eal_dev_mp_req req; char *devargs; int ret; @@ -418,6 +434,9 @@ rte_dev_remove(struct rte_device *dev) if (ret != 0) return ret; + if (!do_mp) + goto skip_mp_req; + memset(&req, 0, sizeof(req)); req.t = EAL_DEV_REQ_TYPE_DETACH; strlcpy(req.devargs, devargs, EAL_DEV_MP_DEV_ARGS_MAX_LEN); @@ -472,6 +491,7 @@ rte_dev_remove(struct rte_device *dev) goto rollback; } +skip_mp_req: /* primary detach the device itself. */ ret = local_dev_remove(dev); @@ -488,13 +508,15 @@ rte_dev_remove(struct rte_device *dev) return 0; rollback: - req.t = EAL_DEV_REQ_TYPE_DETACH_ROLLBACK; + if (do_mp) { + req.t = EAL_DEV_REQ_TYPE_DETACH_ROLLBACK; - /* primary send rollback request to secondary. */ - if (eal_dev_hotplug_request_to_secondary(&req) != 0) - EAL_LOG(WARNING, - "Failed to rollback device detach on secondary." - "Devices in secondary may not sync with primary"); + /* primary send rollback request to secondary. */ + if (eal_dev_hotplug_request_to_secondary(&req) != 0) + EAL_LOG(WARNING, + "Failed to rollback device detach on secondary." + "Devices in secondary may not sync with primary"); + } return ret; } -- 2.54.0

