Allow driver configuration via environment variables as a fallback when devargs are not provided. After processing devargs (or when devargs are absent), check DRIVER_STRICT_ORDER and DRIVER_DUMP_MODE environment variables to set en_loose_ordered and dpaa2_sec_dp_dump.
This lets users configure the driver without modifying EAL arguments, useful in environments where command-line access is restricted. Signed-off-by: Gagandeep Singh <[email protected]> --- doc/guides/cryptodevs/dpaa2_sec.rst | 12 ++++++++- drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c | 27 ++++++++++++++++++--- 2 files changed, 34 insertions(+), 5 deletions(-) diff --git a/doc/guides/cryptodevs/dpaa2_sec.rst b/doc/guides/cryptodevs/dpaa2_sec.rst index f95c6282bb..925d3371bf 100644 --- a/doc/guides/cryptodevs/dpaa2_sec.rst +++ b/doc/guides/cryptodevs/dpaa2_sec.rst @@ -1,5 +1,5 @@ .. SPDX-License-Identifier: BSD-3-Clause - Copyright 2016 NXP + Copyright 2016,2026 NXP @@ -188,9 +188,19 @@ along with other useful debugging information like session, queue, descriptor data. e.g. ``fslmc:dpseci.1,drv_dump_mode=1`` +Alternatively, set the environment variable ``drv_dump_mode`` to the desired +mode value. The environment variable is used as a fallback when the devarg is +not provided, which is useful in production environments where modifying EAL +command-line arguments is not practical. +e.g. ``export drv_dump_mode=1`` + Enable strict ordering ---------------------- Use dev arg option ``drv_strict_order=1`` to enable strict ordering. By default, loose ordering is set for ordered schedule type event. e.g. ``fslmc:dpseci.1,drv_strict_order=1`` + +Alternatively, set the environment variable ``drv_strict_order=1`` to enable +strict ordering without modifying EAL arguments. +e.g. ``export drv_strict_order=1`` diff --git a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c index 15152cc5a1..0ff54fb644 100644 --- a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c +++ b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c @@ -4366,25 +4366,44 @@ check_devargs_handler(const char *key, const char *value, static void dpaa2_sec_get_devargs(struct rte_cryptodev *cryptodev, const char *key) { + struct dpaa2_sec_dev_private *internals; struct rte_kvargs *kvlist; struct rte_devargs *devargs; + int ret; + char *env; + + internals = cryptodev->data->dev_private; devargs = cryptodev->device->devargs; if (!devargs) - return; + goto env_set; kvlist = rte_kvargs_parse(devargs->args, NULL); if (!kvlist) - return; + goto env_set; if (!rte_kvargs_count(kvlist, key)) { rte_kvargs_free(kvlist); - return; + goto env_set; } - rte_kvargs_process(kvlist, key, + ret = rte_kvargs_process(kvlist, key, check_devargs_handler, (void *)cryptodev); rte_kvargs_free(kvlist); + if (!ret) + return; + +env_set: + env = getenv(DRIVER_STRICT_ORDER); + if (env) + internals->en_loose_ordered = !atoi(env); + + env = getenv(DRIVER_DUMP_MODE); + if (env) { + dpaa2_sec_dp_dump = atoi(env); + if (dpaa2_sec_dp_dump > DPAA2_SEC_DP_FULL_DUMP) + dpaa2_sec_dp_dump = DPAA2_SEC_DP_FULL_DUMP; + } } static int -- 2.25.1

