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

Vladimir Oltean vladimir.oltean at nxp.com
Tue Jul 18 07:46:52 PDT 2023


On Tue, Jul 18, 2023 at 03:38:27PM +0100, Russell King (Oracle) wrote:
> On Mon, Jul 17, 2023 at 06:27:09PM +0300, Vladimir Oltean wrote:
> > +static int dev_set_hwtstamp_phylib(struct net_device *dev,
> > +				   struct kernel_hwtstamp_config *cfg,
> > +				   struct netlink_ext_ack *extack)
> > +{
> > +	const struct net_device_ops *ops = dev->netdev_ops;
> > +	bool phy_ts = phy_has_hwtstamp(dev->phydev);
> > +	struct kernel_hwtstamp_config old_cfg = {};
> > +	bool changed = false;
> > +	int err;
> > +
> > +	cfg->source = phy_ts ? HWTSTAMP_SOURCE_PHYLIB : HWTSTAMP_SOURCE_NETDEV;
> > +
> > +	if (!phy_ts || (dev->priv_flags & IFF_SEE_ALL_HWTSTAMP_REQUESTS)) {
> 
> I suppose the idea here is that for something like mvpp2, which when we
> have PTP support for Marvell PHYs in general will want to prefer to use
> the MAC-based PTP rather than PHY-based, that driver needs to set
> IFF_SEE_ALL_HWTSTAMP_REQUESTS so that the ndo timestamp ops always get
> called? I didn't see this discussed in the commit message for this
> patch.

No; the plan for mvpp2-like situations is for Köry to:

- add UAPI to allow specifying the timestamping source (based on PHC ID,
  aka /dev/ptpN, probably)

- change the core policy (effectively this function) to prefer:
  - netdev-based timestamping by default (this reverses the current policy,
    to prevent future regressions when more phylib drivers gain
    timestamping support)
  - phylib-based timestamping for a selection of whitelisted phylib PHYs
    (this avoids regressions with existing phylib-based systems)
  - the user choice

The only thing that IFF_SEE_ALL_HWTSTAMP_REQUESTS does is to give the
netdev a hook for phylib timestamping operations, for completely
unrelated purposes (switch ports that become PTP-aware must stop
flooding PTP packets).



More information about the linux-arm-kernel mailing list