1*1b481fc3SMaciej Żenczykowski /* 2*1b481fc3SMaciej Żenczykowski * common.h - common code header 3*1b481fc3SMaciej Żenczykowski * 4*1b481fc3SMaciej Żenczykowski * Declarations for data and functions shared by ioctl and netlink code. 5*1b481fc3SMaciej Żenczykowski */ 6*1b481fc3SMaciej Żenczykowski 7*1b481fc3SMaciej Żenczykowski #ifndef ETHTOOL_COMMON_H__ 8*1b481fc3SMaciej Żenczykowski #define ETHTOOL_COMMON_H__ 9*1b481fc3SMaciej Żenczykowski 10*1b481fc3SMaciej Żenczykowski #include "internal.h" 11*1b481fc3SMaciej Żenczykowski #include <stddef.h> 12*1b481fc3SMaciej Żenczykowski #include <errno.h> 13*1b481fc3SMaciej Żenczykowski 14*1b481fc3SMaciej Żenczykowski #define KERNEL_VERSION(a, b, c) (((a) << 16) + ((b) << 8) + (c)) 15*1b481fc3SMaciej Żenczykowski 16*1b481fc3SMaciej Żenczykowski struct flag_info { 17*1b481fc3SMaciej Żenczykowski const char *name; 18*1b481fc3SMaciej Żenczykowski u32 value; 19*1b481fc3SMaciej Żenczykowski }; 20*1b481fc3SMaciej Żenczykowski 21*1b481fc3SMaciej Żenczykowski extern const struct flag_info flags_msglvl[]; 22*1b481fc3SMaciej Żenczykowski extern const unsigned int n_flags_msglvl; 23*1b481fc3SMaciej Żenczykowski 24*1b481fc3SMaciej Żenczykowski struct off_flag_def { 25*1b481fc3SMaciej Żenczykowski const char *short_name; 26*1b481fc3SMaciej Żenczykowski const char *long_name; 27*1b481fc3SMaciej Żenczykowski const char *kernel_name; 28*1b481fc3SMaciej Żenczykowski u32 get_cmd, set_cmd; 29*1b481fc3SMaciej Żenczykowski u32 value; 30*1b481fc3SMaciej Żenczykowski /* For features exposed through ETHTOOL_GFLAGS, the oldest 31*1b481fc3SMaciej Żenczykowski * kernel version for which we can trust the result. Where 32*1b481fc3SMaciej Żenczykowski * the flag was added at the same time the kernel started 33*1b481fc3SMaciej Żenczykowski * supporting the feature, this is 0 (to allow for backports). 34*1b481fc3SMaciej Żenczykowski * Where the feature was supported before the flag was added, 35*1b481fc3SMaciej Żenczykowski * it is the version that introduced the flag. 36*1b481fc3SMaciej Żenczykowski */ 37*1b481fc3SMaciej Żenczykowski u32 min_kernel_ver; 38*1b481fc3SMaciej Żenczykowski }; 39*1b481fc3SMaciej Żenczykowski 40*1b481fc3SMaciej Żenczykowski #define OFF_FLAG_DEF_SIZE 12 41*1b481fc3SMaciej Żenczykowski extern const struct off_flag_def off_flag_def[OFF_FLAG_DEF_SIZE]; 42*1b481fc3SMaciej Żenczykowski 43*1b481fc3SMaciej Żenczykowski void print_flags(const struct flag_info *info, unsigned int n_info, u32 value); 44*1b481fc3SMaciej Żenczykowski int dump_wol(struct ethtool_wolinfo *wol); 45*1b481fc3SMaciej Żenczykowski void dump_mdix(u8 mdix, u8 mdix_ctrl); 46*1b481fc3SMaciej Żenczykowski void print_indir_table(struct cmd_context *ctx, u64 ring_count, 47*1b481fc3SMaciej Żenczykowski u32 indir_size, u32 *indir); 48*1b481fc3SMaciej Żenczykowski void print_rss_hkey(u8 *hkey, u32 hkey_size); 49*1b481fc3SMaciej Żenczykowski #endif /* ETHTOOL_COMMON_H__ */ 50