1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-only */ 2*4882a593Smuzhiyun 3*4882a593Smuzhiyun #ifndef _ETHTOOL_COMMON_H 4*4882a593Smuzhiyun #define _ETHTOOL_COMMON_H 5*4882a593Smuzhiyun 6*4882a593Smuzhiyun #include <linux/netdevice.h> 7*4882a593Smuzhiyun #include <linux/ethtool.h> 8*4882a593Smuzhiyun 9*4882a593Smuzhiyun #define ETHTOOL_DEV_FEATURE_WORDS DIV_ROUND_UP(NETDEV_FEATURE_COUNT, 32) 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun /* compose link mode index from speed, type and duplex */ 12*4882a593Smuzhiyun #define ETHTOOL_LINK_MODE(speed, type, duplex) \ 13*4882a593Smuzhiyun ETHTOOL_LINK_MODE_ ## speed ## base ## type ## _ ## duplex ## _BIT 14*4882a593Smuzhiyun 15*4882a593Smuzhiyun #define __SOF_TIMESTAMPING_CNT (const_ilog2(SOF_TIMESTAMPING_LAST) + 1) 16*4882a593Smuzhiyun 17*4882a593Smuzhiyun extern const char 18*4882a593Smuzhiyun netdev_features_strings[NETDEV_FEATURE_COUNT][ETH_GSTRING_LEN]; 19*4882a593Smuzhiyun extern const char 20*4882a593Smuzhiyun rss_hash_func_strings[ETH_RSS_HASH_FUNCS_COUNT][ETH_GSTRING_LEN]; 21*4882a593Smuzhiyun extern const char 22*4882a593Smuzhiyun tunable_strings[__ETHTOOL_TUNABLE_COUNT][ETH_GSTRING_LEN]; 23*4882a593Smuzhiyun extern const char 24*4882a593Smuzhiyun phy_tunable_strings[__ETHTOOL_PHY_TUNABLE_COUNT][ETH_GSTRING_LEN]; 25*4882a593Smuzhiyun extern const char link_mode_names[][ETH_GSTRING_LEN]; 26*4882a593Smuzhiyun extern const char netif_msg_class_names[][ETH_GSTRING_LEN]; 27*4882a593Smuzhiyun extern const char wol_mode_names[][ETH_GSTRING_LEN]; 28*4882a593Smuzhiyun extern const char sof_timestamping_names[][ETH_GSTRING_LEN]; 29*4882a593Smuzhiyun extern const char ts_tx_type_names[][ETH_GSTRING_LEN]; 30*4882a593Smuzhiyun extern const char ts_rx_filter_names[][ETH_GSTRING_LEN]; 31*4882a593Smuzhiyun extern const char udp_tunnel_type_names[][ETH_GSTRING_LEN]; 32*4882a593Smuzhiyun 33*4882a593Smuzhiyun int __ethtool_get_link(struct net_device *dev); 34*4882a593Smuzhiyun 35*4882a593Smuzhiyun bool convert_legacy_settings_to_link_ksettings( 36*4882a593Smuzhiyun struct ethtool_link_ksettings *link_ksettings, 37*4882a593Smuzhiyun const struct ethtool_cmd *legacy_settings); 38*4882a593Smuzhiyun int ethtool_get_max_rxfh_channel(struct net_device *dev, u32 *max); 39*4882a593Smuzhiyun int __ethtool_get_ts_info(struct net_device *dev, struct ethtool_ts_info *info); 40*4882a593Smuzhiyun 41*4882a593Smuzhiyun extern const struct ethtool_phy_ops *ethtool_phy_ops; 42*4882a593Smuzhiyun 43*4882a593Smuzhiyun #endif /* _ETHTOOL_COMMON_H */ 44