1/* SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note */
2/*
3 * include/uapi/linux/ethtool_netlink.h - netlink interface for ethtool
4 *
5 * See Documentation/networking/ethtool-netlink.rst in kernel source tree for
6 * doucumentation of the interface.
7 */
8
9#ifndef _UAPI_LINUX_ETHTOOL_NETLINK_H_
10#define _UAPI_LINUX_ETHTOOL_NETLINK_H_
11
12#include <linux/ethtool.h>
13
14/* message types - userspace to kernel */
15enum {
16	ETHTOOL_MSG_USER_NONE,
17	ETHTOOL_MSG_STRSET_GET,
18	ETHTOOL_MSG_LINKINFO_GET,
19	ETHTOOL_MSG_LINKINFO_SET,
20	ETHTOOL_MSG_LINKMODES_GET,
21	ETHTOOL_MSG_LINKMODES_SET,
22	ETHTOOL_MSG_LINKSTATE_GET,
23	ETHTOOL_MSG_DEBUG_GET,
24	ETHTOOL_MSG_DEBUG_SET,
25	ETHTOOL_MSG_WOL_GET,
26	ETHTOOL_MSG_WOL_SET,
27	ETHTOOL_MSG_FEATURES_GET,
28	ETHTOOL_MSG_FEATURES_SET,
29	ETHTOOL_MSG_PRIVFLAGS_GET,
30	ETHTOOL_MSG_PRIVFLAGS_SET,
31	ETHTOOL_MSG_RINGS_GET,
32	ETHTOOL_MSG_RINGS_SET,
33	ETHTOOL_MSG_CHANNELS_GET,
34	ETHTOOL_MSG_CHANNELS_SET,
35	ETHTOOL_MSG_COALESCE_GET,
36	ETHTOOL_MSG_COALESCE_SET,
37	ETHTOOL_MSG_PAUSE_GET,
38	ETHTOOL_MSG_PAUSE_SET,
39	ETHTOOL_MSG_EEE_GET,
40	ETHTOOL_MSG_EEE_SET,
41	ETHTOOL_MSG_TSINFO_GET,
42	ETHTOOL_MSG_CABLE_TEST_ACT,
43	ETHTOOL_MSG_CABLE_TEST_TDR_ACT,
44	ETHTOOL_MSG_TUNNEL_INFO_GET,
45
46	/* add new constants above here */
47	__ETHTOOL_MSG_USER_CNT,
48	ETHTOOL_MSG_USER_MAX = __ETHTOOL_MSG_USER_CNT - 1
49};
50
51/* message types - kernel to userspace */
52enum {
53	ETHTOOL_MSG_KERNEL_NONE,
54	ETHTOOL_MSG_STRSET_GET_REPLY,
55	ETHTOOL_MSG_LINKINFO_GET_REPLY,
56	ETHTOOL_MSG_LINKINFO_NTF,
57	ETHTOOL_MSG_LINKMODES_GET_REPLY,
58	ETHTOOL_MSG_LINKMODES_NTF,
59	ETHTOOL_MSG_LINKSTATE_GET_REPLY,
60	ETHTOOL_MSG_DEBUG_GET_REPLY,
61	ETHTOOL_MSG_DEBUG_NTF,
62	ETHTOOL_MSG_WOL_GET_REPLY,
63	ETHTOOL_MSG_WOL_NTF,
64	ETHTOOL_MSG_FEATURES_GET_REPLY,
65	ETHTOOL_MSG_FEATURES_SET_REPLY,
66	ETHTOOL_MSG_FEATURES_NTF,
67	ETHTOOL_MSG_PRIVFLAGS_GET_REPLY,
68	ETHTOOL_MSG_PRIVFLAGS_NTF,
69	ETHTOOL_MSG_RINGS_GET_REPLY,
70	ETHTOOL_MSG_RINGS_NTF,
71	ETHTOOL_MSG_CHANNELS_GET_REPLY,
72	ETHTOOL_MSG_CHANNELS_NTF,
73	ETHTOOL_MSG_COALESCE_GET_REPLY,
74	ETHTOOL_MSG_COALESCE_NTF,
75	ETHTOOL_MSG_PAUSE_GET_REPLY,
76	ETHTOOL_MSG_PAUSE_NTF,
77	ETHTOOL_MSG_EEE_GET_REPLY,
78	ETHTOOL_MSG_EEE_NTF,
79	ETHTOOL_MSG_TSINFO_GET_REPLY,
80	ETHTOOL_MSG_CABLE_TEST_NTF,
81	ETHTOOL_MSG_CABLE_TEST_TDR_NTF,
82	ETHTOOL_MSG_TUNNEL_INFO_GET_REPLY,
83
84	/* add new constants above here */
85	__ETHTOOL_MSG_KERNEL_CNT,
86	ETHTOOL_MSG_KERNEL_MAX = __ETHTOOL_MSG_KERNEL_CNT - 1
87};
88
89/* request header */
90
91/* use compact bitsets in reply */
92#define ETHTOOL_FLAG_COMPACT_BITSETS	(1 << 0)
93/* provide optional reply for SET or ACT requests */
94#define ETHTOOL_FLAG_OMIT_REPLY	(1 << 1)
95/* request statistics, if supported by the driver */
96#define ETHTOOL_FLAG_STATS		(1 << 2)
97
98#define ETHTOOL_FLAG_ALL (ETHTOOL_FLAG_COMPACT_BITSETS | \
99			  ETHTOOL_FLAG_OMIT_REPLY | \
100			  ETHTOOL_FLAG_STATS)
101
102enum {
103	ETHTOOL_A_HEADER_UNSPEC,
104	ETHTOOL_A_HEADER_DEV_INDEX,		/* u32 */
105	ETHTOOL_A_HEADER_DEV_NAME,		/* string */
106	ETHTOOL_A_HEADER_FLAGS,			/* u32 - ETHTOOL_FLAG_* */
107
108	/* add new constants above here */
109	__ETHTOOL_A_HEADER_CNT,
110	ETHTOOL_A_HEADER_MAX = __ETHTOOL_A_HEADER_CNT - 1
111};
112
113/* bit sets */
114
115enum {
116	ETHTOOL_A_BITSET_BIT_UNSPEC,
117	ETHTOOL_A_BITSET_BIT_INDEX,		/* u32 */
118	ETHTOOL_A_BITSET_BIT_NAME,		/* string */
119	ETHTOOL_A_BITSET_BIT_VALUE,		/* flag */
120
121	/* add new constants above here */
122	__ETHTOOL_A_BITSET_BIT_CNT,
123	ETHTOOL_A_BITSET_BIT_MAX = __ETHTOOL_A_BITSET_BIT_CNT - 1
124};
125
126enum {
127	ETHTOOL_A_BITSET_BITS_UNSPEC,
128	ETHTOOL_A_BITSET_BITS_BIT,		/* nest - _A_BITSET_BIT_* */
129
130	/* add new constants above here */
131	__ETHTOOL_A_BITSET_BITS_CNT,
132	ETHTOOL_A_BITSET_BITS_MAX = __ETHTOOL_A_BITSET_BITS_CNT - 1
133};
134
135enum {
136	ETHTOOL_A_BITSET_UNSPEC,
137	ETHTOOL_A_BITSET_NOMASK,		/* flag */
138	ETHTOOL_A_BITSET_SIZE,			/* u32 */
139	ETHTOOL_A_BITSET_BITS,			/* nest - _A_BITSET_BITS_* */
140	ETHTOOL_A_BITSET_VALUE,			/* binary */
141	ETHTOOL_A_BITSET_MASK,			/* binary */
142
143	/* add new constants above here */
144	__ETHTOOL_A_BITSET_CNT,
145	ETHTOOL_A_BITSET_MAX = __ETHTOOL_A_BITSET_CNT - 1
146};
147
148/* string sets */
149
150enum {
151	ETHTOOL_A_STRING_UNSPEC,
152	ETHTOOL_A_STRING_INDEX,			/* u32 */
153	ETHTOOL_A_STRING_VALUE,			/* string */
154
155	/* add new constants above here */
156	__ETHTOOL_A_STRING_CNT,
157	ETHTOOL_A_STRING_MAX = __ETHTOOL_A_STRING_CNT - 1
158};
159
160enum {
161	ETHTOOL_A_STRINGS_UNSPEC,
162	ETHTOOL_A_STRINGS_STRING,		/* nest - _A_STRINGS_* */
163
164	/* add new constants above here */
165	__ETHTOOL_A_STRINGS_CNT,
166	ETHTOOL_A_STRINGS_MAX = __ETHTOOL_A_STRINGS_CNT - 1
167};
168
169enum {
170	ETHTOOL_A_STRINGSET_UNSPEC,
171	ETHTOOL_A_STRINGSET_ID,			/* u32 */
172	ETHTOOL_A_STRINGSET_COUNT,		/* u32 */
173	ETHTOOL_A_STRINGSET_STRINGS,		/* nest - _A_STRINGS_* */
174
175	/* add new constants above here */
176	__ETHTOOL_A_STRINGSET_CNT,
177	ETHTOOL_A_STRINGSET_MAX = __ETHTOOL_A_STRINGSET_CNT - 1
178};
179
180enum {
181	ETHTOOL_A_STRINGSETS_UNSPEC,
182	ETHTOOL_A_STRINGSETS_STRINGSET,		/* nest - _A_STRINGSET_* */
183
184	/* add new constants above here */
185	__ETHTOOL_A_STRINGSETS_CNT,
186	ETHTOOL_A_STRINGSETS_MAX = __ETHTOOL_A_STRINGSETS_CNT - 1
187};
188
189/* STRSET */
190
191enum {
192	ETHTOOL_A_STRSET_UNSPEC,
193	ETHTOOL_A_STRSET_HEADER,		/* nest - _A_HEADER_* */
194	ETHTOOL_A_STRSET_STRINGSETS,		/* nest - _A_STRINGSETS_* */
195	ETHTOOL_A_STRSET_COUNTS_ONLY,		/* flag */
196
197	/* add new constants above here */
198	__ETHTOOL_A_STRSET_CNT,
199	ETHTOOL_A_STRSET_MAX = __ETHTOOL_A_STRSET_CNT - 1
200};
201
202/* LINKINFO */
203
204enum {
205	ETHTOOL_A_LINKINFO_UNSPEC,
206	ETHTOOL_A_LINKINFO_HEADER,		/* nest - _A_HEADER_* */
207	ETHTOOL_A_LINKINFO_PORT,		/* u8 */
208	ETHTOOL_A_LINKINFO_PHYADDR,		/* u8 */
209	ETHTOOL_A_LINKINFO_TP_MDIX,		/* u8 */
210	ETHTOOL_A_LINKINFO_TP_MDIX_CTRL,	/* u8 */
211	ETHTOOL_A_LINKINFO_TRANSCEIVER,		/* u8 */
212
213	/* add new constants above here */
214	__ETHTOOL_A_LINKINFO_CNT,
215	ETHTOOL_A_LINKINFO_MAX = __ETHTOOL_A_LINKINFO_CNT - 1
216};
217
218/* LINKMODES */
219
220enum {
221	ETHTOOL_A_LINKMODES_UNSPEC,
222	ETHTOOL_A_LINKMODES_HEADER,		/* nest - _A_HEADER_* */
223	ETHTOOL_A_LINKMODES_AUTONEG,		/* u8 */
224	ETHTOOL_A_LINKMODES_OURS,		/* bitset */
225	ETHTOOL_A_LINKMODES_PEER,		/* bitset */
226	ETHTOOL_A_LINKMODES_SPEED,		/* u32 */
227	ETHTOOL_A_LINKMODES_DUPLEX,		/* u8 */
228	ETHTOOL_A_LINKMODES_MASTER_SLAVE_CFG,	/* u8 */
229	ETHTOOL_A_LINKMODES_MASTER_SLAVE_STATE,	/* u8 */
230
231	/* add new constants above here */
232	__ETHTOOL_A_LINKMODES_CNT,
233	ETHTOOL_A_LINKMODES_MAX = __ETHTOOL_A_LINKMODES_CNT - 1
234};
235
236/* LINKSTATE */
237
238enum {
239	ETHTOOL_A_LINKSTATE_UNSPEC,
240	ETHTOOL_A_LINKSTATE_HEADER,		/* nest - _A_HEADER_* */
241	ETHTOOL_A_LINKSTATE_LINK,		/* u8 */
242	ETHTOOL_A_LINKSTATE_SQI,		/* u32 */
243	ETHTOOL_A_LINKSTATE_SQI_MAX,		/* u32 */
244	ETHTOOL_A_LINKSTATE_EXT_STATE,		/* u8 */
245	ETHTOOL_A_LINKSTATE_EXT_SUBSTATE,	/* u8 */
246
247	/* add new constants above here */
248	__ETHTOOL_A_LINKSTATE_CNT,
249	ETHTOOL_A_LINKSTATE_MAX = __ETHTOOL_A_LINKSTATE_CNT - 1
250};
251
252/* DEBUG */
253
254enum {
255	ETHTOOL_A_DEBUG_UNSPEC,
256	ETHTOOL_A_DEBUG_HEADER,			/* nest - _A_HEADER_* */
257	ETHTOOL_A_DEBUG_MSGMASK,		/* bitset */
258
259	/* add new constants above here */
260	__ETHTOOL_A_DEBUG_CNT,
261	ETHTOOL_A_DEBUG_MAX = __ETHTOOL_A_DEBUG_CNT - 1
262};
263
264/* WOL */
265
266enum {
267	ETHTOOL_A_WOL_UNSPEC,
268	ETHTOOL_A_WOL_HEADER,			/* nest - _A_HEADER_* */
269	ETHTOOL_A_WOL_MODES,			/* bitset */
270	ETHTOOL_A_WOL_SOPASS,			/* binary */
271
272	/* add new constants above here */
273	__ETHTOOL_A_WOL_CNT,
274	ETHTOOL_A_WOL_MAX = __ETHTOOL_A_WOL_CNT - 1
275};
276
277/* FEATURES */
278
279enum {
280	ETHTOOL_A_FEATURES_UNSPEC,
281	ETHTOOL_A_FEATURES_HEADER,			/* nest - _A_HEADER_* */
282	ETHTOOL_A_FEATURES_HW,				/* bitset */
283	ETHTOOL_A_FEATURES_WANTED,			/* bitset */
284	ETHTOOL_A_FEATURES_ACTIVE,			/* bitset */
285	ETHTOOL_A_FEATURES_NOCHANGE,			/* bitset */
286
287	/* add new constants above here */
288	__ETHTOOL_A_FEATURES_CNT,
289	ETHTOOL_A_FEATURES_MAX = __ETHTOOL_A_FEATURES_CNT - 1
290};
291
292/* PRIVFLAGS */
293
294enum {
295	ETHTOOL_A_PRIVFLAGS_UNSPEC,
296	ETHTOOL_A_PRIVFLAGS_HEADER,			/* nest - _A_HEADER_* */
297	ETHTOOL_A_PRIVFLAGS_FLAGS,			/* bitset */
298
299	/* add new constants above here */
300	__ETHTOOL_A_PRIVFLAGS_CNT,
301	ETHTOOL_A_PRIVFLAGS_MAX = __ETHTOOL_A_PRIVFLAGS_CNT - 1
302};
303
304/* RINGS */
305
306enum {
307	ETHTOOL_A_RINGS_UNSPEC,
308	ETHTOOL_A_RINGS_HEADER,				/* nest - _A_HEADER_* */
309	ETHTOOL_A_RINGS_RX_MAX,				/* u32 */
310	ETHTOOL_A_RINGS_RX_MINI_MAX,			/* u32 */
311	ETHTOOL_A_RINGS_RX_JUMBO_MAX,			/* u32 */
312	ETHTOOL_A_RINGS_TX_MAX,				/* u32 */
313	ETHTOOL_A_RINGS_RX,				/* u32 */
314	ETHTOOL_A_RINGS_RX_MINI,			/* u32 */
315	ETHTOOL_A_RINGS_RX_JUMBO,			/* u32 */
316	ETHTOOL_A_RINGS_TX,				/* u32 */
317
318	/* add new constants above here */
319	__ETHTOOL_A_RINGS_CNT,
320	ETHTOOL_A_RINGS_MAX = (__ETHTOOL_A_RINGS_CNT - 1)
321};
322
323/* CHANNELS */
324
325enum {
326	ETHTOOL_A_CHANNELS_UNSPEC,
327	ETHTOOL_A_CHANNELS_HEADER,			/* nest - _A_HEADER_* */
328	ETHTOOL_A_CHANNELS_RX_MAX,			/* u32 */
329	ETHTOOL_A_CHANNELS_TX_MAX,			/* u32 */
330	ETHTOOL_A_CHANNELS_OTHER_MAX,			/* u32 */
331	ETHTOOL_A_CHANNELS_COMBINED_MAX,		/* u32 */
332	ETHTOOL_A_CHANNELS_RX_COUNT,			/* u32 */
333	ETHTOOL_A_CHANNELS_TX_COUNT,			/* u32 */
334	ETHTOOL_A_CHANNELS_OTHER_COUNT,			/* u32 */
335	ETHTOOL_A_CHANNELS_COMBINED_COUNT,		/* u32 */
336
337	/* add new constants above here */
338	__ETHTOOL_A_CHANNELS_CNT,
339	ETHTOOL_A_CHANNELS_MAX = (__ETHTOOL_A_CHANNELS_CNT - 1)
340};
341
342/* COALESCE */
343
344enum {
345	ETHTOOL_A_COALESCE_UNSPEC,
346	ETHTOOL_A_COALESCE_HEADER,			/* nest - _A_HEADER_* */
347	ETHTOOL_A_COALESCE_RX_USECS,			/* u32 */
348	ETHTOOL_A_COALESCE_RX_MAX_FRAMES,		/* u32 */
349	ETHTOOL_A_COALESCE_RX_USECS_IRQ,		/* u32 */
350	ETHTOOL_A_COALESCE_RX_MAX_FRAMES_IRQ,		/* u32 */
351	ETHTOOL_A_COALESCE_TX_USECS,			/* u32 */
352	ETHTOOL_A_COALESCE_TX_MAX_FRAMES,		/* u32 */
353	ETHTOOL_A_COALESCE_TX_USECS_IRQ,		/* u32 */
354	ETHTOOL_A_COALESCE_TX_MAX_FRAMES_IRQ,		/* u32 */
355	ETHTOOL_A_COALESCE_STATS_BLOCK_USECS,		/* u32 */
356	ETHTOOL_A_COALESCE_USE_ADAPTIVE_RX,		/* u8 */
357	ETHTOOL_A_COALESCE_USE_ADAPTIVE_TX,		/* u8 */
358	ETHTOOL_A_COALESCE_PKT_RATE_LOW,		/* u32 */
359	ETHTOOL_A_COALESCE_RX_USECS_LOW,		/* u32 */
360	ETHTOOL_A_COALESCE_RX_MAX_FRAMES_LOW,		/* u32 */
361	ETHTOOL_A_COALESCE_TX_USECS_LOW,		/* u32 */
362	ETHTOOL_A_COALESCE_TX_MAX_FRAMES_LOW,		/* u32 */
363	ETHTOOL_A_COALESCE_PKT_RATE_HIGH,		/* u32 */
364	ETHTOOL_A_COALESCE_RX_USECS_HIGH,		/* u32 */
365	ETHTOOL_A_COALESCE_RX_MAX_FRAMES_HIGH,		/* u32 */
366	ETHTOOL_A_COALESCE_TX_USECS_HIGH,		/* u32 */
367	ETHTOOL_A_COALESCE_TX_MAX_FRAMES_HIGH,		/* u32 */
368	ETHTOOL_A_COALESCE_RATE_SAMPLE_INTERVAL,	/* u32 */
369
370	/* add new constants above here */
371	__ETHTOOL_A_COALESCE_CNT,
372	ETHTOOL_A_COALESCE_MAX = (__ETHTOOL_A_COALESCE_CNT - 1)
373};
374
375/* PAUSE */
376
377enum {
378	ETHTOOL_A_PAUSE_UNSPEC,
379	ETHTOOL_A_PAUSE_HEADER,				/* nest - _A_HEADER_* */
380	ETHTOOL_A_PAUSE_AUTONEG,			/* u8 */
381	ETHTOOL_A_PAUSE_RX,				/* u8 */
382	ETHTOOL_A_PAUSE_TX,				/* u8 */
383	ETHTOOL_A_PAUSE_STATS,				/* nest - _PAUSE_STAT_* */
384
385	/* add new constants above here */
386	__ETHTOOL_A_PAUSE_CNT,
387	ETHTOOL_A_PAUSE_MAX = (__ETHTOOL_A_PAUSE_CNT - 1)
388};
389
390enum {
391	ETHTOOL_A_PAUSE_STAT_UNSPEC,
392	ETHTOOL_A_PAUSE_STAT_PAD,
393
394	ETHTOOL_A_PAUSE_STAT_TX_FRAMES,
395	ETHTOOL_A_PAUSE_STAT_RX_FRAMES,
396
397	/* add new constants above here
398	 * adjust ETHTOOL_PAUSE_STAT_CNT if adding non-stats!
399	 */
400	__ETHTOOL_A_PAUSE_STAT_CNT,
401	ETHTOOL_A_PAUSE_STAT_MAX = (__ETHTOOL_A_PAUSE_STAT_CNT - 1)
402};
403
404/* EEE */
405
406enum {
407	ETHTOOL_A_EEE_UNSPEC,
408	ETHTOOL_A_EEE_HEADER,				/* nest - _A_HEADER_* */
409	ETHTOOL_A_EEE_MODES_OURS,			/* bitset */
410	ETHTOOL_A_EEE_MODES_PEER,			/* bitset */
411	ETHTOOL_A_EEE_ACTIVE,				/* u8 */
412	ETHTOOL_A_EEE_ENABLED,				/* u8 */
413	ETHTOOL_A_EEE_TX_LPI_ENABLED,			/* u8 */
414	ETHTOOL_A_EEE_TX_LPI_TIMER,			/* u32 */
415
416	/* add new constants above here */
417	__ETHTOOL_A_EEE_CNT,
418	ETHTOOL_A_EEE_MAX = (__ETHTOOL_A_EEE_CNT - 1)
419};
420
421/* TSINFO */
422
423enum {
424	ETHTOOL_A_TSINFO_UNSPEC,
425	ETHTOOL_A_TSINFO_HEADER,			/* nest - _A_HEADER_* */
426	ETHTOOL_A_TSINFO_TIMESTAMPING,			/* bitset */
427	ETHTOOL_A_TSINFO_TX_TYPES,			/* bitset */
428	ETHTOOL_A_TSINFO_RX_FILTERS,			/* bitset */
429	ETHTOOL_A_TSINFO_PHC_INDEX,			/* u32 */
430
431	/* add new constants above here */
432	__ETHTOOL_A_TSINFO_CNT,
433	ETHTOOL_A_TSINFO_MAX = (__ETHTOOL_A_TSINFO_CNT - 1)
434};
435
436/* CABLE TEST */
437
438enum {
439	ETHTOOL_A_CABLE_TEST_UNSPEC,
440	ETHTOOL_A_CABLE_TEST_HEADER,		/* nest - _A_HEADER_* */
441
442	/* add new constants above here */
443	__ETHTOOL_A_CABLE_TEST_CNT,
444	ETHTOOL_A_CABLE_TEST_MAX = __ETHTOOL_A_CABLE_TEST_CNT - 1
445};
446
447/* CABLE TEST NOTIFY */
448enum {
449	ETHTOOL_A_CABLE_RESULT_CODE_UNSPEC,
450	ETHTOOL_A_CABLE_RESULT_CODE_OK,
451	ETHTOOL_A_CABLE_RESULT_CODE_OPEN,
452	ETHTOOL_A_CABLE_RESULT_CODE_SAME_SHORT,
453	ETHTOOL_A_CABLE_RESULT_CODE_CROSS_SHORT,
454};
455
456enum {
457	ETHTOOL_A_CABLE_PAIR_A,
458	ETHTOOL_A_CABLE_PAIR_B,
459	ETHTOOL_A_CABLE_PAIR_C,
460	ETHTOOL_A_CABLE_PAIR_D,
461};
462
463enum {
464	ETHTOOL_A_CABLE_RESULT_UNSPEC,
465	ETHTOOL_A_CABLE_RESULT_PAIR,		/* u8 ETHTOOL_A_CABLE_PAIR_ */
466	ETHTOOL_A_CABLE_RESULT_CODE,		/* u8 ETHTOOL_A_CABLE_RESULT_CODE_ */
467
468	__ETHTOOL_A_CABLE_RESULT_CNT,
469	ETHTOOL_A_CABLE_RESULT_MAX = (__ETHTOOL_A_CABLE_RESULT_CNT - 1)
470};
471
472enum {
473	ETHTOOL_A_CABLE_FAULT_LENGTH_UNSPEC,
474	ETHTOOL_A_CABLE_FAULT_LENGTH_PAIR,	/* u8 ETHTOOL_A_CABLE_PAIR_ */
475	ETHTOOL_A_CABLE_FAULT_LENGTH_CM,	/* u32 */
476
477	__ETHTOOL_A_CABLE_FAULT_LENGTH_CNT,
478	ETHTOOL_A_CABLE_FAULT_LENGTH_MAX = (__ETHTOOL_A_CABLE_FAULT_LENGTH_CNT - 1)
479};
480
481enum {
482	ETHTOOL_A_CABLE_TEST_NTF_STATUS_UNSPEC,
483	ETHTOOL_A_CABLE_TEST_NTF_STATUS_STARTED,
484	ETHTOOL_A_CABLE_TEST_NTF_STATUS_COMPLETED
485};
486
487enum {
488	ETHTOOL_A_CABLE_NEST_UNSPEC,
489	ETHTOOL_A_CABLE_NEST_RESULT,		/* nest - ETHTOOL_A_CABLE_RESULT_ */
490	ETHTOOL_A_CABLE_NEST_FAULT_LENGTH,	/* nest - ETHTOOL_A_CABLE_FAULT_LENGTH_ */
491	__ETHTOOL_A_CABLE_NEST_CNT,
492	ETHTOOL_A_CABLE_NEST_MAX = (__ETHTOOL_A_CABLE_NEST_CNT - 1)
493};
494
495enum {
496	ETHTOOL_A_CABLE_TEST_NTF_UNSPEC,
497	ETHTOOL_A_CABLE_TEST_NTF_HEADER,	/* nest - ETHTOOL_A_HEADER_* */
498	ETHTOOL_A_CABLE_TEST_NTF_STATUS,	/* u8 - _STARTED/_COMPLETE */
499	ETHTOOL_A_CABLE_TEST_NTF_NEST,		/* nest - of results: */
500
501	__ETHTOOL_A_CABLE_TEST_NTF_CNT,
502	ETHTOOL_A_CABLE_TEST_NTF_MAX = (__ETHTOOL_A_CABLE_TEST_NTF_CNT - 1)
503};
504
505/* CABLE TEST TDR */
506
507enum {
508	ETHTOOL_A_CABLE_TEST_TDR_CFG_UNSPEC,
509	ETHTOOL_A_CABLE_TEST_TDR_CFG_FIRST,		/* u32 */
510	ETHTOOL_A_CABLE_TEST_TDR_CFG_LAST,		/* u32 */
511	ETHTOOL_A_CABLE_TEST_TDR_CFG_STEP,		/* u32 */
512	ETHTOOL_A_CABLE_TEST_TDR_CFG_PAIR,		/* u8 */
513
514	/* add new constants above here */
515	__ETHTOOL_A_CABLE_TEST_TDR_CFG_CNT,
516	ETHTOOL_A_CABLE_TEST_TDR_CFG_MAX = __ETHTOOL_A_CABLE_TEST_TDR_CFG_CNT - 1
517};
518
519enum {
520	ETHTOOL_A_CABLE_TEST_TDR_UNSPEC,
521	ETHTOOL_A_CABLE_TEST_TDR_HEADER,	/* nest - _A_HEADER_* */
522	ETHTOOL_A_CABLE_TEST_TDR_CFG,		/* nest - *_TDR_CFG_* */
523
524	/* add new constants above here */
525	__ETHTOOL_A_CABLE_TEST_TDR_CNT,
526	ETHTOOL_A_CABLE_TEST_TDR_MAX = __ETHTOOL_A_CABLE_TEST_TDR_CNT - 1
527};
528
529/* CABLE TEST TDR NOTIFY */
530
531enum {
532	ETHTOOL_A_CABLE_AMPLITUDE_UNSPEC,
533	ETHTOOL_A_CABLE_AMPLITUDE_PAIR,         /* u8 */
534	ETHTOOL_A_CABLE_AMPLITUDE_mV,           /* s16 */
535
536	__ETHTOOL_A_CABLE_AMPLITUDE_CNT,
537	ETHTOOL_A_CABLE_AMPLITUDE_MAX = (__ETHTOOL_A_CABLE_AMPLITUDE_CNT - 1)
538};
539
540enum {
541	ETHTOOL_A_CABLE_PULSE_UNSPEC,
542	ETHTOOL_A_CABLE_PULSE_mV,		/* s16 */
543
544	__ETHTOOL_A_CABLE_PULSE_CNT,
545	ETHTOOL_A_CABLE_PULSE_MAX = (__ETHTOOL_A_CABLE_PULSE_CNT - 1)
546};
547
548enum {
549	ETHTOOL_A_CABLE_STEP_UNSPEC,
550	ETHTOOL_A_CABLE_STEP_FIRST_DISTANCE,	/* u32 */
551	ETHTOOL_A_CABLE_STEP_LAST_DISTANCE,	/* u32 */
552	ETHTOOL_A_CABLE_STEP_STEP_DISTANCE,	/* u32 */
553
554	__ETHTOOL_A_CABLE_STEP_CNT,
555	ETHTOOL_A_CABLE_STEP_MAX = (__ETHTOOL_A_CABLE_STEP_CNT - 1)
556};
557
558enum {
559	ETHTOOL_A_CABLE_TDR_NEST_UNSPEC,
560	ETHTOOL_A_CABLE_TDR_NEST_STEP,		/* nest - ETHTTOOL_A_CABLE_STEP */
561	ETHTOOL_A_CABLE_TDR_NEST_AMPLITUDE,	/* nest - ETHTOOL_A_CABLE_AMPLITUDE */
562	ETHTOOL_A_CABLE_TDR_NEST_PULSE,		/* nest - ETHTOOL_A_CABLE_PULSE */
563
564	__ETHTOOL_A_CABLE_TDR_NEST_CNT,
565	ETHTOOL_A_CABLE_TDR_NEST_MAX = (__ETHTOOL_A_CABLE_TDR_NEST_CNT - 1)
566};
567
568enum {
569	ETHTOOL_A_CABLE_TEST_TDR_NTF_UNSPEC,
570	ETHTOOL_A_CABLE_TEST_TDR_NTF_HEADER,	/* nest - ETHTOOL_A_HEADER_* */
571	ETHTOOL_A_CABLE_TEST_TDR_NTF_STATUS,	/* u8 - _STARTED/_COMPLETE */
572	ETHTOOL_A_CABLE_TEST_TDR_NTF_NEST,	/* nest - of results: */
573
574	/* add new constants above here */
575	__ETHTOOL_A_CABLE_TEST_TDR_NTF_CNT,
576	ETHTOOL_A_CABLE_TEST_TDR_NTF_MAX = __ETHTOOL_A_CABLE_TEST_TDR_NTF_CNT - 1
577};
578
579/* TUNNEL INFO */
580
581enum {
582	ETHTOOL_UDP_TUNNEL_TYPE_VXLAN,
583	ETHTOOL_UDP_TUNNEL_TYPE_GENEVE,
584	ETHTOOL_UDP_TUNNEL_TYPE_VXLAN_GPE,
585
586	__ETHTOOL_UDP_TUNNEL_TYPE_CNT
587};
588
589enum {
590	ETHTOOL_A_TUNNEL_UDP_ENTRY_UNSPEC,
591
592	ETHTOOL_A_TUNNEL_UDP_ENTRY_PORT,		/* be16 */
593	ETHTOOL_A_TUNNEL_UDP_ENTRY_TYPE,		/* u32 */
594
595	/* add new constants above here */
596	__ETHTOOL_A_TUNNEL_UDP_ENTRY_CNT,
597	ETHTOOL_A_TUNNEL_UDP_ENTRY_MAX = (__ETHTOOL_A_TUNNEL_UDP_ENTRY_CNT - 1)
598};
599
600enum {
601	ETHTOOL_A_TUNNEL_UDP_TABLE_UNSPEC,
602
603	ETHTOOL_A_TUNNEL_UDP_TABLE_SIZE,		/* u32 */
604	ETHTOOL_A_TUNNEL_UDP_TABLE_TYPES,		/* bitset */
605	ETHTOOL_A_TUNNEL_UDP_TABLE_ENTRY,		/* nest - _UDP_ENTRY_* */
606
607	/* add new constants above here */
608	__ETHTOOL_A_TUNNEL_UDP_TABLE_CNT,
609	ETHTOOL_A_TUNNEL_UDP_TABLE_MAX = (__ETHTOOL_A_TUNNEL_UDP_TABLE_CNT - 1)
610};
611
612enum {
613	ETHTOOL_A_TUNNEL_UDP_UNSPEC,
614
615	ETHTOOL_A_TUNNEL_UDP_TABLE,			/* nest - _UDP_TABLE_* */
616
617	/* add new constants above here */
618	__ETHTOOL_A_TUNNEL_UDP_CNT,
619	ETHTOOL_A_TUNNEL_UDP_MAX = (__ETHTOOL_A_TUNNEL_UDP_CNT - 1)
620};
621
622enum {
623	ETHTOOL_A_TUNNEL_INFO_UNSPEC,
624	ETHTOOL_A_TUNNEL_INFO_HEADER,			/* nest - _A_HEADER_* */
625
626	ETHTOOL_A_TUNNEL_INFO_UDP_PORTS,		/* nest - _UDP_TABLE */
627
628	/* add new constants above here */
629	__ETHTOOL_A_TUNNEL_INFO_CNT,
630	ETHTOOL_A_TUNNEL_INFO_MAX = (__ETHTOOL_A_TUNNEL_INFO_CNT - 1)
631};
632
633/* generic netlink info */
634#define ETHTOOL_GENL_NAME "ethtool"
635#define ETHTOOL_GENL_VERSION 1
636
637#define ETHTOOL_MCGRP_MONITOR_NAME "monitor"
638
639#endif /* _UAPI_LINUX_ETHTOOL_NETLINK_H_ */
640