Commit f467777e authored by Vadim Fedorenko's avatar Vadim Fedorenko Committed by Jakub Kicinski
Browse files

phy: add hwtstamp_get callback to phy drivers



PHY devices had lack of hwtstamp_get callback even though most of them
are tracking configuration info. Introduce new call back to
mii_timestamper.

Reviewed-by: default avatarRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
Reviewed-by: default avatarKory Maincent <kory.maincent@bootlin.com>
Signed-off-by: default avatarVadim Fedorenko <vadim.fedorenko@linux.dev>
Link: https://patch.msgid.link/20251124181151.277256-3-vadim.fedorenko@linux.dev


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 6aac2aa2
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -478,6 +478,9 @@ int __phy_hwtstamp_get(struct phy_device *phydev,
	if (!phydev)
		return -ENODEV;

	if (phydev->mii_ts && phydev->mii_ts->hwtstamp_get)
		return phydev->mii_ts->hwtstamp_get(phydev->mii_ts, config);

	return -EOPNOTSUPP;
}

+5 −0
Original line number Diff line number Diff line
@@ -29,6 +29,8 @@ struct phy_device;
 *
 * @hwtstamp_set: Handles SIOCSHWTSTAMP ioctl for hardware time stamping.
 *
 * @hwtstamp_get: Handles SIOCGHWTSTAMP ioctl for hardware time stamping.
 *
 * @link_state: Allows the device to respond to changes in the link
 *		state.  The caller invokes this function while holding
 *		the phy_device mutex.
@@ -55,6 +57,9 @@ struct mii_timestamper {
			     struct kernel_hwtstamp_config *kernel_config,
			     struct netlink_ext_ack *extack);

	int  (*hwtstamp_get)(struct mii_timestamper *mii_ts,
			     struct kernel_hwtstamp_config *kernel_config);

	void (*link_state)(struct mii_timestamper *mii_ts,
			   struct phy_device *phydev);

+5 −4
Original line number Diff line number Diff line
@@ -249,10 +249,11 @@ int net_hwtstamp_validate(const struct kernel_hwtstamp_config *cfg)
 *
 * Helper for calling the default hardware provider timestamping.
 *
 * Note: phy_mii_ioctl() only handles SIOCSHWTSTAMP (not SIOCGHWTSTAMP), and
 * there only exists a phydev->mii_ts->hwtstamp() method. So this will return
 * -EOPNOTSUPP for phylib for now, which is still more accurate than letting
 * the netdev handle the GET request.
 * Note: phy_mii_ioctl() only handles SIOCSHWTSTAMP (not SIOCGHWTSTAMP), but
 * phydev->mii_ts has both hwtstamp_get() and hwtstamp_set() methods. So this
 * will return -EOPNOTSUPP for phylib only if hwtstamp_get() is not
 * implemented for now, which is still more accurate than letting the netdev
 * handle the GET request.
 */
int dev_get_hwtstamp_phylib(struct net_device *dev,
			    struct kernel_hwtstamp_config *cfg)