On Thu, Aug 25, 2022 at 11:07:56AM -0700, Jakub Kicinski wrote: > On Thu, 25 Aug 2022 15:02:10 +0200 Oleksij Rempel wrote: > > +void ethtool_set_ethtool_pse_ops(const struct ethtool_pse_ops *ops) > > +{ > > + rtnl_lock(); > > + ethtool_pse_ops = ops; > > + rtnl_unlock(); > > +} > > +EXPORT_SYMBOL_GPL(ethtool_set_ethtool_pse_ops); > > Do we really need the loose linking on the PSE ops? > It's not a lot of code, and the pcdev->ops should be > enough to decouple drivers, it seems. Right now i have no good idea how to properly decouple pse-pd from phydev. @Andrew, should i care about it on this stage or it is currently not a big deal? > > +static int pse_set_pse_config(struct net_device *dev, > > + struct netlink_ext_ack *extack, > > + struct nlattr **tb) > > +{ > > + struct phy_device *phydev = dev->phydev; > > + struct pse_control_config config = {}; > > + const struct ethtool_pse_ops *ops; > > + int ret; > > + > > + if (!tb[ETHTOOL_A_PODL_PSE_ADMIN_CONTROL]) > > + return 0; > > If SET has no useful attrs the usual response is -EINVAL. ack > > + ops = ethtool_pse_ops; > > + if (!ops || !ops->set_config) > > + return -EOPNOTSUPP; > > + > > + config.admin_cotrol = nla_get_u8(tb[ETHTOOL_A_PODL_PSE_ADMIN_CONTROL]); > > + > > + if (!phydev) > > + return -EOPNOTSUPP; > > + > > + // todo resolve phydev dependecy > > My lack of phydev understanding and laziness are likely the cause, > but I haven't found an explanation for this todo. What is it about? sorry. old artifact, will be removed. It is part of phydev/phylink related discussion in the last patch version. -- Pengutronix e.K. | | Steuerwalder Str. 21 | http://www.pengutronix.de/ | 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |