On Mon, 8 Apr 2024 11:44:27 +0800 Heng Qi wrote: > + nla_for_each_nested(nest, nests, rem) { > + if (WARN_ONCE(nla_type(nest) != ETHTOOL_A_MODERATIONS_MODERATION, > + "unexpected nest attrtype %u\n", nla_type(nest))) Maybe just use the newly added nla_for_each_nested_type() > + return; > + > + ret = nla_parse_nested(tb_moder, > + ARRAY_SIZE(coalesce_set_profile_policy) - 1, > + nest, coalesce_set_profile_policy, > + extack); > + if (ret || if parsing failed it will set the right error and extack, just return the error > + !tb_moder[ETHTOOL_A_MODERATION_USEC] || > + !tb_moder[ETHTOOL_A_MODERATION_PKTS] || > + !tb_moder[ETHTOOL_A_MODERATION_COMPS]) { If you miss an attr you should use NL_SET_ERR_ATTR_MISS() or such. > + NL_SET_ERR_MSG(extack, "wrong ETHTOOL_A_MODERATION_* attribute\n"); no new line at the end of the exact string