> -static int parse_named_u8(struct cmd_context *ctx, const char *name, u8 *val) > +static int parse_named_uint(struct cmd_context *ctx, const char *name, > + void *val, enum tunable_type_id type_id) > { > if (ctx->argc < 2) > return 0; > @@ -5026,7 +5051,16 @@ static int parse_named_u8(struct cmd_context *ctx, > const char *name, u8 *val) > if (strcmp(*ctx->argp, name)) > return 0; > > - *val = get_uint_range(*(ctx->argp + 1), 0, 0xff); > + switch (type_id) { > + case ETHTOOL_TUNABLE_U8: > + *(u8 *)val = get_uint_range(*(ctx->argp + 1), 0, 0xff); > + break; > + case ETHTOOL_TUNABLE_U16: > + *(u16 *)val = get_uint_range(*(ctx->argp + 1), 0, 0xffff);
I personally don't like these casts. Could you refactor this code in some other way to avoid them. Make the parse_named_u8() parse_named_u16() a bit fatter, and the shared code a bit slimmer? Thanks Andrew