From: Gagandeep Singh <[email protected]>

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]>
---
 drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c | 40 ++++++++++++++++++---
 1 file changed, 36 insertions(+), 4 deletions(-)

diff --git a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c 
b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c
index 16af02e758..1416c8dc67 100644
--- a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c
+++ b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c
@@ -4412,25 +4412,57 @@ 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;
+       long val;
+
+       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) {
+               if (dpaa2_sec_parse_int(env, &val))
+                       DPAA2_SEC_WARN("Invalid %s value '%s', ignored",
+                               DRIVER_STRICT_ORDER, env);
+               else
+                       internals->en_loose_ordered = !val;
+       }
+
+       env = getenv(DRIVER_DUMP_MODE);
+       if (env) {
+               if (dpaa2_sec_parse_int(env, &val)) {
+                       DPAA2_SEC_WARN("Invalid %s value '%s', ignored",
+                               DRIVER_DUMP_MODE, env);
+               } else {
+                       if (val > DPAA2_SEC_DP_FULL_DUMP)
+                               val = DPAA2_SEC_DP_FULL_DUMP;
+                       else if (val < DPAA2_SEC_DP_NO_DUMP)
+                               val = DPAA2_SEC_DP_NO_DUMP;
+                       dpaa2_sec_dp_dump = val;
+               }
+       }
 }
 
 static int
-- 
2.43.0

Reply via email to