Re: [PATCH for-next 1/4] devlink: refactor validation of finding required arguments
From: David Ahern <hidden>
Date: 2019-02-11 02:47:02
On 2/10/19 11:28 AM, Aya Levin wrote:
quoted hunk ↗ jump to hunk
@@ -950,6 +951,51 @@ static int param_cmode_get(const char *cmodestr, return 0; } +struct dl_args_metadata { + uint32_t o_flag; + char err_msg[DL_ARGS_REQUIRED_MAX_ERR_LEN]; +}; + +static const struct dl_args_metadata dl_args_required[] = { + {DL_OPT_PORT_TYPE, "Port type not set.\n"}, + {DL_OPT_PORT_COUNT, "Port split count option expected.\n"}, + {DL_OPT_SB_POOL, "Pool index option expected.\n"}, + {DL_OPT_SB_SIZE, "Pool size option expected.\n"}, + {DL_OPT_SB_TYPE, "Pool type option expected.\n"}, + {DL_OPT_SB_THTYPE, "Pool threshold type option expected.\n"}, + {DL_OPT_SB_TH, "Threshold option expected.\n"}, + {DL_OPT_SB_TC, "TC index option expected.\n"}, + {DL_OPT_ESWITCH_MODE, "E-Switch mode option expected.\n"}, + {DL_OPT_ESWITCH_INLINE_MODE, "E-Switch inline-mode option expected.\n"}, + {DL_OPT_DPIPE_TABLE_NAME, "Dpipe table name expected\n"}, + {DL_OPT_DPIPE_TABLE_COUNTERS, "Dpipe table counter state expected\n"}, + {DL_OPT_ESWITCH_ENCAP_MODE, "E-Switch encapsulation option expected.\n"}, + {DL_OPT_PARAM_NAME, "Parameter name expected.\n"}, + {DL_OPT_PARAM_VALUE, "Value to set expected.\n"}, + {DL_OPT_PARAM_CMODE, "Configuration mode expected.\n"}, + {DL_OPT_REGION_SNAPSHOT_ID, "Region snapshot id expected.\n"}, + {DL_OPT_REGION_ADDRESS, "Region address value expected.\n"}, + {DL_OPT_REGION_LENGTH, "Region length value expected.\n"}, +}; + +static int validate_finding_required_dl_args(uint32_t o_required, + uint32_t o_found) +{ + uint32_t dl_args_required_size; + uint32_t o_flag; + int i; + + dl_args_required_size = ARRAY_SIZE(dl_args_required); + for (i = 0; i < dl_args_required_size; i++) { + o_flag = dl_args_required[i].o_flag; + if ((o_required & o_flag) && !(o_found & o_flag)) { + pr_err("%s", dl_args_required[i].err_msg); + return -EINVAL; + } + } + return 0; +} +
much better. Thank you for refactoring this.