> @@ -143,6 +150,43 @@ ethnl_set_pse(struct ethnl_req_info *req_info, struct genl_info *info) > return -EOPNOTSUPP; > } > > + if (!tb[ETHTOOL_A_PODL_PSE_ADMIN_CONTROL] && > + !tb[ETHTOOL_A_C33_PSE_ADMIN_CONTROL]) > + return 0; -EINVAL? Is there a real use case for not passing either of them? > + > + if (tb[ETHTOOL_A_PODL_PSE_ADMIN_CONTROL] && > + !(pse_get_types(phydev->psec) & PSE_PODL)) { > + NL_SET_ERR_MSG_ATTR(info->extack, > + tb[ETHTOOL_A_PODL_PSE_ADMIN_CONTROL], > + "setting PSE PoDL admin control not supported"); > + return -EOPNOTSUPP; > + } > + if (tb[ETHTOOL_A_C33_PSE_ADMIN_CONTROL] && > + !(pse_get_types(phydev->psec) & PSE_C33)) { > + NL_SET_ERR_MSG_ATTR(info->extack, > + tb[ETHTOOL_A_C33_PSE_ADMIN_CONTROL], > + "setting PSE PoE admin control not supported"); This probably should be C33, not PoE? I guess it depends on what the user space tools are using. Andrew