diff options
author | Florian Fainelli <f.fainelli@gmail.com> | 2020-07-05 21:27:56 -0700 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2020-07-07 15:41:04 -0700 |
commit | 4895d7808e7030c831f2ef83a3cc6ec0d46c30b1 (patch) | |
tree | 5ce4027f9658bae6ae1a8223a18eb1f022ebd2ca /net/ethtool | |
parent | 1a4d681634fad302157afcb53a178c4c59cb75ee (diff) | |
download | lwn-4895d7808e7030c831f2ef83a3cc6ec0d46c30b1.tar.gz lwn-4895d7808e7030c831f2ef83a3cc6ec0d46c30b1.zip |
net: ethtool: Introduce ethtool_phy_ops
In order to decouple ethtool from its PHY library dependency, define an
ethtool_phy_ops singleton which can be overriden by the PHY library when
it loads with an appropriate set of function pointers.
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ethtool')
-rw-r--r-- | net/ethtool/common.c | 11 | ||||
-rw-r--r-- | net/ethtool/common.h | 2 |
2 files changed, 13 insertions, 0 deletions
diff --git a/net/ethtool/common.c b/net/ethtool/common.c index aaecfc916a4d..ce4dbae5a943 100644 --- a/net/ethtool/common.c +++ b/net/ethtool/common.c @@ -2,6 +2,7 @@ #include <linux/net_tstamp.h> #include <linux/phy.h> +#include <linux/rtnetlink.h> #include "common.h" @@ -373,3 +374,13 @@ int __ethtool_get_ts_info(struct net_device *dev, struct ethtool_ts_info *info) return 0; } + +const struct ethtool_phy_ops *ethtool_phy_ops; + +void ethtool_set_ethtool_phy_ops(const struct ethtool_phy_ops *ops) +{ + rtnl_lock(); + ethtool_phy_ops = ops; + rtnl_unlock(); +} +EXPORT_SYMBOL_GPL(ethtool_set_ethtool_phy_ops); diff --git a/net/ethtool/common.h b/net/ethtool/common.h index a62f68ccc43a..b83bef38368c 100644 --- a/net/ethtool/common.h +++ b/net/ethtool/common.h @@ -37,4 +37,6 @@ bool convert_legacy_settings_to_link_ksettings( int ethtool_get_max_rxfh_channel(struct net_device *dev, u32 *max); int __ethtool_get_ts_info(struct net_device *dev, struct ethtool_ts_info *info); +extern const struct ethtool_phy_ops *ethtool_phy_ops; + #endif /* _ETHTOOL_COMMON_H */ |