xref: /linux/include/uapi/linux/ethtool_netlink.h (revision fe33c0fbed75dd464747c0faaedf94c7d8eb4101)
12b4a8990SMichal Kubecek /* SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note */
22b4a8990SMichal Kubecek /*
32b4a8990SMichal Kubecek  * include/uapi/linux/ethtool_netlink.h - netlink interface for ethtool
42b4a8990SMichal Kubecek  *
572ef5e52SMauro Carvalho Chehab  * See Documentation/networking/ethtool-netlink.rst in kernel source tree for
62b4a8990SMichal Kubecek  * doucumentation of the interface.
72b4a8990SMichal Kubecek  */
82b4a8990SMichal Kubecek 
92b4a8990SMichal Kubecek #ifndef _UAPI_LINUX_ETHTOOL_NETLINK_H_
102b4a8990SMichal Kubecek #define _UAPI_LINUX_ETHTOOL_NETLINK_H_
112b4a8990SMichal Kubecek 
122b4a8990SMichal Kubecek #include <linux/ethtool.h>
132b4a8990SMichal Kubecek 
142b4a8990SMichal Kubecek /* message types - userspace to kernel */
152b4a8990SMichal Kubecek enum {
162b4a8990SMichal Kubecek 	ETHTOOL_MSG_USER_NONE,
1771921690SMichal Kubecek 	ETHTOOL_MSG_STRSET_GET,
18459e0b81SMichal Kubecek 	ETHTOOL_MSG_LINKINFO_GET,
19a53f3d41SMichal Kubecek 	ETHTOOL_MSG_LINKINFO_SET,
20f625aa9bSMichal Kubecek 	ETHTOOL_MSG_LINKMODES_GET,
21bfbcfe20SMichal Kubecek 	ETHTOOL_MSG_LINKMODES_SET,
223d2b847fSMichal Kubecek 	ETHTOOL_MSG_LINKSTATE_GET,
236a94b8ccSMichal Kubecek 	ETHTOOL_MSG_DEBUG_GET,
24e54d04e3SMichal Kubecek 	ETHTOOL_MSG_DEBUG_SET,
2551ea22b0SMichal Kubecek 	ETHTOOL_MSG_WOL_GET,
268d425b19SMichal Kubecek 	ETHTOOL_MSG_WOL_SET,
270524399dSMichal Kubecek 	ETHTOOL_MSG_FEATURES_GET,
280980bfcdSMichal Kubecek 	ETHTOOL_MSG_FEATURES_SET,
29e16c3386SMichal Kubecek 	ETHTOOL_MSG_PRIVFLAGS_GET,
30f265d799SMichal Kubecek 	ETHTOOL_MSG_PRIVFLAGS_SET,
31e4a1717bSMichal Kubecek 	ETHTOOL_MSG_RINGS_GET,
322fc2929eSMichal Kubecek 	ETHTOOL_MSG_RINGS_SET,
330c84979cSMichal Kubecek 	ETHTOOL_MSG_CHANNELS_GET,
34e19c591eSMichal Kubecek 	ETHTOOL_MSG_CHANNELS_SET,
3521727545SMichal Kubecek 	ETHTOOL_MSG_COALESCE_GET,
369881418cSMichal Kubecek 	ETHTOOL_MSG_COALESCE_SET,
377f59fb32SMichal Kubecek 	ETHTOOL_MSG_PAUSE_GET,
383ab87993SMichal Kubecek 	ETHTOOL_MSG_PAUSE_SET,
39b7eeefe7SMichal Kubecek 	ETHTOOL_MSG_EEE_GET,
40fd77be7bSMichal Kubecek 	ETHTOOL_MSG_EEE_SET,
415b071c59SMichal Kubecek 	ETHTOOL_MSG_TSINFO_GET,
4211ca3c42SAndrew Lunn 	ETHTOOL_MSG_CABLE_TEST_ACT,
43a331172bSAndrew Lunn 	ETHTOOL_MSG_CABLE_TEST_TDR_ACT,
44c7d759ebSJakub Kicinski 	ETHTOOL_MSG_TUNNEL_INFO_GET,
451e5d1f69SJakub Kicinski 	ETHTOOL_MSG_FEC_GET,
461e5d1f69SJakub Kicinski 	ETHTOOL_MSG_FEC_SET,
47c781ff12SVladyslav Tarasiuk 	ETHTOOL_MSG_MODULE_EEPROM_GET,
48f09ea6fbSJakub Kicinski 	ETHTOOL_MSG_STATS_GET,
49c156174aSYangbo Lu 	ETHTOOL_MSG_PHC_VCLOCKS_GET,
50353407d9SIdo Schimmel 	ETHTOOL_MSG_MODULE_GET,
51353407d9SIdo Schimmel 	ETHTOOL_MSG_MODULE_SET,
5218ff0bcdSOleksij Rempel 	ETHTOOL_MSG_PSE_GET,
5318ff0bcdSOleksij Rempel 	ETHTOOL_MSG_PSE_SET,
547112a046SSudheer Mogilappagari 	ETHTOOL_MSG_RSS_GET,
558580e16cSPiergiorgio Beruto 	ETHTOOL_MSG_PLCA_GET_CFG,
568580e16cSPiergiorgio Beruto 	ETHTOOL_MSG_PLCA_SET_CFG,
578580e16cSPiergiorgio Beruto 	ETHTOOL_MSG_PLCA_GET_STATUS,
582b30f829SVladimir Oltean 	ETHTOOL_MSG_MM_GET,
592b30f829SVladimir Oltean 	ETHTOOL_MSG_MM_SET,
602b4a8990SMichal Kubecek 
612b4a8990SMichal Kubecek 	/* add new constants above here */
622b4a8990SMichal Kubecek 	__ETHTOOL_MSG_USER_CNT,
632b4a8990SMichal Kubecek 	ETHTOOL_MSG_USER_MAX = __ETHTOOL_MSG_USER_CNT - 1
642b4a8990SMichal Kubecek };
652b4a8990SMichal Kubecek 
662b4a8990SMichal Kubecek /* message types - kernel to userspace */
672b4a8990SMichal Kubecek enum {
682b4a8990SMichal Kubecek 	ETHTOOL_MSG_KERNEL_NONE,
6971921690SMichal Kubecek 	ETHTOOL_MSG_STRSET_GET_REPLY,
70459e0b81SMichal Kubecek 	ETHTOOL_MSG_LINKINFO_GET_REPLY,
7173286734SMichal Kubecek 	ETHTOOL_MSG_LINKINFO_NTF,
72f625aa9bSMichal Kubecek 	ETHTOOL_MSG_LINKMODES_GET_REPLY,
731b1b1847SMichal Kubecek 	ETHTOOL_MSG_LINKMODES_NTF,
743d2b847fSMichal Kubecek 	ETHTOOL_MSG_LINKSTATE_GET_REPLY,
756a94b8ccSMichal Kubecek 	ETHTOOL_MSG_DEBUG_GET_REPLY,
760bda7af3SMichal Kubecek 	ETHTOOL_MSG_DEBUG_NTF,
7751ea22b0SMichal Kubecek 	ETHTOOL_MSG_WOL_GET_REPLY,
7867bffa79SMichal Kubecek 	ETHTOOL_MSG_WOL_NTF,
790524399dSMichal Kubecek 	ETHTOOL_MSG_FEATURES_GET_REPLY,
800980bfcdSMichal Kubecek 	ETHTOOL_MSG_FEATURES_SET_REPLY,
819c6451efSMichal Kubecek 	ETHTOOL_MSG_FEATURES_NTF,
82e16c3386SMichal Kubecek 	ETHTOOL_MSG_PRIVFLAGS_GET_REPLY,
83111dcba3SMichal Kubecek 	ETHTOOL_MSG_PRIVFLAGS_NTF,
84e4a1717bSMichal Kubecek 	ETHTOOL_MSG_RINGS_GET_REPLY,
85bc9d1c99SMichal Kubecek 	ETHTOOL_MSG_RINGS_NTF,
860c84979cSMichal Kubecek 	ETHTOOL_MSG_CHANNELS_GET_REPLY,
87546379b9SMichal Kubecek 	ETHTOOL_MSG_CHANNELS_NTF,
8821727545SMichal Kubecek 	ETHTOOL_MSG_COALESCE_GET_REPLY,
890cf3eac8SMichal Kubecek 	ETHTOOL_MSG_COALESCE_NTF,
907f59fb32SMichal Kubecek 	ETHTOOL_MSG_PAUSE_GET_REPLY,
91bf37faa3SMichal Kubecek 	ETHTOOL_MSG_PAUSE_NTF,
92b7eeefe7SMichal Kubecek 	ETHTOOL_MSG_EEE_GET_REPLY,
936c5bc8feSMichal Kubecek 	ETHTOOL_MSG_EEE_NTF,
945b071c59SMichal Kubecek 	ETHTOOL_MSG_TSINFO_GET_REPLY,
95b28efb93SAndrew Lunn 	ETHTOOL_MSG_CABLE_TEST_NTF,
96a331172bSAndrew Lunn 	ETHTOOL_MSG_CABLE_TEST_TDR_NTF,
9719a83d36SMichal Kubecek 	ETHTOOL_MSG_TUNNEL_INFO_GET_REPLY,
981e5d1f69SJakub Kicinski 	ETHTOOL_MSG_FEC_GET_REPLY,
991e5d1f69SJakub Kicinski 	ETHTOOL_MSG_FEC_NTF,
100c781ff12SVladyslav Tarasiuk 	ETHTOOL_MSG_MODULE_EEPROM_GET_REPLY,
101f09ea6fbSJakub Kicinski 	ETHTOOL_MSG_STATS_GET_REPLY,
102c156174aSYangbo Lu 	ETHTOOL_MSG_PHC_VCLOCKS_GET_REPLY,
103353407d9SIdo Schimmel 	ETHTOOL_MSG_MODULE_GET_REPLY,
104353407d9SIdo Schimmel 	ETHTOOL_MSG_MODULE_NTF,
10518ff0bcdSOleksij Rempel 	ETHTOOL_MSG_PSE_GET_REPLY,
1067112a046SSudheer Mogilappagari 	ETHTOOL_MSG_RSS_GET_REPLY,
1078580e16cSPiergiorgio Beruto 	ETHTOOL_MSG_PLCA_GET_CFG_REPLY,
1088580e16cSPiergiorgio Beruto 	ETHTOOL_MSG_PLCA_GET_STATUS_REPLY,
1098580e16cSPiergiorgio Beruto 	ETHTOOL_MSG_PLCA_NTF,
1102b30f829SVladimir Oltean 	ETHTOOL_MSG_MM_GET_REPLY,
1112b30f829SVladimir Oltean 	ETHTOOL_MSG_MM_NTF,
1122b4a8990SMichal Kubecek 
1132b4a8990SMichal Kubecek 	/* add new constants above here */
1142b4a8990SMichal Kubecek 	__ETHTOOL_MSG_KERNEL_CNT,
1152b4a8990SMichal Kubecek 	ETHTOOL_MSG_KERNEL_MAX = __ETHTOOL_MSG_KERNEL_CNT - 1
1162b4a8990SMichal Kubecek };
1172b4a8990SMichal Kubecek 
118041b1c5dSMichal Kubecek /* request header */
119041b1c5dSMichal Kubecek 
120041b1c5dSMichal Kubecek /* use compact bitsets in reply */
121041b1c5dSMichal Kubecek #define ETHTOOL_FLAG_COMPACT_BITSETS	(1 << 0)
122041b1c5dSMichal Kubecek /* provide optional reply for SET or ACT requests */
123041b1c5dSMichal Kubecek #define ETHTOOL_FLAG_OMIT_REPLY	(1 << 1)
1249a27a330SJakub Kicinski /* request statistics, if supported by the driver */
1259a27a330SJakub Kicinski #define ETHTOOL_FLAG_STATS		(1 << 2)
126041b1c5dSMichal Kubecek 
127041b1c5dSMichal Kubecek #define ETHTOOL_FLAG_ALL (ETHTOOL_FLAG_COMPACT_BITSETS | \
1289a27a330SJakub Kicinski 			  ETHTOOL_FLAG_OMIT_REPLY | \
1299a27a330SJakub Kicinski 			  ETHTOOL_FLAG_STATS)
130041b1c5dSMichal Kubecek 
131041b1c5dSMichal Kubecek enum {
132041b1c5dSMichal Kubecek 	ETHTOOL_A_HEADER_UNSPEC,
133041b1c5dSMichal Kubecek 	ETHTOOL_A_HEADER_DEV_INDEX,		/* u32 */
134041b1c5dSMichal Kubecek 	ETHTOOL_A_HEADER_DEV_NAME,		/* string */
135041b1c5dSMichal Kubecek 	ETHTOOL_A_HEADER_FLAGS,			/* u32 - ETHTOOL_FLAG_* */
136041b1c5dSMichal Kubecek 
137041b1c5dSMichal Kubecek 	/* add new constants above here */
138041b1c5dSMichal Kubecek 	__ETHTOOL_A_HEADER_CNT,
139041b1c5dSMichal Kubecek 	ETHTOOL_A_HEADER_MAX = __ETHTOOL_A_HEADER_CNT - 1
140041b1c5dSMichal Kubecek };
141041b1c5dSMichal Kubecek 
14210b518d4SMichal Kubecek /* bit sets */
14310b518d4SMichal Kubecek 
14410b518d4SMichal Kubecek enum {
14510b518d4SMichal Kubecek 	ETHTOOL_A_BITSET_BIT_UNSPEC,
14610b518d4SMichal Kubecek 	ETHTOOL_A_BITSET_BIT_INDEX,		/* u32 */
14710b518d4SMichal Kubecek 	ETHTOOL_A_BITSET_BIT_NAME,		/* string */
14810b518d4SMichal Kubecek 	ETHTOOL_A_BITSET_BIT_VALUE,		/* flag */
14910b518d4SMichal Kubecek 
15010b518d4SMichal Kubecek 	/* add new constants above here */
15110b518d4SMichal Kubecek 	__ETHTOOL_A_BITSET_BIT_CNT,
15210b518d4SMichal Kubecek 	ETHTOOL_A_BITSET_BIT_MAX = __ETHTOOL_A_BITSET_BIT_CNT - 1
15310b518d4SMichal Kubecek };
15410b518d4SMichal Kubecek 
15510b518d4SMichal Kubecek enum {
15610b518d4SMichal Kubecek 	ETHTOOL_A_BITSET_BITS_UNSPEC,
15710b518d4SMichal Kubecek 	ETHTOOL_A_BITSET_BITS_BIT,		/* nest - _A_BITSET_BIT_* */
15810b518d4SMichal Kubecek 
15910b518d4SMichal Kubecek 	/* add new constants above here */
16010b518d4SMichal Kubecek 	__ETHTOOL_A_BITSET_BITS_CNT,
16110b518d4SMichal Kubecek 	ETHTOOL_A_BITSET_BITS_MAX = __ETHTOOL_A_BITSET_BITS_CNT - 1
16210b518d4SMichal Kubecek };
16310b518d4SMichal Kubecek 
16410b518d4SMichal Kubecek enum {
16510b518d4SMichal Kubecek 	ETHTOOL_A_BITSET_UNSPEC,
16610b518d4SMichal Kubecek 	ETHTOOL_A_BITSET_NOMASK,		/* flag */
16710b518d4SMichal Kubecek 	ETHTOOL_A_BITSET_SIZE,			/* u32 */
16810b518d4SMichal Kubecek 	ETHTOOL_A_BITSET_BITS,			/* nest - _A_BITSET_BITS_* */
16910b518d4SMichal Kubecek 	ETHTOOL_A_BITSET_VALUE,			/* binary */
17010b518d4SMichal Kubecek 	ETHTOOL_A_BITSET_MASK,			/* binary */
17110b518d4SMichal Kubecek 
17210b518d4SMichal Kubecek 	/* add new constants above here */
17310b518d4SMichal Kubecek 	__ETHTOOL_A_BITSET_CNT,
17410b518d4SMichal Kubecek 	ETHTOOL_A_BITSET_MAX = __ETHTOOL_A_BITSET_CNT - 1
17510b518d4SMichal Kubecek };
17610b518d4SMichal Kubecek 
17771921690SMichal Kubecek /* string sets */
17871921690SMichal Kubecek 
17971921690SMichal Kubecek enum {
18071921690SMichal Kubecek 	ETHTOOL_A_STRING_UNSPEC,
18171921690SMichal Kubecek 	ETHTOOL_A_STRING_INDEX,			/* u32 */
18271921690SMichal Kubecek 	ETHTOOL_A_STRING_VALUE,			/* string */
18371921690SMichal Kubecek 
18471921690SMichal Kubecek 	/* add new constants above here */
18571921690SMichal Kubecek 	__ETHTOOL_A_STRING_CNT,
18671921690SMichal Kubecek 	ETHTOOL_A_STRING_MAX = __ETHTOOL_A_STRING_CNT - 1
18771921690SMichal Kubecek };
18871921690SMichal Kubecek 
18971921690SMichal Kubecek enum {
19071921690SMichal Kubecek 	ETHTOOL_A_STRINGS_UNSPEC,
19171921690SMichal Kubecek 	ETHTOOL_A_STRINGS_STRING,		/* nest - _A_STRINGS_* */
19271921690SMichal Kubecek 
19371921690SMichal Kubecek 	/* add new constants above here */
19471921690SMichal Kubecek 	__ETHTOOL_A_STRINGS_CNT,
19571921690SMichal Kubecek 	ETHTOOL_A_STRINGS_MAX = __ETHTOOL_A_STRINGS_CNT - 1
19671921690SMichal Kubecek };
19771921690SMichal Kubecek 
19871921690SMichal Kubecek enum {
19971921690SMichal Kubecek 	ETHTOOL_A_STRINGSET_UNSPEC,
20071921690SMichal Kubecek 	ETHTOOL_A_STRINGSET_ID,			/* u32 */
20171921690SMichal Kubecek 	ETHTOOL_A_STRINGSET_COUNT,		/* u32 */
20271921690SMichal Kubecek 	ETHTOOL_A_STRINGSET_STRINGS,		/* nest - _A_STRINGS_* */
20371921690SMichal Kubecek 
20471921690SMichal Kubecek 	/* add new constants above here */
20571921690SMichal Kubecek 	__ETHTOOL_A_STRINGSET_CNT,
20671921690SMichal Kubecek 	ETHTOOL_A_STRINGSET_MAX = __ETHTOOL_A_STRINGSET_CNT - 1
20771921690SMichal Kubecek };
20871921690SMichal Kubecek 
20971921690SMichal Kubecek enum {
21071921690SMichal Kubecek 	ETHTOOL_A_STRINGSETS_UNSPEC,
21171921690SMichal Kubecek 	ETHTOOL_A_STRINGSETS_STRINGSET,		/* nest - _A_STRINGSET_* */
21271921690SMichal Kubecek 
21371921690SMichal Kubecek 	/* add new constants above here */
21471921690SMichal Kubecek 	__ETHTOOL_A_STRINGSETS_CNT,
21571921690SMichal Kubecek 	ETHTOOL_A_STRINGSETS_MAX = __ETHTOOL_A_STRINGSETS_CNT - 1
21671921690SMichal Kubecek };
21771921690SMichal Kubecek 
21871921690SMichal Kubecek /* STRSET */
21971921690SMichal Kubecek 
22071921690SMichal Kubecek enum {
22171921690SMichal Kubecek 	ETHTOOL_A_STRSET_UNSPEC,
22271921690SMichal Kubecek 	ETHTOOL_A_STRSET_HEADER,		/* nest - _A_HEADER_* */
22371921690SMichal Kubecek 	ETHTOOL_A_STRSET_STRINGSETS,		/* nest - _A_STRINGSETS_* */
22471921690SMichal Kubecek 	ETHTOOL_A_STRSET_COUNTS_ONLY,		/* flag */
22571921690SMichal Kubecek 
22671921690SMichal Kubecek 	/* add new constants above here */
22771921690SMichal Kubecek 	__ETHTOOL_A_STRSET_CNT,
22871921690SMichal Kubecek 	ETHTOOL_A_STRSET_MAX = __ETHTOOL_A_STRSET_CNT - 1
22971921690SMichal Kubecek };
23071921690SMichal Kubecek 
231459e0b81SMichal Kubecek /* LINKINFO */
232459e0b81SMichal Kubecek 
233459e0b81SMichal Kubecek enum {
234459e0b81SMichal Kubecek 	ETHTOOL_A_LINKINFO_UNSPEC,
235459e0b81SMichal Kubecek 	ETHTOOL_A_LINKINFO_HEADER,		/* nest - _A_HEADER_* */
236459e0b81SMichal Kubecek 	ETHTOOL_A_LINKINFO_PORT,		/* u8 */
237459e0b81SMichal Kubecek 	ETHTOOL_A_LINKINFO_PHYADDR,		/* u8 */
238459e0b81SMichal Kubecek 	ETHTOOL_A_LINKINFO_TP_MDIX,		/* u8 */
239459e0b81SMichal Kubecek 	ETHTOOL_A_LINKINFO_TP_MDIX_CTRL,	/* u8 */
240459e0b81SMichal Kubecek 	ETHTOOL_A_LINKINFO_TRANSCEIVER,		/* u8 */
241459e0b81SMichal Kubecek 
242459e0b81SMichal Kubecek 	/* add new constants above here */
243459e0b81SMichal Kubecek 	__ETHTOOL_A_LINKINFO_CNT,
244459e0b81SMichal Kubecek 	ETHTOOL_A_LINKINFO_MAX = __ETHTOOL_A_LINKINFO_CNT - 1
245459e0b81SMichal Kubecek };
246459e0b81SMichal Kubecek 
247f625aa9bSMichal Kubecek /* LINKMODES */
248f625aa9bSMichal Kubecek 
249f625aa9bSMichal Kubecek enum {
250f625aa9bSMichal Kubecek 	ETHTOOL_A_LINKMODES_UNSPEC,
251f625aa9bSMichal Kubecek 	ETHTOOL_A_LINKMODES_HEADER,		/* nest - _A_HEADER_* */
252f625aa9bSMichal Kubecek 	ETHTOOL_A_LINKMODES_AUTONEG,		/* u8 */
253f625aa9bSMichal Kubecek 	ETHTOOL_A_LINKMODES_OURS,		/* bitset */
254f625aa9bSMichal Kubecek 	ETHTOOL_A_LINKMODES_PEER,		/* bitset */
255f625aa9bSMichal Kubecek 	ETHTOOL_A_LINKMODES_SPEED,		/* u32 */
256f625aa9bSMichal Kubecek 	ETHTOOL_A_LINKMODES_DUPLEX,		/* u8 */
257bdbdac76SOleksij Rempel 	ETHTOOL_A_LINKMODES_MASTER_SLAVE_CFG,	/* u8 */
258bdbdac76SOleksij Rempel 	ETHTOOL_A_LINKMODES_MASTER_SLAVE_STATE,	/* u8 */
259012ce4ddSDanielle Ratson 	ETHTOOL_A_LINKMODES_LANES,		/* u32 */
2600c3e10cbSSean Anderson 	ETHTOOL_A_LINKMODES_RATE_MATCHING,	/* u8 */
261f625aa9bSMichal Kubecek 
262f625aa9bSMichal Kubecek 	/* add new constants above here */
263f625aa9bSMichal Kubecek 	__ETHTOOL_A_LINKMODES_CNT,
264f625aa9bSMichal Kubecek 	ETHTOOL_A_LINKMODES_MAX = __ETHTOOL_A_LINKMODES_CNT - 1
265f625aa9bSMichal Kubecek };
266f625aa9bSMichal Kubecek 
2673d2b847fSMichal Kubecek /* LINKSTATE */
2683d2b847fSMichal Kubecek 
2693d2b847fSMichal Kubecek enum {
2703d2b847fSMichal Kubecek 	ETHTOOL_A_LINKSTATE_UNSPEC,
2713d2b847fSMichal Kubecek 	ETHTOOL_A_LINKSTATE_HEADER,		/* nest - _A_HEADER_* */
2723d2b847fSMichal Kubecek 	ETHTOOL_A_LINKSTATE_LINK,		/* u8 */
27380660219SOleksij Rempel 	ETHTOOL_A_LINKSTATE_SQI,		/* u32 */
27480660219SOleksij Rempel 	ETHTOOL_A_LINKSTATE_SQI_MAX,		/* u32 */
275ecc31c60SAmit Cohen 	ETHTOOL_A_LINKSTATE_EXT_STATE,		/* u8 */
276ecc31c60SAmit Cohen 	ETHTOOL_A_LINKSTATE_EXT_SUBSTATE,	/* u8 */
2779a0f830fSJakub Kicinski 	ETHTOOL_A_LINKSTATE_EXT_DOWN_CNT,	/* u32 */
2783d2b847fSMichal Kubecek 
2793d2b847fSMichal Kubecek 	/* add new constants above here */
2803d2b847fSMichal Kubecek 	__ETHTOOL_A_LINKSTATE_CNT,
2813d2b847fSMichal Kubecek 	ETHTOOL_A_LINKSTATE_MAX = __ETHTOOL_A_LINKSTATE_CNT - 1
2823d2b847fSMichal Kubecek };
2833d2b847fSMichal Kubecek 
2846a94b8ccSMichal Kubecek /* DEBUG */
2856a94b8ccSMichal Kubecek 
2866a94b8ccSMichal Kubecek enum {
2876a94b8ccSMichal Kubecek 	ETHTOOL_A_DEBUG_UNSPEC,
2886a94b8ccSMichal Kubecek 	ETHTOOL_A_DEBUG_HEADER,			/* nest - _A_HEADER_* */
2896a94b8ccSMichal Kubecek 	ETHTOOL_A_DEBUG_MSGMASK,		/* bitset */
2906a94b8ccSMichal Kubecek 
2916a94b8ccSMichal Kubecek 	/* add new constants above here */
2926a94b8ccSMichal Kubecek 	__ETHTOOL_A_DEBUG_CNT,
2936a94b8ccSMichal Kubecek 	ETHTOOL_A_DEBUG_MAX = __ETHTOOL_A_DEBUG_CNT - 1
2946a94b8ccSMichal Kubecek };
2956a94b8ccSMichal Kubecek 
29651ea22b0SMichal Kubecek /* WOL */
29751ea22b0SMichal Kubecek 
29851ea22b0SMichal Kubecek enum {
29951ea22b0SMichal Kubecek 	ETHTOOL_A_WOL_UNSPEC,
30051ea22b0SMichal Kubecek 	ETHTOOL_A_WOL_HEADER,			/* nest - _A_HEADER_* */
30151ea22b0SMichal Kubecek 	ETHTOOL_A_WOL_MODES,			/* bitset */
30251ea22b0SMichal Kubecek 	ETHTOOL_A_WOL_SOPASS,			/* binary */
30351ea22b0SMichal Kubecek 
30451ea22b0SMichal Kubecek 	/* add new constants above here */
30551ea22b0SMichal Kubecek 	__ETHTOOL_A_WOL_CNT,
30651ea22b0SMichal Kubecek 	ETHTOOL_A_WOL_MAX = __ETHTOOL_A_WOL_CNT - 1
30751ea22b0SMichal Kubecek };
30851ea22b0SMichal Kubecek 
3090524399dSMichal Kubecek /* FEATURES */
3100524399dSMichal Kubecek 
3110524399dSMichal Kubecek enum {
3120524399dSMichal Kubecek 	ETHTOOL_A_FEATURES_UNSPEC,
3130524399dSMichal Kubecek 	ETHTOOL_A_FEATURES_HEADER,			/* nest - _A_HEADER_* */
3140524399dSMichal Kubecek 	ETHTOOL_A_FEATURES_HW,				/* bitset */
3150524399dSMichal Kubecek 	ETHTOOL_A_FEATURES_WANTED,			/* bitset */
3160524399dSMichal Kubecek 	ETHTOOL_A_FEATURES_ACTIVE,			/* bitset */
3170524399dSMichal Kubecek 	ETHTOOL_A_FEATURES_NOCHANGE,			/* bitset */
3180524399dSMichal Kubecek 
3190524399dSMichal Kubecek 	/* add new constants above here */
3200524399dSMichal Kubecek 	__ETHTOOL_A_FEATURES_CNT,
3210524399dSMichal Kubecek 	ETHTOOL_A_FEATURES_MAX = __ETHTOOL_A_FEATURES_CNT - 1
3220524399dSMichal Kubecek };
3230524399dSMichal Kubecek 
324e16c3386SMichal Kubecek /* PRIVFLAGS */
325e16c3386SMichal Kubecek 
326e16c3386SMichal Kubecek enum {
327e16c3386SMichal Kubecek 	ETHTOOL_A_PRIVFLAGS_UNSPEC,
328e16c3386SMichal Kubecek 	ETHTOOL_A_PRIVFLAGS_HEADER,			/* nest - _A_HEADER_* */
329e16c3386SMichal Kubecek 	ETHTOOL_A_PRIVFLAGS_FLAGS,			/* bitset */
330e16c3386SMichal Kubecek 
331e16c3386SMichal Kubecek 	/* add new constants above here */
332e16c3386SMichal Kubecek 	__ETHTOOL_A_PRIVFLAGS_CNT,
333e16c3386SMichal Kubecek 	ETHTOOL_A_PRIVFLAGS_MAX = __ETHTOOL_A_PRIVFLAGS_CNT - 1
334e16c3386SMichal Kubecek };
335e16c3386SMichal Kubecek 
336e4a1717bSMichal Kubecek /* RINGS */
337e4a1717bSMichal Kubecek 
338e4a1717bSMichal Kubecek enum {
3399690ae60SJakub Kicinski 	ETHTOOL_TCP_DATA_SPLIT_UNKNOWN = 0,
3409690ae60SJakub Kicinski 	ETHTOOL_TCP_DATA_SPLIT_DISABLED,
3419690ae60SJakub Kicinski 	ETHTOOL_TCP_DATA_SPLIT_ENABLED,
3429690ae60SJakub Kicinski };
3439690ae60SJakub Kicinski 
3449690ae60SJakub Kicinski enum {
345e4a1717bSMichal Kubecek 	ETHTOOL_A_RINGS_UNSPEC,
346e4a1717bSMichal Kubecek 	ETHTOOL_A_RINGS_HEADER,				/* nest - _A_HEADER_* */
347e4a1717bSMichal Kubecek 	ETHTOOL_A_RINGS_RX_MAX,				/* u32 */
348e4a1717bSMichal Kubecek 	ETHTOOL_A_RINGS_RX_MINI_MAX,			/* u32 */
349e4a1717bSMichal Kubecek 	ETHTOOL_A_RINGS_RX_JUMBO_MAX,			/* u32 */
350e4a1717bSMichal Kubecek 	ETHTOOL_A_RINGS_TX_MAX,				/* u32 */
351e4a1717bSMichal Kubecek 	ETHTOOL_A_RINGS_RX,				/* u32 */
352e4a1717bSMichal Kubecek 	ETHTOOL_A_RINGS_RX_MINI,			/* u32 */
353e4a1717bSMichal Kubecek 	ETHTOOL_A_RINGS_RX_JUMBO,			/* u32 */
354e4a1717bSMichal Kubecek 	ETHTOOL_A_RINGS_TX,				/* u32 */
3550b70c256SHao Chen 	ETHTOOL_A_RINGS_RX_BUF_LEN,                     /* u32 */
3569690ae60SJakub Kicinski 	ETHTOOL_A_RINGS_TCP_DATA_SPLIT,			/* u8 */
3571241e329SSubbaraya Sundeep 	ETHTOOL_A_RINGS_CQE_SIZE,			/* u32 */
3584dc84c06SJie Wang 	ETHTOOL_A_RINGS_TX_PUSH,			/* u8 */
3595b4e9a7aSShannon Nelson 	ETHTOOL_A_RINGS_RX_PUSH,			/* u8 */
360233eb4e7SShay Agroskin 	ETHTOOL_A_RINGS_TX_PUSH_BUF_LEN,		/* u32 */
361233eb4e7SShay Agroskin 	ETHTOOL_A_RINGS_TX_PUSH_BUF_LEN_MAX,		/* u32 */
362e4a1717bSMichal Kubecek 
363e4a1717bSMichal Kubecek 	/* add new constants above here */
364e4a1717bSMichal Kubecek 	__ETHTOOL_A_RINGS_CNT,
365e4a1717bSMichal Kubecek 	ETHTOOL_A_RINGS_MAX = (__ETHTOOL_A_RINGS_CNT - 1)
366e4a1717bSMichal Kubecek };
367e4a1717bSMichal Kubecek 
3680c84979cSMichal Kubecek /* CHANNELS */
3690c84979cSMichal Kubecek 
3700c84979cSMichal Kubecek enum {
3710c84979cSMichal Kubecek 	ETHTOOL_A_CHANNELS_UNSPEC,
3720c84979cSMichal Kubecek 	ETHTOOL_A_CHANNELS_HEADER,			/* nest - _A_HEADER_* */
3730c84979cSMichal Kubecek 	ETHTOOL_A_CHANNELS_RX_MAX,			/* u32 */
3740c84979cSMichal Kubecek 	ETHTOOL_A_CHANNELS_TX_MAX,			/* u32 */
3750c84979cSMichal Kubecek 	ETHTOOL_A_CHANNELS_OTHER_MAX,			/* u32 */
3760c84979cSMichal Kubecek 	ETHTOOL_A_CHANNELS_COMBINED_MAX,		/* u32 */
3770c84979cSMichal Kubecek 	ETHTOOL_A_CHANNELS_RX_COUNT,			/* u32 */
3780c84979cSMichal Kubecek 	ETHTOOL_A_CHANNELS_TX_COUNT,			/* u32 */
3790c84979cSMichal Kubecek 	ETHTOOL_A_CHANNELS_OTHER_COUNT,			/* u32 */
3800c84979cSMichal Kubecek 	ETHTOOL_A_CHANNELS_COMBINED_COUNT,		/* u32 */
3810c84979cSMichal Kubecek 
3820c84979cSMichal Kubecek 	/* add new constants above here */
3830c84979cSMichal Kubecek 	__ETHTOOL_A_CHANNELS_CNT,
3840c84979cSMichal Kubecek 	ETHTOOL_A_CHANNELS_MAX = (__ETHTOOL_A_CHANNELS_CNT - 1)
3850c84979cSMichal Kubecek };
3860c84979cSMichal Kubecek 
38721727545SMichal Kubecek /* COALESCE */
38821727545SMichal Kubecek 
38921727545SMichal Kubecek enum {
39021727545SMichal Kubecek 	ETHTOOL_A_COALESCE_UNSPEC,
39121727545SMichal Kubecek 	ETHTOOL_A_COALESCE_HEADER,			/* nest - _A_HEADER_* */
39221727545SMichal Kubecek 	ETHTOOL_A_COALESCE_RX_USECS,			/* u32 */
39321727545SMichal Kubecek 	ETHTOOL_A_COALESCE_RX_MAX_FRAMES,		/* u32 */
39421727545SMichal Kubecek 	ETHTOOL_A_COALESCE_RX_USECS_IRQ,		/* u32 */
39521727545SMichal Kubecek 	ETHTOOL_A_COALESCE_RX_MAX_FRAMES_IRQ,		/* u32 */
39621727545SMichal Kubecek 	ETHTOOL_A_COALESCE_TX_USECS,			/* u32 */
39721727545SMichal Kubecek 	ETHTOOL_A_COALESCE_TX_MAX_FRAMES,		/* u32 */
39821727545SMichal Kubecek 	ETHTOOL_A_COALESCE_TX_USECS_IRQ,		/* u32 */
39921727545SMichal Kubecek 	ETHTOOL_A_COALESCE_TX_MAX_FRAMES_IRQ,		/* u32 */
40021727545SMichal Kubecek 	ETHTOOL_A_COALESCE_STATS_BLOCK_USECS,		/* u32 */
40121727545SMichal Kubecek 	ETHTOOL_A_COALESCE_USE_ADAPTIVE_RX,		/* u8 */
40221727545SMichal Kubecek 	ETHTOOL_A_COALESCE_USE_ADAPTIVE_TX,		/* u8 */
40321727545SMichal Kubecek 	ETHTOOL_A_COALESCE_PKT_RATE_LOW,		/* u32 */
40421727545SMichal Kubecek 	ETHTOOL_A_COALESCE_RX_USECS_LOW,		/* u32 */
40521727545SMichal Kubecek 	ETHTOOL_A_COALESCE_RX_MAX_FRAMES_LOW,		/* u32 */
40621727545SMichal Kubecek 	ETHTOOL_A_COALESCE_TX_USECS_LOW,		/* u32 */
40721727545SMichal Kubecek 	ETHTOOL_A_COALESCE_TX_MAX_FRAMES_LOW,		/* u32 */
40821727545SMichal Kubecek 	ETHTOOL_A_COALESCE_PKT_RATE_HIGH,		/* u32 */
40921727545SMichal Kubecek 	ETHTOOL_A_COALESCE_RX_USECS_HIGH,		/* u32 */
41021727545SMichal Kubecek 	ETHTOOL_A_COALESCE_RX_MAX_FRAMES_HIGH,		/* u32 */
41121727545SMichal Kubecek 	ETHTOOL_A_COALESCE_TX_USECS_HIGH,		/* u32 */
41221727545SMichal Kubecek 	ETHTOOL_A_COALESCE_TX_MAX_FRAMES_HIGH,		/* u32 */
41321727545SMichal Kubecek 	ETHTOOL_A_COALESCE_RATE_SAMPLE_INTERVAL,	/* u32 */
414029ee6b1SYufeng Mo 	ETHTOOL_A_COALESCE_USE_CQE_MODE_TX,		/* u8 */
415029ee6b1SYufeng Mo 	ETHTOOL_A_COALESCE_USE_CQE_MODE_RX,		/* u8 */
41631de2842SDaniele Palmas 	ETHTOOL_A_COALESCE_TX_AGGR_MAX_BYTES,		/* u32 */
41731de2842SDaniele Palmas 	ETHTOOL_A_COALESCE_TX_AGGR_MAX_FRAMES,		/* u32 */
41831de2842SDaniele Palmas 	ETHTOOL_A_COALESCE_TX_AGGR_TIME_USECS,		/* u32 */
41921727545SMichal Kubecek 
42021727545SMichal Kubecek 	/* add new constants above here */
42121727545SMichal Kubecek 	__ETHTOOL_A_COALESCE_CNT,
42221727545SMichal Kubecek 	ETHTOOL_A_COALESCE_MAX = (__ETHTOOL_A_COALESCE_CNT - 1)
42321727545SMichal Kubecek };
42421727545SMichal Kubecek 
4257f59fb32SMichal Kubecek /* PAUSE */
4267f59fb32SMichal Kubecek 
4277f59fb32SMichal Kubecek enum {
4287f59fb32SMichal Kubecek 	ETHTOOL_A_PAUSE_UNSPEC,
4297f59fb32SMichal Kubecek 	ETHTOOL_A_PAUSE_HEADER,				/* nest - _A_HEADER_* */
4307f59fb32SMichal Kubecek 	ETHTOOL_A_PAUSE_AUTONEG,			/* u8 */
4317f59fb32SMichal Kubecek 	ETHTOOL_A_PAUSE_RX,				/* u8 */
4327f59fb32SMichal Kubecek 	ETHTOOL_A_PAUSE_TX,				/* u8 */
4339a27a330SJakub Kicinski 	ETHTOOL_A_PAUSE_STATS,				/* nest - _PAUSE_STAT_* */
43404692c90SVladimir Oltean 	ETHTOOL_A_PAUSE_STATS_SRC,			/* u32 */
4357f59fb32SMichal Kubecek 
4367f59fb32SMichal Kubecek 	/* add new constants above here */
4377f59fb32SMichal Kubecek 	__ETHTOOL_A_PAUSE_CNT,
4387f59fb32SMichal Kubecek 	ETHTOOL_A_PAUSE_MAX = (__ETHTOOL_A_PAUSE_CNT - 1)
4397f59fb32SMichal Kubecek };
4407f59fb32SMichal Kubecek 
4419a27a330SJakub Kicinski enum {
4429a27a330SJakub Kicinski 	ETHTOOL_A_PAUSE_STAT_UNSPEC,
4439a27a330SJakub Kicinski 	ETHTOOL_A_PAUSE_STAT_PAD,
4449a27a330SJakub Kicinski 
4459a27a330SJakub Kicinski 	ETHTOOL_A_PAUSE_STAT_TX_FRAMES,
4469a27a330SJakub Kicinski 	ETHTOOL_A_PAUSE_STAT_RX_FRAMES,
4479a27a330SJakub Kicinski 
4481aabe578SJakub Kicinski 	/* add new constants above here
4491aabe578SJakub Kicinski 	 * adjust ETHTOOL_PAUSE_STAT_CNT if adding non-stats!
4501aabe578SJakub Kicinski 	 */
4519a27a330SJakub Kicinski 	__ETHTOOL_A_PAUSE_STAT_CNT,
4529a27a330SJakub Kicinski 	ETHTOOL_A_PAUSE_STAT_MAX = (__ETHTOOL_A_PAUSE_STAT_CNT - 1)
4539a27a330SJakub Kicinski };
4549a27a330SJakub Kicinski 
455b7eeefe7SMichal Kubecek /* EEE */
456b7eeefe7SMichal Kubecek 
457b7eeefe7SMichal Kubecek enum {
458b7eeefe7SMichal Kubecek 	ETHTOOL_A_EEE_UNSPEC,
459b7eeefe7SMichal Kubecek 	ETHTOOL_A_EEE_HEADER,				/* nest - _A_HEADER_* */
460b7eeefe7SMichal Kubecek 	ETHTOOL_A_EEE_MODES_OURS,			/* bitset */
461b7eeefe7SMichal Kubecek 	ETHTOOL_A_EEE_MODES_PEER,			/* bitset */
462b7eeefe7SMichal Kubecek 	ETHTOOL_A_EEE_ACTIVE,				/* u8 */
463b7eeefe7SMichal Kubecek 	ETHTOOL_A_EEE_ENABLED,				/* u8 */
464b7eeefe7SMichal Kubecek 	ETHTOOL_A_EEE_TX_LPI_ENABLED,			/* u8 */
465b7eeefe7SMichal Kubecek 	ETHTOOL_A_EEE_TX_LPI_TIMER,			/* u32 */
466b7eeefe7SMichal Kubecek 
467b7eeefe7SMichal Kubecek 	/* add new constants above here */
468b7eeefe7SMichal Kubecek 	__ETHTOOL_A_EEE_CNT,
469b7eeefe7SMichal Kubecek 	ETHTOOL_A_EEE_MAX = (__ETHTOOL_A_EEE_CNT - 1)
470b7eeefe7SMichal Kubecek };
471b7eeefe7SMichal Kubecek 
4725b071c59SMichal Kubecek /* TSINFO */
4735b071c59SMichal Kubecek 
4745b071c59SMichal Kubecek enum {
4755b071c59SMichal Kubecek 	ETHTOOL_A_TSINFO_UNSPEC,
4765b071c59SMichal Kubecek 	ETHTOOL_A_TSINFO_HEADER,			/* nest - _A_HEADER_* */
4775b071c59SMichal Kubecek 	ETHTOOL_A_TSINFO_TIMESTAMPING,			/* bitset */
4785b071c59SMichal Kubecek 	ETHTOOL_A_TSINFO_TX_TYPES,			/* bitset */
4795b071c59SMichal Kubecek 	ETHTOOL_A_TSINFO_RX_FILTERS,			/* bitset */
4805b071c59SMichal Kubecek 	ETHTOOL_A_TSINFO_PHC_INDEX,			/* u32 */
4815b071c59SMichal Kubecek 
4825b071c59SMichal Kubecek 	/* add new constants above here */
4835b071c59SMichal Kubecek 	__ETHTOOL_A_TSINFO_CNT,
4845b071c59SMichal Kubecek 	ETHTOOL_A_TSINFO_MAX = (__ETHTOOL_A_TSINFO_CNT - 1)
4855b071c59SMichal Kubecek };
4865b071c59SMichal Kubecek 
487c156174aSYangbo Lu /* PHC VCLOCKS */
488c156174aSYangbo Lu 
489c156174aSYangbo Lu enum {
490c156174aSYangbo Lu 	ETHTOOL_A_PHC_VCLOCKS_UNSPEC,
491c156174aSYangbo Lu 	ETHTOOL_A_PHC_VCLOCKS_HEADER,			/* nest - _A_HEADER_* */
492c156174aSYangbo Lu 	ETHTOOL_A_PHC_VCLOCKS_NUM,			/* u32 */
493c156174aSYangbo Lu 	ETHTOOL_A_PHC_VCLOCKS_INDEX,			/* array, s32 */
494c156174aSYangbo Lu 
495c156174aSYangbo Lu 	/* add new constants above here */
496c156174aSYangbo Lu 	__ETHTOOL_A_PHC_VCLOCKS_CNT,
497c156174aSYangbo Lu 	ETHTOOL_A_PHC_VCLOCKS_MAX = (__ETHTOOL_A_PHC_VCLOCKS_CNT - 1)
498c156174aSYangbo Lu };
499c156174aSYangbo Lu 
50011ca3c42SAndrew Lunn /* CABLE TEST */
50111ca3c42SAndrew Lunn 
50211ca3c42SAndrew Lunn enum {
50311ca3c42SAndrew Lunn 	ETHTOOL_A_CABLE_TEST_UNSPEC,
50411ca3c42SAndrew Lunn 	ETHTOOL_A_CABLE_TEST_HEADER,		/* nest - _A_HEADER_* */
50511ca3c42SAndrew Lunn 
50611ca3c42SAndrew Lunn 	/* add new constants above here */
50711ca3c42SAndrew Lunn 	__ETHTOOL_A_CABLE_TEST_CNT,
50811ca3c42SAndrew Lunn 	ETHTOOL_A_CABLE_TEST_MAX = __ETHTOOL_A_CABLE_TEST_CNT - 1
50911ca3c42SAndrew Lunn };
51011ca3c42SAndrew Lunn 
511b28efb93SAndrew Lunn /* CABLE TEST NOTIFY */
512b28efb93SAndrew Lunn enum {
513b28efb93SAndrew Lunn 	ETHTOOL_A_CABLE_RESULT_CODE_UNSPEC,
514b28efb93SAndrew Lunn 	ETHTOOL_A_CABLE_RESULT_CODE_OK,
515b28efb93SAndrew Lunn 	ETHTOOL_A_CABLE_RESULT_CODE_OPEN,
516b28efb93SAndrew Lunn 	ETHTOOL_A_CABLE_RESULT_CODE_SAME_SHORT,
517b28efb93SAndrew Lunn 	ETHTOOL_A_CABLE_RESULT_CODE_CROSS_SHORT,
518b28efb93SAndrew Lunn };
519b28efb93SAndrew Lunn 
520b28efb93SAndrew Lunn enum {
521b28efb93SAndrew Lunn 	ETHTOOL_A_CABLE_PAIR_A,
522b28efb93SAndrew Lunn 	ETHTOOL_A_CABLE_PAIR_B,
523b28efb93SAndrew Lunn 	ETHTOOL_A_CABLE_PAIR_C,
524b28efb93SAndrew Lunn 	ETHTOOL_A_CABLE_PAIR_D,
525b28efb93SAndrew Lunn };
526b28efb93SAndrew Lunn 
527b28efb93SAndrew Lunn enum {
528b28efb93SAndrew Lunn 	ETHTOOL_A_CABLE_RESULT_UNSPEC,
529b28efb93SAndrew Lunn 	ETHTOOL_A_CABLE_RESULT_PAIR,		/* u8 ETHTOOL_A_CABLE_PAIR_ */
530b28efb93SAndrew Lunn 	ETHTOOL_A_CABLE_RESULT_CODE,		/* u8 ETHTOOL_A_CABLE_RESULT_CODE_ */
531b28efb93SAndrew Lunn 
532b28efb93SAndrew Lunn 	__ETHTOOL_A_CABLE_RESULT_CNT,
533b28efb93SAndrew Lunn 	ETHTOOL_A_CABLE_RESULT_MAX = (__ETHTOOL_A_CABLE_RESULT_CNT - 1)
534b28efb93SAndrew Lunn };
535b28efb93SAndrew Lunn 
536b28efb93SAndrew Lunn enum {
537b28efb93SAndrew Lunn 	ETHTOOL_A_CABLE_FAULT_LENGTH_UNSPEC,
538b28efb93SAndrew Lunn 	ETHTOOL_A_CABLE_FAULT_LENGTH_PAIR,	/* u8 ETHTOOL_A_CABLE_PAIR_ */
539b28efb93SAndrew Lunn 	ETHTOOL_A_CABLE_FAULT_LENGTH_CM,	/* u32 */
540b28efb93SAndrew Lunn 
541b28efb93SAndrew Lunn 	__ETHTOOL_A_CABLE_FAULT_LENGTH_CNT,
542b28efb93SAndrew Lunn 	ETHTOOL_A_CABLE_FAULT_LENGTH_MAX = (__ETHTOOL_A_CABLE_FAULT_LENGTH_CNT - 1)
543b28efb93SAndrew Lunn };
544b28efb93SAndrew Lunn 
545b28efb93SAndrew Lunn enum {
546b28efb93SAndrew Lunn 	ETHTOOL_A_CABLE_TEST_NTF_STATUS_UNSPEC,
547b28efb93SAndrew Lunn 	ETHTOOL_A_CABLE_TEST_NTF_STATUS_STARTED,
548b28efb93SAndrew Lunn 	ETHTOOL_A_CABLE_TEST_NTF_STATUS_COMPLETED
549b28efb93SAndrew Lunn };
550b28efb93SAndrew Lunn 
551b28efb93SAndrew Lunn enum {
552b28efb93SAndrew Lunn 	ETHTOOL_A_CABLE_NEST_UNSPEC,
553b28efb93SAndrew Lunn 	ETHTOOL_A_CABLE_NEST_RESULT,		/* nest - ETHTOOL_A_CABLE_RESULT_ */
554b28efb93SAndrew Lunn 	ETHTOOL_A_CABLE_NEST_FAULT_LENGTH,	/* nest - ETHTOOL_A_CABLE_FAULT_LENGTH_ */
555b28efb93SAndrew Lunn 	__ETHTOOL_A_CABLE_NEST_CNT,
556b28efb93SAndrew Lunn 	ETHTOOL_A_CABLE_NEST_MAX = (__ETHTOOL_A_CABLE_NEST_CNT - 1)
557b28efb93SAndrew Lunn };
558b28efb93SAndrew Lunn 
559b28efb93SAndrew Lunn enum {
560b28efb93SAndrew Lunn 	ETHTOOL_A_CABLE_TEST_NTF_UNSPEC,
561b28efb93SAndrew Lunn 	ETHTOOL_A_CABLE_TEST_NTF_HEADER,	/* nest - ETHTOOL_A_HEADER_* */
562b28efb93SAndrew Lunn 	ETHTOOL_A_CABLE_TEST_NTF_STATUS,	/* u8 - _STARTED/_COMPLETE */
563b28efb93SAndrew Lunn 	ETHTOOL_A_CABLE_TEST_NTF_NEST,		/* nest - of results: */
564b28efb93SAndrew Lunn 
565b28efb93SAndrew Lunn 	__ETHTOOL_A_CABLE_TEST_NTF_CNT,
566b28efb93SAndrew Lunn 	ETHTOOL_A_CABLE_TEST_NTF_MAX = (__ETHTOOL_A_CABLE_TEST_NTF_CNT - 1)
567b28efb93SAndrew Lunn };
568b28efb93SAndrew Lunn 
569a331172bSAndrew Lunn /* CABLE TEST TDR */
570a331172bSAndrew Lunn 
571a331172bSAndrew Lunn enum {
572f2bc8ad3SAndrew Lunn 	ETHTOOL_A_CABLE_TEST_TDR_CFG_UNSPEC,
573f2bc8ad3SAndrew Lunn 	ETHTOOL_A_CABLE_TEST_TDR_CFG_FIRST,		/* u32 */
574f2bc8ad3SAndrew Lunn 	ETHTOOL_A_CABLE_TEST_TDR_CFG_LAST,		/* u32 */
575f2bc8ad3SAndrew Lunn 	ETHTOOL_A_CABLE_TEST_TDR_CFG_STEP,		/* u32 */
576f2bc8ad3SAndrew Lunn 	ETHTOOL_A_CABLE_TEST_TDR_CFG_PAIR,		/* u8 */
577f2bc8ad3SAndrew Lunn 
578f2bc8ad3SAndrew Lunn 	/* add new constants above here */
579f2bc8ad3SAndrew Lunn 	__ETHTOOL_A_CABLE_TEST_TDR_CFG_CNT,
580f2bc8ad3SAndrew Lunn 	ETHTOOL_A_CABLE_TEST_TDR_CFG_MAX = __ETHTOOL_A_CABLE_TEST_TDR_CFG_CNT - 1
581f2bc8ad3SAndrew Lunn };
582f2bc8ad3SAndrew Lunn 
583f2bc8ad3SAndrew Lunn enum {
584a331172bSAndrew Lunn 	ETHTOOL_A_CABLE_TEST_TDR_UNSPEC,
585a331172bSAndrew Lunn 	ETHTOOL_A_CABLE_TEST_TDR_HEADER,	/* nest - _A_HEADER_* */
586f2bc8ad3SAndrew Lunn 	ETHTOOL_A_CABLE_TEST_TDR_CFG,		/* nest - *_TDR_CFG_* */
587a331172bSAndrew Lunn 
588a331172bSAndrew Lunn 	/* add new constants above here */
589a331172bSAndrew Lunn 	__ETHTOOL_A_CABLE_TEST_TDR_CNT,
590a331172bSAndrew Lunn 	ETHTOOL_A_CABLE_TEST_TDR_MAX = __ETHTOOL_A_CABLE_TEST_TDR_CNT - 1
591a331172bSAndrew Lunn };
592a331172bSAndrew Lunn 
593a331172bSAndrew Lunn /* CABLE TEST TDR NOTIFY */
594a331172bSAndrew Lunn 
595a331172bSAndrew Lunn enum {
596a331172bSAndrew Lunn 	ETHTOOL_A_CABLE_AMPLITUDE_UNSPEC,
597a331172bSAndrew Lunn 	ETHTOOL_A_CABLE_AMPLITUDE_PAIR,         /* u8 */
598a331172bSAndrew Lunn 	ETHTOOL_A_CABLE_AMPLITUDE_mV,           /* s16 */
599a331172bSAndrew Lunn 
600a331172bSAndrew Lunn 	__ETHTOOL_A_CABLE_AMPLITUDE_CNT,
601a331172bSAndrew Lunn 	ETHTOOL_A_CABLE_AMPLITUDE_MAX = (__ETHTOOL_A_CABLE_AMPLITUDE_CNT - 1)
602a331172bSAndrew Lunn };
603a331172bSAndrew Lunn 
604a331172bSAndrew Lunn enum {
605a331172bSAndrew Lunn 	ETHTOOL_A_CABLE_PULSE_UNSPEC,
606a331172bSAndrew Lunn 	ETHTOOL_A_CABLE_PULSE_mV,		/* s16 */
607a331172bSAndrew Lunn 
608a331172bSAndrew Lunn 	__ETHTOOL_A_CABLE_PULSE_CNT,
609a331172bSAndrew Lunn 	ETHTOOL_A_CABLE_PULSE_MAX = (__ETHTOOL_A_CABLE_PULSE_CNT - 1)
610a331172bSAndrew Lunn };
611a331172bSAndrew Lunn 
612a331172bSAndrew Lunn enum {
613a331172bSAndrew Lunn 	ETHTOOL_A_CABLE_STEP_UNSPEC,
614a331172bSAndrew Lunn 	ETHTOOL_A_CABLE_STEP_FIRST_DISTANCE,	/* u32 */
615a331172bSAndrew Lunn 	ETHTOOL_A_CABLE_STEP_LAST_DISTANCE,	/* u32 */
616a331172bSAndrew Lunn 	ETHTOOL_A_CABLE_STEP_STEP_DISTANCE,	/* u32 */
617a331172bSAndrew Lunn 
618a331172bSAndrew Lunn 	__ETHTOOL_A_CABLE_STEP_CNT,
619a331172bSAndrew Lunn 	ETHTOOL_A_CABLE_STEP_MAX = (__ETHTOOL_A_CABLE_STEP_CNT - 1)
620a331172bSAndrew Lunn };
621a331172bSAndrew Lunn 
622a331172bSAndrew Lunn enum {
623a331172bSAndrew Lunn 	ETHTOOL_A_CABLE_TDR_NEST_UNSPEC,
624a331172bSAndrew Lunn 	ETHTOOL_A_CABLE_TDR_NEST_STEP,		/* nest - ETHTTOOL_A_CABLE_STEP */
625a331172bSAndrew Lunn 	ETHTOOL_A_CABLE_TDR_NEST_AMPLITUDE,	/* nest - ETHTOOL_A_CABLE_AMPLITUDE */
626a331172bSAndrew Lunn 	ETHTOOL_A_CABLE_TDR_NEST_PULSE,		/* nest - ETHTOOL_A_CABLE_PULSE */
627a331172bSAndrew Lunn 
628a331172bSAndrew Lunn 	__ETHTOOL_A_CABLE_TDR_NEST_CNT,
629a331172bSAndrew Lunn 	ETHTOOL_A_CABLE_TDR_NEST_MAX = (__ETHTOOL_A_CABLE_TDR_NEST_CNT - 1)
630a331172bSAndrew Lunn };
631a331172bSAndrew Lunn 
632a331172bSAndrew Lunn enum {
633a331172bSAndrew Lunn 	ETHTOOL_A_CABLE_TEST_TDR_NTF_UNSPEC,
634a331172bSAndrew Lunn 	ETHTOOL_A_CABLE_TEST_TDR_NTF_HEADER,	/* nest - ETHTOOL_A_HEADER_* */
635a331172bSAndrew Lunn 	ETHTOOL_A_CABLE_TEST_TDR_NTF_STATUS,	/* u8 - _STARTED/_COMPLETE */
636a331172bSAndrew Lunn 	ETHTOOL_A_CABLE_TEST_TDR_NTF_NEST,	/* nest - of results: */
637a331172bSAndrew Lunn 
638a331172bSAndrew Lunn 	/* add new constants above here */
639a331172bSAndrew Lunn 	__ETHTOOL_A_CABLE_TEST_TDR_NTF_CNT,
640a331172bSAndrew Lunn 	ETHTOOL_A_CABLE_TEST_TDR_NTF_MAX = __ETHTOOL_A_CABLE_TEST_TDR_NTF_CNT - 1
641a331172bSAndrew Lunn };
642a331172bSAndrew Lunn 
643c7d759ebSJakub Kicinski /* TUNNEL INFO */
644c7d759ebSJakub Kicinski 
645c7d759ebSJakub Kicinski enum {
646c7d759ebSJakub Kicinski 	ETHTOOL_UDP_TUNNEL_TYPE_VXLAN,
647c7d759ebSJakub Kicinski 	ETHTOOL_UDP_TUNNEL_TYPE_GENEVE,
648c7d759ebSJakub Kicinski 	ETHTOOL_UDP_TUNNEL_TYPE_VXLAN_GPE,
649c7d759ebSJakub Kicinski 
650c7d759ebSJakub Kicinski 	__ETHTOOL_UDP_TUNNEL_TYPE_CNT
651c7d759ebSJakub Kicinski };
652c7d759ebSJakub Kicinski 
653c7d759ebSJakub Kicinski enum {
654c7d759ebSJakub Kicinski 	ETHTOOL_A_TUNNEL_UDP_ENTRY_UNSPEC,
655c7d759ebSJakub Kicinski 
656c7d759ebSJakub Kicinski 	ETHTOOL_A_TUNNEL_UDP_ENTRY_PORT,		/* be16 */
657c7d759ebSJakub Kicinski 	ETHTOOL_A_TUNNEL_UDP_ENTRY_TYPE,		/* u32 */
658c7d759ebSJakub Kicinski 
659c7d759ebSJakub Kicinski 	/* add new constants above here */
660c7d759ebSJakub Kicinski 	__ETHTOOL_A_TUNNEL_UDP_ENTRY_CNT,
661c7d759ebSJakub Kicinski 	ETHTOOL_A_TUNNEL_UDP_ENTRY_MAX = (__ETHTOOL_A_TUNNEL_UDP_ENTRY_CNT - 1)
662c7d759ebSJakub Kicinski };
663c7d759ebSJakub Kicinski 
664c7d759ebSJakub Kicinski enum {
665c7d759ebSJakub Kicinski 	ETHTOOL_A_TUNNEL_UDP_TABLE_UNSPEC,
666c7d759ebSJakub Kicinski 
667c7d759ebSJakub Kicinski 	ETHTOOL_A_TUNNEL_UDP_TABLE_SIZE,		/* u32 */
668c7d759ebSJakub Kicinski 	ETHTOOL_A_TUNNEL_UDP_TABLE_TYPES,		/* bitset */
669c7d759ebSJakub Kicinski 	ETHTOOL_A_TUNNEL_UDP_TABLE_ENTRY,		/* nest - _UDP_ENTRY_* */
670c7d759ebSJakub Kicinski 
671c7d759ebSJakub Kicinski 	/* add new constants above here */
672c7d759ebSJakub Kicinski 	__ETHTOOL_A_TUNNEL_UDP_TABLE_CNT,
673c7d759ebSJakub Kicinski 	ETHTOOL_A_TUNNEL_UDP_TABLE_MAX = (__ETHTOOL_A_TUNNEL_UDP_TABLE_CNT - 1)
674c7d759ebSJakub Kicinski };
675c7d759ebSJakub Kicinski 
676c7d759ebSJakub Kicinski enum {
677c7d759ebSJakub Kicinski 	ETHTOOL_A_TUNNEL_UDP_UNSPEC,
678c7d759ebSJakub Kicinski 
679c7d759ebSJakub Kicinski 	ETHTOOL_A_TUNNEL_UDP_TABLE,			/* nest - _UDP_TABLE_* */
680c7d759ebSJakub Kicinski 
681c7d759ebSJakub Kicinski 	/* add new constants above here */
682c7d759ebSJakub Kicinski 	__ETHTOOL_A_TUNNEL_UDP_CNT,
683c7d759ebSJakub Kicinski 	ETHTOOL_A_TUNNEL_UDP_MAX = (__ETHTOOL_A_TUNNEL_UDP_CNT - 1)
684c7d759ebSJakub Kicinski };
685c7d759ebSJakub Kicinski 
686c7d759ebSJakub Kicinski enum {
687c7d759ebSJakub Kicinski 	ETHTOOL_A_TUNNEL_INFO_UNSPEC,
688c7d759ebSJakub Kicinski 	ETHTOOL_A_TUNNEL_INFO_HEADER,			/* nest - _A_HEADER_* */
689c7d759ebSJakub Kicinski 
690c7d759ebSJakub Kicinski 	ETHTOOL_A_TUNNEL_INFO_UDP_PORTS,		/* nest - _UDP_TABLE */
691c7d759ebSJakub Kicinski 
692c7d759ebSJakub Kicinski 	/* add new constants above here */
693c7d759ebSJakub Kicinski 	__ETHTOOL_A_TUNNEL_INFO_CNT,
694c7d759ebSJakub Kicinski 	ETHTOOL_A_TUNNEL_INFO_MAX = (__ETHTOOL_A_TUNNEL_INFO_CNT - 1)
695c7d759ebSJakub Kicinski };
696c7d759ebSJakub Kicinski 
6971e5d1f69SJakub Kicinski /* FEC */
6981e5d1f69SJakub Kicinski 
6991e5d1f69SJakub Kicinski enum {
7001e5d1f69SJakub Kicinski 	ETHTOOL_A_FEC_UNSPEC,
7011e5d1f69SJakub Kicinski 	ETHTOOL_A_FEC_HEADER,				/* nest - _A_HEADER_* */
7021e5d1f69SJakub Kicinski 	ETHTOOL_A_FEC_MODES,				/* bitset */
7031e5d1f69SJakub Kicinski 	ETHTOOL_A_FEC_AUTO,				/* u8 */
7041e5d1f69SJakub Kicinski 	ETHTOOL_A_FEC_ACTIVE,				/* u32 */
705be85dbfeSJakub Kicinski 	ETHTOOL_A_FEC_STATS,				/* nest - _A_FEC_STAT */
7061e5d1f69SJakub Kicinski 
7071e5d1f69SJakub Kicinski 	__ETHTOOL_A_FEC_CNT,
7081e5d1f69SJakub Kicinski 	ETHTOOL_A_FEC_MAX = (__ETHTOOL_A_FEC_CNT - 1)
7091e5d1f69SJakub Kicinski };
7101e5d1f69SJakub Kicinski 
711be85dbfeSJakub Kicinski enum {
712be85dbfeSJakub Kicinski 	ETHTOOL_A_FEC_STAT_UNSPEC,
713be85dbfeSJakub Kicinski 	ETHTOOL_A_FEC_STAT_PAD,
714be85dbfeSJakub Kicinski 
715be85dbfeSJakub Kicinski 	ETHTOOL_A_FEC_STAT_CORRECTED,			/* array, u64 */
716be85dbfeSJakub Kicinski 	ETHTOOL_A_FEC_STAT_UNCORR,			/* array, u64 */
717be85dbfeSJakub Kicinski 	ETHTOOL_A_FEC_STAT_CORR_BITS,			/* array, u64 */
718be85dbfeSJakub Kicinski 
719be85dbfeSJakub Kicinski 	/* add new constants above here */
720be85dbfeSJakub Kicinski 	__ETHTOOL_A_FEC_STAT_CNT,
721be85dbfeSJakub Kicinski 	ETHTOOL_A_FEC_STAT_MAX = (__ETHTOOL_A_FEC_STAT_CNT - 1)
722be85dbfeSJakub Kicinski };
723be85dbfeSJakub Kicinski 
724c781ff12SVladyslav Tarasiuk /* MODULE EEPROM */
725c781ff12SVladyslav Tarasiuk 
726c781ff12SVladyslav Tarasiuk enum {
727c781ff12SVladyslav Tarasiuk 	ETHTOOL_A_MODULE_EEPROM_UNSPEC,
728c781ff12SVladyslav Tarasiuk 	ETHTOOL_A_MODULE_EEPROM_HEADER,			/* nest - _A_HEADER_* */
729c781ff12SVladyslav Tarasiuk 
730c781ff12SVladyslav Tarasiuk 	ETHTOOL_A_MODULE_EEPROM_OFFSET,			/* u32 */
731c781ff12SVladyslav Tarasiuk 	ETHTOOL_A_MODULE_EEPROM_LENGTH,			/* u32 */
732c781ff12SVladyslav Tarasiuk 	ETHTOOL_A_MODULE_EEPROM_PAGE,			/* u8 */
733c781ff12SVladyslav Tarasiuk 	ETHTOOL_A_MODULE_EEPROM_BANK,			/* u8 */
734c781ff12SVladyslav Tarasiuk 	ETHTOOL_A_MODULE_EEPROM_I2C_ADDRESS,		/* u8 */
735913d026fSIdo Schimmel 	ETHTOOL_A_MODULE_EEPROM_DATA,			/* binary */
736c781ff12SVladyslav Tarasiuk 
737c781ff12SVladyslav Tarasiuk 	__ETHTOOL_A_MODULE_EEPROM_CNT,
738c781ff12SVladyslav Tarasiuk 	ETHTOOL_A_MODULE_EEPROM_MAX = (__ETHTOOL_A_MODULE_EEPROM_CNT - 1)
739c781ff12SVladyslav Tarasiuk };
740c781ff12SVladyslav Tarasiuk 
741f09ea6fbSJakub Kicinski /* STATS */
742f09ea6fbSJakub Kicinski 
743f09ea6fbSJakub Kicinski enum {
744f09ea6fbSJakub Kicinski 	ETHTOOL_A_STATS_UNSPEC,
745f09ea6fbSJakub Kicinski 	ETHTOOL_A_STATS_PAD,
746f09ea6fbSJakub Kicinski 	ETHTOOL_A_STATS_HEADER,			/* nest - _A_HEADER_* */
747f09ea6fbSJakub Kicinski 	ETHTOOL_A_STATS_GROUPS,			/* bitset */
748f09ea6fbSJakub Kicinski 
749f09ea6fbSJakub Kicinski 	ETHTOOL_A_STATS_GRP,			/* nest - _A_STATS_GRP_* */
750f09ea6fbSJakub Kicinski 
75104692c90SVladimir Oltean 	ETHTOOL_A_STATS_SRC,			/* u32 */
75204692c90SVladimir Oltean 
753f09ea6fbSJakub Kicinski 	/* add new constants above here */
754f09ea6fbSJakub Kicinski 	__ETHTOOL_A_STATS_CNT,
755f09ea6fbSJakub Kicinski 	ETHTOOL_A_STATS_MAX = (__ETHTOOL_A_STATS_CNT - 1)
756f09ea6fbSJakub Kicinski };
757f09ea6fbSJakub Kicinski 
758f09ea6fbSJakub Kicinski enum {
759f09ea6fbSJakub Kicinski 	ETHTOOL_STATS_ETH_PHY,
760ca224454SJakub Kicinski 	ETHTOOL_STATS_ETH_MAC,
761bfad2b97SJakub Kicinski 	ETHTOOL_STATS_ETH_CTRL,
762a8b06e9dSJakub Kicinski 	ETHTOOL_STATS_RMON,
763f09ea6fbSJakub Kicinski 
764f09ea6fbSJakub Kicinski 	/* add new constants above here */
765f09ea6fbSJakub Kicinski 	__ETHTOOL_STATS_CNT
766f09ea6fbSJakub Kicinski };
767f09ea6fbSJakub Kicinski 
768f09ea6fbSJakub Kicinski enum {
769f09ea6fbSJakub Kicinski 	ETHTOOL_A_STATS_GRP_UNSPEC,
770f09ea6fbSJakub Kicinski 	ETHTOOL_A_STATS_GRP_PAD,
771f09ea6fbSJakub Kicinski 
772f09ea6fbSJakub Kicinski 	ETHTOOL_A_STATS_GRP_ID,			/* u32 */
773f09ea6fbSJakub Kicinski 	ETHTOOL_A_STATS_GRP_SS_ID,		/* u32 */
774f09ea6fbSJakub Kicinski 
775f09ea6fbSJakub Kicinski 	ETHTOOL_A_STATS_GRP_STAT,		/* nest */
776f09ea6fbSJakub Kicinski 
777a8b06e9dSJakub Kicinski 	ETHTOOL_A_STATS_GRP_HIST_RX,		/* nest */
778a8b06e9dSJakub Kicinski 	ETHTOOL_A_STATS_GRP_HIST_TX,		/* nest */
779a8b06e9dSJakub Kicinski 
780a8b06e9dSJakub Kicinski 	ETHTOOL_A_STATS_GRP_HIST_BKT_LOW,	/* u32 */
781a8b06e9dSJakub Kicinski 	ETHTOOL_A_STATS_GRP_HIST_BKT_HI,	/* u32 */
782a8b06e9dSJakub Kicinski 	ETHTOOL_A_STATS_GRP_HIST_VAL,		/* u64 */
783a8b06e9dSJakub Kicinski 
784f09ea6fbSJakub Kicinski 	/* add new constants above here */
785f09ea6fbSJakub Kicinski 	__ETHTOOL_A_STATS_GRP_CNT,
78652f79609SJakub Kicinski 	ETHTOOL_A_STATS_GRP_MAX = (__ETHTOOL_A_STATS_GRP_CNT - 1)
787f09ea6fbSJakub Kicinski };
788f09ea6fbSJakub Kicinski 
789f09ea6fbSJakub Kicinski enum {
790f09ea6fbSJakub Kicinski 	/* 30.3.2.1.5 aSymbolErrorDuringCarrier */
791f09ea6fbSJakub Kicinski 	ETHTOOL_A_STATS_ETH_PHY_5_SYM_ERR,
792f09ea6fbSJakub Kicinski 
793f09ea6fbSJakub Kicinski 	/* add new constants above here */
794f09ea6fbSJakub Kicinski 	__ETHTOOL_A_STATS_ETH_PHY_CNT,
795f09ea6fbSJakub Kicinski 	ETHTOOL_A_STATS_ETH_PHY_MAX = (__ETHTOOL_A_STATS_ETH_PHY_CNT - 1)
796f09ea6fbSJakub Kicinski };
797f09ea6fbSJakub Kicinski 
798ca224454SJakub Kicinski enum {
799ca224454SJakub Kicinski 	/* 30.3.1.1.2 aFramesTransmittedOK */
800ca224454SJakub Kicinski 	ETHTOOL_A_STATS_ETH_MAC_2_TX_PKT,
801ca224454SJakub Kicinski 	/* 30.3.1.1.3 aSingleCollisionFrames */
802ca224454SJakub Kicinski 	ETHTOOL_A_STATS_ETH_MAC_3_SINGLE_COL,
803ca224454SJakub Kicinski 	/* 30.3.1.1.4 aMultipleCollisionFrames */
804ca224454SJakub Kicinski 	ETHTOOL_A_STATS_ETH_MAC_4_MULTI_COL,
805ca224454SJakub Kicinski 	/* 30.3.1.1.5 aFramesReceivedOK */
806ca224454SJakub Kicinski 	ETHTOOL_A_STATS_ETH_MAC_5_RX_PKT,
807ca224454SJakub Kicinski 	/* 30.3.1.1.6 aFrameCheckSequenceErrors */
808ca224454SJakub Kicinski 	ETHTOOL_A_STATS_ETH_MAC_6_FCS_ERR,
809ca224454SJakub Kicinski 	/* 30.3.1.1.7 aAlignmentErrors */
810ca224454SJakub Kicinski 	ETHTOOL_A_STATS_ETH_MAC_7_ALIGN_ERR,
811ca224454SJakub Kicinski 	/* 30.3.1.1.8 aOctetsTransmittedOK */
812ca224454SJakub Kicinski 	ETHTOOL_A_STATS_ETH_MAC_8_TX_BYTES,
813ca224454SJakub Kicinski 	/* 30.3.1.1.9 aFramesWithDeferredXmissions */
814ca224454SJakub Kicinski 	ETHTOOL_A_STATS_ETH_MAC_9_TX_DEFER,
815ca224454SJakub Kicinski 	/* 30.3.1.1.10 aLateCollisions */
816ca224454SJakub Kicinski 	ETHTOOL_A_STATS_ETH_MAC_10_LATE_COL,
817ca224454SJakub Kicinski 	/* 30.3.1.1.11 aFramesAbortedDueToXSColls */
818ca224454SJakub Kicinski 	ETHTOOL_A_STATS_ETH_MAC_11_XS_COL,
819ca224454SJakub Kicinski 	/* 30.3.1.1.12 aFramesLostDueToIntMACXmitError */
820ca224454SJakub Kicinski 	ETHTOOL_A_STATS_ETH_MAC_12_TX_INT_ERR,
821ca224454SJakub Kicinski 	/* 30.3.1.1.13 aCarrierSenseErrors */
822ca224454SJakub Kicinski 	ETHTOOL_A_STATS_ETH_MAC_13_CS_ERR,
823ca224454SJakub Kicinski 	/* 30.3.1.1.14 aOctetsReceivedOK */
824ca224454SJakub Kicinski 	ETHTOOL_A_STATS_ETH_MAC_14_RX_BYTES,
825ca224454SJakub Kicinski 	/* 30.3.1.1.15 aFramesLostDueToIntMACRcvError */
826ca224454SJakub Kicinski 	ETHTOOL_A_STATS_ETH_MAC_15_RX_INT_ERR,
827ca224454SJakub Kicinski 
828ca224454SJakub Kicinski 	/* 30.3.1.1.18 aMulticastFramesXmittedOK */
829ca224454SJakub Kicinski 	ETHTOOL_A_STATS_ETH_MAC_18_TX_MCAST,
830ca224454SJakub Kicinski 	/* 30.3.1.1.19 aBroadcastFramesXmittedOK */
831ca224454SJakub Kicinski 	ETHTOOL_A_STATS_ETH_MAC_19_TX_BCAST,
832ca224454SJakub Kicinski 	/* 30.3.1.1.20 aFramesWithExcessiveDeferral */
833ca224454SJakub Kicinski 	ETHTOOL_A_STATS_ETH_MAC_20_XS_DEFER,
834ca224454SJakub Kicinski 	/* 30.3.1.1.21 aMulticastFramesReceivedOK */
835ca224454SJakub Kicinski 	ETHTOOL_A_STATS_ETH_MAC_21_RX_MCAST,
836ca224454SJakub Kicinski 	/* 30.3.1.1.22 aBroadcastFramesReceivedOK */
837ca224454SJakub Kicinski 	ETHTOOL_A_STATS_ETH_MAC_22_RX_BCAST,
838ca224454SJakub Kicinski 	/* 30.3.1.1.23 aInRangeLengthErrors */
839ca224454SJakub Kicinski 	ETHTOOL_A_STATS_ETH_MAC_23_IR_LEN_ERR,
840ca224454SJakub Kicinski 	/* 30.3.1.1.24 aOutOfRangeLengthField */
841ca224454SJakub Kicinski 	ETHTOOL_A_STATS_ETH_MAC_24_OOR_LEN,
842ca224454SJakub Kicinski 	/* 30.3.1.1.25 aFrameTooLongErrors */
843ca224454SJakub Kicinski 	ETHTOOL_A_STATS_ETH_MAC_25_TOO_LONG_ERR,
844ca224454SJakub Kicinski 
845ca224454SJakub Kicinski 	/* add new constants above here */
846ca224454SJakub Kicinski 	__ETHTOOL_A_STATS_ETH_MAC_CNT,
847ca224454SJakub Kicinski 	ETHTOOL_A_STATS_ETH_MAC_MAX = (__ETHTOOL_A_STATS_ETH_MAC_CNT - 1)
848ca224454SJakub Kicinski };
849ca224454SJakub Kicinski 
850bfad2b97SJakub Kicinski enum {
851bfad2b97SJakub Kicinski 	/* 30.3.3.3 aMACControlFramesTransmitted */
852bfad2b97SJakub Kicinski 	ETHTOOL_A_STATS_ETH_CTRL_3_TX,
853bfad2b97SJakub Kicinski 	/* 30.3.3.4 aMACControlFramesReceived */
854bfad2b97SJakub Kicinski 	ETHTOOL_A_STATS_ETH_CTRL_4_RX,
855bfad2b97SJakub Kicinski 	/* 30.3.3.5 aUnsupportedOpcodesReceived */
856bfad2b97SJakub Kicinski 	ETHTOOL_A_STATS_ETH_CTRL_5_RX_UNSUP,
857bfad2b97SJakub Kicinski 
858bfad2b97SJakub Kicinski 	/* add new constants above here */
859bfad2b97SJakub Kicinski 	__ETHTOOL_A_STATS_ETH_CTRL_CNT,
860bfad2b97SJakub Kicinski 	ETHTOOL_A_STATS_ETH_CTRL_MAX = (__ETHTOOL_A_STATS_ETH_CTRL_CNT - 1)
861bfad2b97SJakub Kicinski };
862bfad2b97SJakub Kicinski 
863a8b06e9dSJakub Kicinski enum {
864a8b06e9dSJakub Kicinski 	/* etherStatsUndersizePkts */
865a8b06e9dSJakub Kicinski 	ETHTOOL_A_STATS_RMON_UNDERSIZE,
866a8b06e9dSJakub Kicinski 	/* etherStatsOversizePkts */
867a8b06e9dSJakub Kicinski 	ETHTOOL_A_STATS_RMON_OVERSIZE,
868a8b06e9dSJakub Kicinski 	/* etherStatsFragments */
869a8b06e9dSJakub Kicinski 	ETHTOOL_A_STATS_RMON_FRAG,
870a8b06e9dSJakub Kicinski 	/* etherStatsJabbers */
871a8b06e9dSJakub Kicinski 	ETHTOOL_A_STATS_RMON_JABBER,
872a8b06e9dSJakub Kicinski 
873a8b06e9dSJakub Kicinski 	/* add new constants above here */
874a8b06e9dSJakub Kicinski 	__ETHTOOL_A_STATS_RMON_CNT,
875a8b06e9dSJakub Kicinski 	ETHTOOL_A_STATS_RMON_MAX = (__ETHTOOL_A_STATS_RMON_CNT - 1)
876a8b06e9dSJakub Kicinski };
877a8b06e9dSJakub Kicinski 
878353407d9SIdo Schimmel /* MODULE */
879353407d9SIdo Schimmel 
880353407d9SIdo Schimmel enum {
881353407d9SIdo Schimmel 	ETHTOOL_A_MODULE_UNSPEC,
882353407d9SIdo Schimmel 	ETHTOOL_A_MODULE_HEADER,		/* nest - _A_HEADER_* */
883353407d9SIdo Schimmel 	ETHTOOL_A_MODULE_POWER_MODE_POLICY,	/* u8 */
884353407d9SIdo Schimmel 	ETHTOOL_A_MODULE_POWER_MODE,		/* u8 */
885353407d9SIdo Schimmel 
886353407d9SIdo Schimmel 	/* add new constants above here */
887353407d9SIdo Schimmel 	__ETHTOOL_A_MODULE_CNT,
888353407d9SIdo Schimmel 	ETHTOOL_A_MODULE_MAX = (__ETHTOOL_A_MODULE_CNT - 1)
889353407d9SIdo Schimmel };
890353407d9SIdo Schimmel 
89118ff0bcdSOleksij Rempel /* Power Sourcing Equipment */
89218ff0bcdSOleksij Rempel enum {
89318ff0bcdSOleksij Rempel 	ETHTOOL_A_PSE_UNSPEC,
89418ff0bcdSOleksij Rempel 	ETHTOOL_A_PSE_HEADER,			/* nest - _A_HEADER_* */
89518ff0bcdSOleksij Rempel 	ETHTOOL_A_PODL_PSE_ADMIN_STATE,		/* u32 */
89618ff0bcdSOleksij Rempel 	ETHTOOL_A_PODL_PSE_ADMIN_CONTROL,	/* u32 */
89718ff0bcdSOleksij Rempel 	ETHTOOL_A_PODL_PSE_PW_D_STATUS,		/* u32 */
89818ff0bcdSOleksij Rempel 
89918ff0bcdSOleksij Rempel 	/* add new constants above here */
90018ff0bcdSOleksij Rempel 	__ETHTOOL_A_PSE_CNT,
90118ff0bcdSOleksij Rempel 	ETHTOOL_A_PSE_MAX = (__ETHTOOL_A_PSE_CNT - 1)
90218ff0bcdSOleksij Rempel };
90318ff0bcdSOleksij Rempel 
9047112a046SSudheer Mogilappagari enum {
9057112a046SSudheer Mogilappagari 	ETHTOOL_A_RSS_UNSPEC,
9067112a046SSudheer Mogilappagari 	ETHTOOL_A_RSS_HEADER,
9077112a046SSudheer Mogilappagari 	ETHTOOL_A_RSS_CONTEXT,		/* u32 */
9087112a046SSudheer Mogilappagari 	ETHTOOL_A_RSS_HFUNC,		/* u32 */
9097112a046SSudheer Mogilappagari 	ETHTOOL_A_RSS_INDIR,		/* binary */
9107112a046SSudheer Mogilappagari 	ETHTOOL_A_RSS_HKEY,		/* binary */
911*13e59344SAhmed Zaki 	ETHTOOL_A_RSS_INPUT_XFRM,	/* u32 */
9127112a046SSudheer Mogilappagari 
9137112a046SSudheer Mogilappagari 	__ETHTOOL_A_RSS_CNT,
9147112a046SSudheer Mogilappagari 	ETHTOOL_A_RSS_MAX = (__ETHTOOL_A_RSS_CNT - 1),
9157112a046SSudheer Mogilappagari };
9167112a046SSudheer Mogilappagari 
9178580e16cSPiergiorgio Beruto /* PLCA */
9188580e16cSPiergiorgio Beruto 
9198580e16cSPiergiorgio Beruto enum {
9208580e16cSPiergiorgio Beruto 	ETHTOOL_A_PLCA_UNSPEC,
9218580e16cSPiergiorgio Beruto 	ETHTOOL_A_PLCA_HEADER,			/* nest - _A_HEADER_* */
9228580e16cSPiergiorgio Beruto 	ETHTOOL_A_PLCA_VERSION,			/* u16 */
9238580e16cSPiergiorgio Beruto 	ETHTOOL_A_PLCA_ENABLED,			/* u8  */
9248580e16cSPiergiorgio Beruto 	ETHTOOL_A_PLCA_STATUS,			/* u8  */
9258580e16cSPiergiorgio Beruto 	ETHTOOL_A_PLCA_NODE_CNT,		/* u32 */
9268580e16cSPiergiorgio Beruto 	ETHTOOL_A_PLCA_NODE_ID,			/* u32 */
9278580e16cSPiergiorgio Beruto 	ETHTOOL_A_PLCA_TO_TMR,			/* u32 */
9288580e16cSPiergiorgio Beruto 	ETHTOOL_A_PLCA_BURST_CNT,		/* u32 */
9298580e16cSPiergiorgio Beruto 	ETHTOOL_A_PLCA_BURST_TMR,		/* u32 */
9308580e16cSPiergiorgio Beruto 
9318580e16cSPiergiorgio Beruto 	/* add new constants above here */
9328580e16cSPiergiorgio Beruto 	__ETHTOOL_A_PLCA_CNT,
9338580e16cSPiergiorgio Beruto 	ETHTOOL_A_PLCA_MAX = (__ETHTOOL_A_PLCA_CNT - 1)
9348580e16cSPiergiorgio Beruto };
9358580e16cSPiergiorgio Beruto 
9362b30f829SVladimir Oltean /* MAC Merge (802.3) */
9372b30f829SVladimir Oltean 
9382b30f829SVladimir Oltean enum {
9392b30f829SVladimir Oltean 	ETHTOOL_A_MM_STAT_UNSPEC,
9402b30f829SVladimir Oltean 	ETHTOOL_A_MM_STAT_PAD,
9412b30f829SVladimir Oltean 
9422b30f829SVladimir Oltean 	/* aMACMergeFrameAssErrorCount */
9432b30f829SVladimir Oltean 	ETHTOOL_A_MM_STAT_REASSEMBLY_ERRORS,	/* u64 */
9442b30f829SVladimir Oltean 	/* aMACMergeFrameSmdErrorCount */
9452b30f829SVladimir Oltean 	ETHTOOL_A_MM_STAT_SMD_ERRORS,		/* u64 */
9462b30f829SVladimir Oltean 	/* aMACMergeFrameAssOkCount */
9472b30f829SVladimir Oltean 	ETHTOOL_A_MM_STAT_REASSEMBLY_OK,	/* u64 */
9482b30f829SVladimir Oltean 	/* aMACMergeFragCountRx */
9492b30f829SVladimir Oltean 	ETHTOOL_A_MM_STAT_RX_FRAG_COUNT,	/* u64 */
9502b30f829SVladimir Oltean 	/* aMACMergeFragCountTx */
9512b30f829SVladimir Oltean 	ETHTOOL_A_MM_STAT_TX_FRAG_COUNT,	/* u64 */
9522b30f829SVladimir Oltean 	/* aMACMergeHoldCount */
9532b30f829SVladimir Oltean 	ETHTOOL_A_MM_STAT_HOLD_COUNT,		/* u64 */
9542b30f829SVladimir Oltean 
9552b30f829SVladimir Oltean 	/* add new constants above here */
9562b30f829SVladimir Oltean 	__ETHTOOL_A_MM_STAT_CNT,
9572b30f829SVladimir Oltean 	ETHTOOL_A_MM_STAT_MAX = (__ETHTOOL_A_MM_STAT_CNT - 1)
9582b30f829SVladimir Oltean };
9592b30f829SVladimir Oltean 
9602b30f829SVladimir Oltean enum {
9612b30f829SVladimir Oltean 	ETHTOOL_A_MM_UNSPEC,
9622b30f829SVladimir Oltean 	ETHTOOL_A_MM_HEADER,			/* nest - _A_HEADER_* */
9632b30f829SVladimir Oltean 	ETHTOOL_A_MM_PMAC_ENABLED,		/* u8 */
9642b30f829SVladimir Oltean 	ETHTOOL_A_MM_TX_ENABLED,		/* u8 */
9652b30f829SVladimir Oltean 	ETHTOOL_A_MM_TX_ACTIVE,			/* u8 */
9662b30f829SVladimir Oltean 	ETHTOOL_A_MM_TX_MIN_FRAG_SIZE,		/* u32 */
9672b30f829SVladimir Oltean 	ETHTOOL_A_MM_RX_MIN_FRAG_SIZE,		/* u32 */
9682b30f829SVladimir Oltean 	ETHTOOL_A_MM_VERIFY_ENABLED,		/* u8 */
9692b30f829SVladimir Oltean 	ETHTOOL_A_MM_VERIFY_STATUS,		/* u8 */
9702b30f829SVladimir Oltean 	ETHTOOL_A_MM_VERIFY_TIME,		/* u32 */
9712b30f829SVladimir Oltean 	ETHTOOL_A_MM_MAX_VERIFY_TIME,		/* u32 */
9722b30f829SVladimir Oltean 	ETHTOOL_A_MM_STATS,			/* nest - _A_MM_STAT_* */
9732b30f829SVladimir Oltean 
9742b30f829SVladimir Oltean 	/* add new constants above here */
9752b30f829SVladimir Oltean 	__ETHTOOL_A_MM_CNT,
9762b30f829SVladimir Oltean 	ETHTOOL_A_MM_MAX = (__ETHTOOL_A_MM_CNT - 1)
9772b30f829SVladimir Oltean };
9782b30f829SVladimir Oltean 
9792b4a8990SMichal Kubecek /* generic netlink info */
9802b4a8990SMichal Kubecek #define ETHTOOL_GENL_NAME "ethtool"
9812b4a8990SMichal Kubecek #define ETHTOOL_GENL_VERSION 1
9822b4a8990SMichal Kubecek 
9836b08d6c1SMichal Kubecek #define ETHTOOL_MCGRP_MONITOR_NAME "monitor"
9846b08d6c1SMichal Kubecek 
9852b4a8990SMichal Kubecek #endif /* _UAPI_LINUX_ETHTOOL_NETLINK_H_ */
986