Thread (28 messages) 28 messages, 6 authors, 2019-02-11

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.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help