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: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Reviewed-by: Kory Maincent <kory.maincent@bootlin.com>
Signed-off-by: Vadim Fedorenko <vadim.fedorenko@linux.dev>
Link: https://patch.msgid.link/20251124181151.277256-3-vadim.fedorenko@linux.dev
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
Vadim Fedorenko
2025-11-24 18:11:46 +00:00
committed by Jakub Kicinski
parent 6aac2aa2df
commit f467777efb
3 changed files with 13 additions and 4 deletions

View File

@@ -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;
}

View File

@@ -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);

View File

@@ -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)