All three handlers use atoi(), which cannot report an error, so a malformed value is silently taken as zero. Zero is within the accepted range for each of these arguments, so a typo was accepted and quietly applied rather than rejected.
The booleans use rte_kvargs_process_opt(), so that a bare key with no value enables the option. Signed-off-by: Stephen Hemminger <[email protected]> --- drivers/event/opdl/opdl_evdev.c | 49 ++++++--------------------------- 1 file changed, 9 insertions(+), 40 deletions(-) diff --git a/drivers/event/opdl/opdl_evdev.c b/drivers/event/opdl/opdl_evdev.c index ffa65ef930..4650d3eca8 100644 --- a/drivers/event/opdl/opdl_evdev.c +++ b/drivers/event/opdl/opdl_evdev.c @@ -3,6 +3,7 @@ */ #include <inttypes.h> +#include <stdbool.h> #include <stdlib.h> #include <string.h> @@ -580,38 +581,6 @@ opdl_close(struct rte_eventdev *dev) return 0; } -static int -assign_numa_node(const char *key __rte_unused, const char *value, void *opaque) -{ - int *socket_id = opaque; - *socket_id = atoi(value); - if (*socket_id >= RTE_MAX_NUMA_NODES) - return -1; - return 0; -} - -static int -set_do_validation(const char *key __rte_unused, const char *value, void *opaque) -{ - int *do_val = opaque; - *do_val = atoi(value); - if (*do_val != 0) - *do_val = 1; - - return 0; -} -static int -set_do_test(const char *key __rte_unused, const char *value, void *opaque) -{ - int *do_test = opaque; - - *do_test = atoi(value); - - if (*do_test != 0) - *do_test = 1; - return 0; -} - static int opdl_probe(struct rte_vdev_device *vdev) { @@ -650,8 +619,8 @@ opdl_probe(struct rte_vdev_device *vdev) struct rte_eventdev *dev; struct opdl_evdev *opdl; int socket_id = rte_socket_id(); - int do_validation = 0; - int do_test = 0; + bool do_validation = false; + bool do_test = false; int str_len; int test_result = 0; @@ -666,7 +635,7 @@ opdl_probe(struct rte_vdev_device *vdev) name); } else { int ret = rte_kvargs_process(kvlist, NUMA_NODE_ARG, - assign_numa_node, &socket_id); + rte_kvargs_handle_socket_id, &socket_id); if (ret != 0) { PMD_DRV_LOG(ERR, "%s: Error parsing numa node parameter", @@ -676,8 +645,8 @@ opdl_probe(struct rte_vdev_device *vdev) return ret; } - ret = rte_kvargs_process(kvlist, DO_VALIDATION_ARG, - set_do_validation, &do_validation); + ret = rte_kvargs_process_opt(kvlist, DO_VALIDATION_ARG, + rte_kvargs_handle_bool, &do_validation); if (ret != 0) { PMD_DRV_LOG(ERR, "%s: Error parsing do validation parameter", @@ -686,8 +655,8 @@ opdl_probe(struct rte_vdev_device *vdev) return ret; } - ret = rte_kvargs_process(kvlist, DO_TEST_ARG, - set_do_test, &do_test); + ret = rte_kvargs_process_opt(kvlist, DO_TEST_ARG, + rte_kvargs_handle_bool, &do_test); if (ret != 0) { PMD_DRV_LOG(ERR, "%s: Error parsing do test parameter", @@ -734,7 +703,7 @@ opdl_probe(struct rte_vdev_device *vdev) str_len = strlen(name); memcpy(opdl->service_name, name, str_len); - if (do_test == 1) + if (do_test) test_result = opdl_selftest(); done: -- 2.53.0

