119370Spst/* SPDX-License-Identifier: GPL-2.0-or-later */ 219370Spst/* 3130803Smarcel * Stubs for the Network PHY library 4130803Smarcel */ 5130803Smarcel 698944Sobrien#include <linux/rtnetlink.h> 719370Spst 898944Sobrienstruct kernel_hwtstamp_config; 998944Sobrienstruct netlink_ext_ack; 1098944Sobrienstruct phy_device; 1198944Sobrien 1219370Spst#if IS_ENABLED(CONFIG_PHYLIB) 1398944Sobrien 1498944Sobrienextern const struct phylib_stubs *phylib_stubs; 1598944Sobrien 1698944Sobrienstruct phylib_stubs { 1719370Spst int (*hwtstamp_get)(struct phy_device *phydev, 1898944Sobrien struct kernel_hwtstamp_config *config); 1998944Sobrien int (*hwtstamp_set)(struct phy_device *phydev, 2098944Sobrien struct kernel_hwtstamp_config *config, 2198944Sobrien struct netlink_ext_ack *extack); 2219370Spst}; 2319370Spst 2419370Spststatic inline int phy_hwtstamp_get(struct phy_device *phydev, 25130803Smarcel struct kernel_hwtstamp_config *config) 26130803Smarcel{ 2719370Spst /* phylib_register_stubs() and phylib_unregister_stubs() 2819370Spst * also run under rtnl_lock(). 2998944Sobrien */ 3098944Sobrien ASSERT_RTNL(); 31130803Smarcel 32130803Smarcel if (!phylib_stubs) 33130803Smarcel return -EOPNOTSUPP; 34130803Smarcel 35130803Smarcel return phylib_stubs->hwtstamp_get(phydev, config); 36130803Smarcel} 37130803Smarcel 38130803Smarcelstatic inline int phy_hwtstamp_set(struct phy_device *phydev, 39130803Smarcel struct kernel_hwtstamp_config *config, 40130803Smarcel struct netlink_ext_ack *extack) 41130803Smarcel{ 42130803Smarcel /* phylib_register_stubs() and phylib_unregister_stubs() 43130803Smarcel * also run under rtnl_lock(). 44130803Smarcel */ 45130803Smarcel ASSERT_RTNL(); 46130803Smarcel 47130803Smarcel if (!phylib_stubs) 48130803Smarcel return -EOPNOTSUPP; 49130803Smarcel 50130803Smarcel return phylib_stubs->hwtstamp_set(phydev, config, extack); 51130803Smarcel} 5219370Spst 5319370Spst#else 54130803Smarcel 5598944Sobrienstatic inline int phy_hwtstamp_get(struct phy_device *phydev, 56130803Smarcel struct kernel_hwtstamp_config *config) 57130803Smarcel{ 58130803Smarcel return -EOPNOTSUPP; 59130803Smarcel} 60130803Smarcel 6119370Spststatic inline int phy_hwtstamp_set(struct phy_device *phydev, 6219370Spst struct kernel_hwtstamp_config *config, 63130803Smarcel struct netlink_ext_ack *extack) 64130803Smarcel{ 65130803Smarcel return -EOPNOTSUPP; 66130803Smarcel} 67130803Smarcel 68130803Smarcel#endif 69130803Smarcel