xref: /aosp_15_r20/external/ethtool/common.h (revision 1b481fc3bb1b45d4cf28d1ec12969dc1055f555d)
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