[PATCH v9 net-next 12/12] net: remove phy_has_hwtstamp() -> phy_mii_ioctl() decision from converted drivers

Köry Maincent kory.maincent at bootlin.com
Thu Sep 28 03:12:14 PDT 2023


On Tue,  1 Aug 2023 17:28:24 +0300
Vladimir Oltean <vladimir.oltean at nxp.com> wrote:

> It is desirable that the new .ndo_hwtstamp_set() API gives more
> uniformity, less overhead and future flexibility w.r.t. the PHY
> timestamping behavior.
> 
> Currently there are some drivers which allow PHY timestamping through
> the procedure mentioned in Documentation/networking/timestamping.rst.
> They don't do anything locally if phy_has_hwtstamp() is set, except for
> lan966x which installs PTP packet traps.
> 
> Centralize that behavior in a new dev_set_hwtstamp_phylib() code
> function, which calls either phy_mii_ioctl() for the phylib PHY,
> or .ndo_hwtstamp_set() of the netdev, based on a single policy
> (currently simplistic: phy_has_hwtstamp()).
> 
> Any driver converted to .ndo_hwtstamp_set() will automatically opt into
> the centralized phylib timestamping policy. Unconverted drivers still
> get to choose whether they let the PHY handle timestamping or not.
> 
> Netdev drivers with integrated PHY drivers that don't use phylib
> presumably don't set dev->phydev, and those will always see
> HWTSTAMP_SOURCE_NETDEV requests even when converted. The timestamping
> policy will remain 100% up to them.

> +static int dev_set_hwtstamp_phylib(struct net_device *dev,
> +				   struct kernel_hwtstamp_config *cfg,
> +				   struct netlink_ext_ack *extack)
> +{
...

> +	if (phy_ts) {
> +		err = phy_hwtstamp_set(dev->phydev, cfg, extack);
> +		if (err) {
> +			if (changed)
> +				ops->ndo_hwtstamp_set(dev, &old_cfg, NULL);
> +			return err;
> +		}
> +	}

In this case the copy_from_user function will be call 2 times, one in
dev_set_hwtstamp and one in the mii_ts.hwtstamp callback of the PHY driver.
Should we create also a copied_from_user flag? Other idea?

Regards,



More information about the linux-arm-kernel mailing list