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 */
15  enum {
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  	ETHTOOL_MSG_FEC_GET,
46  	ETHTOOL_MSG_FEC_SET,
47  	ETHTOOL_MSG_MODULE_EEPROM_GET,
48  	ETHTOOL_MSG_STATS_GET,
49  	ETHTOOL_MSG_PHC_VCLOCKS_GET,
50  	ETHTOOL_MSG_MODULE_GET,
51  	ETHTOOL_MSG_MODULE_SET,
52  	ETHTOOL_MSG_PSE_GET,
53  	ETHTOOL_MSG_PSE_SET,
54  	ETHTOOL_MSG_RSS_GET,
55  	ETHTOOL_MSG_PLCA_GET_CFG,
56  	ETHTOOL_MSG_PLCA_SET_CFG,
57  	ETHTOOL_MSG_PLCA_GET_STATUS,
58  	ETHTOOL_MSG_MM_GET,
59  	ETHTOOL_MSG_MM_SET,
60  	ETHTOOL_MSG_MODULE_FW_FLASH_ACT,
61  	ETHTOOL_MSG_PHY_GET,
62  
63  	/* add new constants above here */
64  	__ETHTOOL_MSG_USER_CNT,
65  	ETHTOOL_MSG_USER_MAX = __ETHTOOL_MSG_USER_CNT - 1
66  };
67  
68  /* message types - kernel to userspace */
69  enum {
70  	ETHTOOL_MSG_KERNEL_NONE,
71  	ETHTOOL_MSG_STRSET_GET_REPLY,
72  	ETHTOOL_MSG_LINKINFO_GET_REPLY,
73  	ETHTOOL_MSG_LINKINFO_NTF,
74  	ETHTOOL_MSG_LINKMODES_GET_REPLY,
75  	ETHTOOL_MSG_LINKMODES_NTF,
76  	ETHTOOL_MSG_LINKSTATE_GET_REPLY,
77  	ETHTOOL_MSG_DEBUG_GET_REPLY,
78  	ETHTOOL_MSG_DEBUG_NTF,
79  	ETHTOOL_MSG_WOL_GET_REPLY,
80  	ETHTOOL_MSG_WOL_NTF,
81  	ETHTOOL_MSG_FEATURES_GET_REPLY,
82  	ETHTOOL_MSG_FEATURES_SET_REPLY,
83  	ETHTOOL_MSG_FEATURES_NTF,
84  	ETHTOOL_MSG_PRIVFLAGS_GET_REPLY,
85  	ETHTOOL_MSG_PRIVFLAGS_NTF,
86  	ETHTOOL_MSG_RINGS_GET_REPLY,
87  	ETHTOOL_MSG_RINGS_NTF,
88  	ETHTOOL_MSG_CHANNELS_GET_REPLY,
89  	ETHTOOL_MSG_CHANNELS_NTF,
90  	ETHTOOL_MSG_COALESCE_GET_REPLY,
91  	ETHTOOL_MSG_COALESCE_NTF,
92  	ETHTOOL_MSG_PAUSE_GET_REPLY,
93  	ETHTOOL_MSG_PAUSE_NTF,
94  	ETHTOOL_MSG_EEE_GET_REPLY,
95  	ETHTOOL_MSG_EEE_NTF,
96  	ETHTOOL_MSG_TSINFO_GET_REPLY,
97  	ETHTOOL_MSG_CABLE_TEST_NTF,
98  	ETHTOOL_MSG_CABLE_TEST_TDR_NTF,
99  	ETHTOOL_MSG_TUNNEL_INFO_GET_REPLY,
100  	ETHTOOL_MSG_FEC_GET_REPLY,
101  	ETHTOOL_MSG_FEC_NTF,
102  	ETHTOOL_MSG_MODULE_EEPROM_GET_REPLY,
103  	ETHTOOL_MSG_STATS_GET_REPLY,
104  	ETHTOOL_MSG_PHC_VCLOCKS_GET_REPLY,
105  	ETHTOOL_MSG_MODULE_GET_REPLY,
106  	ETHTOOL_MSG_MODULE_NTF,
107  	ETHTOOL_MSG_PSE_GET_REPLY,
108  	ETHTOOL_MSG_RSS_GET_REPLY,
109  	ETHTOOL_MSG_PLCA_GET_CFG_REPLY,
110  	ETHTOOL_MSG_PLCA_GET_STATUS_REPLY,
111  	ETHTOOL_MSG_PLCA_NTF,
112  	ETHTOOL_MSG_MM_GET_REPLY,
113  	ETHTOOL_MSG_MM_NTF,
114  	ETHTOOL_MSG_MODULE_FW_FLASH_NTF,
115  	ETHTOOL_MSG_PHY_GET_REPLY,
116  	ETHTOOL_MSG_PHY_NTF,
117  
118  	/* add new constants above here */
119  	__ETHTOOL_MSG_KERNEL_CNT,
120  	ETHTOOL_MSG_KERNEL_MAX = __ETHTOOL_MSG_KERNEL_CNT - 1
121  };
122  
123  /* request header */
124  
125  enum ethtool_header_flags {
126  	ETHTOOL_FLAG_COMPACT_BITSETS	= 1 << 0,	/* use compact bitsets in reply */
127  	ETHTOOL_FLAG_OMIT_REPLY		= 1 << 1,	/* provide optional reply for SET or ACT requests */
128  	ETHTOOL_FLAG_STATS		= 1 << 2,	/* request statistics, if supported by the driver */
129  };
130  
131  #define ETHTOOL_FLAG_ALL (ETHTOOL_FLAG_COMPACT_BITSETS | \
132  			  ETHTOOL_FLAG_OMIT_REPLY | \
133  			  ETHTOOL_FLAG_STATS)
134  
135  enum {
136  	ETHTOOL_A_HEADER_UNSPEC,
137  	ETHTOOL_A_HEADER_DEV_INDEX,		/* u32 */
138  	ETHTOOL_A_HEADER_DEV_NAME,		/* string */
139  	ETHTOOL_A_HEADER_FLAGS,			/* u32 - ETHTOOL_FLAG_* */
140  	ETHTOOL_A_HEADER_PHY_INDEX,		/* u32 */
141  
142  	/* add new constants above here */
143  	__ETHTOOL_A_HEADER_CNT,
144  	ETHTOOL_A_HEADER_MAX = __ETHTOOL_A_HEADER_CNT - 1
145  };
146  
147  /* bit sets */
148  
149  enum {
150  	ETHTOOL_A_BITSET_BIT_UNSPEC,
151  	ETHTOOL_A_BITSET_BIT_INDEX,		/* u32 */
152  	ETHTOOL_A_BITSET_BIT_NAME,		/* string */
153  	ETHTOOL_A_BITSET_BIT_VALUE,		/* flag */
154  
155  	/* add new constants above here */
156  	__ETHTOOL_A_BITSET_BIT_CNT,
157  	ETHTOOL_A_BITSET_BIT_MAX = __ETHTOOL_A_BITSET_BIT_CNT - 1
158  };
159  
160  enum {
161  	ETHTOOL_A_BITSET_BITS_UNSPEC,
162  	ETHTOOL_A_BITSET_BITS_BIT,		/* nest - _A_BITSET_BIT_* */
163  
164  	/* add new constants above here */
165  	__ETHTOOL_A_BITSET_BITS_CNT,
166  	ETHTOOL_A_BITSET_BITS_MAX = __ETHTOOL_A_BITSET_BITS_CNT - 1
167  };
168  
169  enum {
170  	ETHTOOL_A_BITSET_UNSPEC,
171  	ETHTOOL_A_BITSET_NOMASK,		/* flag */
172  	ETHTOOL_A_BITSET_SIZE,			/* u32 */
173  	ETHTOOL_A_BITSET_BITS,			/* nest - _A_BITSET_BITS_* */
174  	ETHTOOL_A_BITSET_VALUE,			/* binary */
175  	ETHTOOL_A_BITSET_MASK,			/* binary */
176  
177  	/* add new constants above here */
178  	__ETHTOOL_A_BITSET_CNT,
179  	ETHTOOL_A_BITSET_MAX = __ETHTOOL_A_BITSET_CNT - 1
180  };
181  
182  /* string sets */
183  
184  enum {
185  	ETHTOOL_A_STRING_UNSPEC,
186  	ETHTOOL_A_STRING_INDEX,			/* u32 */
187  	ETHTOOL_A_STRING_VALUE,			/* string */
188  
189  	/* add new constants above here */
190  	__ETHTOOL_A_STRING_CNT,
191  	ETHTOOL_A_STRING_MAX = __ETHTOOL_A_STRING_CNT - 1
192  };
193  
194  enum {
195  	ETHTOOL_A_STRINGS_UNSPEC,
196  	ETHTOOL_A_STRINGS_STRING,		/* nest - _A_STRINGS_* */
197  
198  	/* add new constants above here */
199  	__ETHTOOL_A_STRINGS_CNT,
200  	ETHTOOL_A_STRINGS_MAX = __ETHTOOL_A_STRINGS_CNT - 1
201  };
202  
203  enum {
204  	ETHTOOL_A_STRINGSET_UNSPEC,
205  	ETHTOOL_A_STRINGSET_ID,			/* u32 */
206  	ETHTOOL_A_STRINGSET_COUNT,		/* u32 */
207  	ETHTOOL_A_STRINGSET_STRINGS,		/* nest - _A_STRINGS_* */
208  
209  	/* add new constants above here */
210  	__ETHTOOL_A_STRINGSET_CNT,
211  	ETHTOOL_A_STRINGSET_MAX = __ETHTOOL_A_STRINGSET_CNT - 1
212  };
213  
214  enum {
215  	ETHTOOL_A_STRINGSETS_UNSPEC,
216  	ETHTOOL_A_STRINGSETS_STRINGSET,		/* nest - _A_STRINGSET_* */
217  
218  	/* add new constants above here */
219  	__ETHTOOL_A_STRINGSETS_CNT,
220  	ETHTOOL_A_STRINGSETS_MAX = __ETHTOOL_A_STRINGSETS_CNT - 1
221  };
222  
223  /* STRSET */
224  
225  enum {
226  	ETHTOOL_A_STRSET_UNSPEC,
227  	ETHTOOL_A_STRSET_HEADER,		/* nest - _A_HEADER_* */
228  	ETHTOOL_A_STRSET_STRINGSETS,		/* nest - _A_STRINGSETS_* */
229  	ETHTOOL_A_STRSET_COUNTS_ONLY,		/* flag */
230  
231  	/* add new constants above here */
232  	__ETHTOOL_A_STRSET_CNT,
233  	ETHTOOL_A_STRSET_MAX = __ETHTOOL_A_STRSET_CNT - 1
234  };
235  
236  /* LINKINFO */
237  
238  enum {
239  	ETHTOOL_A_LINKINFO_UNSPEC,
240  	ETHTOOL_A_LINKINFO_HEADER,		/* nest - _A_HEADER_* */
241  	ETHTOOL_A_LINKINFO_PORT,		/* u8 */
242  	ETHTOOL_A_LINKINFO_PHYADDR,		/* u8 */
243  	ETHTOOL_A_LINKINFO_TP_MDIX,		/* u8 */
244  	ETHTOOL_A_LINKINFO_TP_MDIX_CTRL,	/* u8 */
245  	ETHTOOL_A_LINKINFO_TRANSCEIVER,		/* u8 */
246  
247  	/* add new constants above here */
248  	__ETHTOOL_A_LINKINFO_CNT,
249  	ETHTOOL_A_LINKINFO_MAX = __ETHTOOL_A_LINKINFO_CNT - 1
250  };
251  
252  /* LINKMODES */
253  
254  enum {
255  	ETHTOOL_A_LINKMODES_UNSPEC,
256  	ETHTOOL_A_LINKMODES_HEADER,		/* nest - _A_HEADER_* */
257  	ETHTOOL_A_LINKMODES_AUTONEG,		/* u8 */
258  	ETHTOOL_A_LINKMODES_OURS,		/* bitset */
259  	ETHTOOL_A_LINKMODES_PEER,		/* bitset */
260  	ETHTOOL_A_LINKMODES_SPEED,		/* u32 */
261  	ETHTOOL_A_LINKMODES_DUPLEX,		/* u8 */
262  	ETHTOOL_A_LINKMODES_MASTER_SLAVE_CFG,	/* u8 */
263  	ETHTOOL_A_LINKMODES_MASTER_SLAVE_STATE,	/* u8 */
264  	ETHTOOL_A_LINKMODES_LANES,		/* u32 */
265  	ETHTOOL_A_LINKMODES_RATE_MATCHING,	/* u8 */
266  
267  	/* add new constants above here */
268  	__ETHTOOL_A_LINKMODES_CNT,
269  	ETHTOOL_A_LINKMODES_MAX = __ETHTOOL_A_LINKMODES_CNT - 1
270  };
271  
272  /* LINKSTATE */
273  
274  enum {
275  	ETHTOOL_A_LINKSTATE_UNSPEC,
276  	ETHTOOL_A_LINKSTATE_HEADER,		/* nest - _A_HEADER_* */
277  	ETHTOOL_A_LINKSTATE_LINK,		/* u8 */
278  	ETHTOOL_A_LINKSTATE_SQI,		/* u32 */
279  	ETHTOOL_A_LINKSTATE_SQI_MAX,		/* u32 */
280  	ETHTOOL_A_LINKSTATE_EXT_STATE,		/* u8 */
281  	ETHTOOL_A_LINKSTATE_EXT_SUBSTATE,	/* u8 */
282  	ETHTOOL_A_LINKSTATE_EXT_DOWN_CNT,	/* u32 */
283  
284  	/* add new constants above here */
285  	__ETHTOOL_A_LINKSTATE_CNT,
286  	ETHTOOL_A_LINKSTATE_MAX = __ETHTOOL_A_LINKSTATE_CNT - 1
287  };
288  
289  /* DEBUG */
290  
291  enum {
292  	ETHTOOL_A_DEBUG_UNSPEC,
293  	ETHTOOL_A_DEBUG_HEADER,			/* nest - _A_HEADER_* */
294  	ETHTOOL_A_DEBUG_MSGMASK,		/* bitset */
295  
296  	/* add new constants above here */
297  	__ETHTOOL_A_DEBUG_CNT,
298  	ETHTOOL_A_DEBUG_MAX = __ETHTOOL_A_DEBUG_CNT - 1
299  };
300  
301  /* WOL */
302  
303  enum {
304  	ETHTOOL_A_WOL_UNSPEC,
305  	ETHTOOL_A_WOL_HEADER,			/* nest - _A_HEADER_* */
306  	ETHTOOL_A_WOL_MODES,			/* bitset */
307  	ETHTOOL_A_WOL_SOPASS,			/* binary */
308  
309  	/* add new constants above here */
310  	__ETHTOOL_A_WOL_CNT,
311  	ETHTOOL_A_WOL_MAX = __ETHTOOL_A_WOL_CNT - 1
312  };
313  
314  /* FEATURES */
315  
316  enum {
317  	ETHTOOL_A_FEATURES_UNSPEC,
318  	ETHTOOL_A_FEATURES_HEADER,			/* nest - _A_HEADER_* */
319  	ETHTOOL_A_FEATURES_HW,				/* bitset */
320  	ETHTOOL_A_FEATURES_WANTED,			/* bitset */
321  	ETHTOOL_A_FEATURES_ACTIVE,			/* bitset */
322  	ETHTOOL_A_FEATURES_NOCHANGE,			/* bitset */
323  
324  	/* add new constants above here */
325  	__ETHTOOL_A_FEATURES_CNT,
326  	ETHTOOL_A_FEATURES_MAX = __ETHTOOL_A_FEATURES_CNT - 1
327  };
328  
329  /* PRIVFLAGS */
330  
331  enum {
332  	ETHTOOL_A_PRIVFLAGS_UNSPEC,
333  	ETHTOOL_A_PRIVFLAGS_HEADER,			/* nest - _A_HEADER_* */
334  	ETHTOOL_A_PRIVFLAGS_FLAGS,			/* bitset */
335  
336  	/* add new constants above here */
337  	__ETHTOOL_A_PRIVFLAGS_CNT,
338  	ETHTOOL_A_PRIVFLAGS_MAX = __ETHTOOL_A_PRIVFLAGS_CNT - 1
339  };
340  
341  /* RINGS */
342  
343  enum {
344  	ETHTOOL_TCP_DATA_SPLIT_UNKNOWN = 0,
345  	ETHTOOL_TCP_DATA_SPLIT_DISABLED,
346  	ETHTOOL_TCP_DATA_SPLIT_ENABLED,
347  };
348  
349  enum {
350  	ETHTOOL_A_RINGS_UNSPEC,
351  	ETHTOOL_A_RINGS_HEADER,				/* nest - _A_HEADER_* */
352  	ETHTOOL_A_RINGS_RX_MAX,				/* u32 */
353  	ETHTOOL_A_RINGS_RX_MINI_MAX,			/* u32 */
354  	ETHTOOL_A_RINGS_RX_JUMBO_MAX,			/* u32 */
355  	ETHTOOL_A_RINGS_TX_MAX,				/* u32 */
356  	ETHTOOL_A_RINGS_RX,				/* u32 */
357  	ETHTOOL_A_RINGS_RX_MINI,			/* u32 */
358  	ETHTOOL_A_RINGS_RX_JUMBO,			/* u32 */
359  	ETHTOOL_A_RINGS_TX,				/* u32 */
360  	ETHTOOL_A_RINGS_RX_BUF_LEN,                     /* u32 */
361  	ETHTOOL_A_RINGS_TCP_DATA_SPLIT,			/* u8 */
362  	ETHTOOL_A_RINGS_CQE_SIZE,			/* u32 */
363  	ETHTOOL_A_RINGS_TX_PUSH,			/* u8 */
364  	ETHTOOL_A_RINGS_RX_PUSH,			/* u8 */
365  	ETHTOOL_A_RINGS_TX_PUSH_BUF_LEN,		/* u32 */
366  	ETHTOOL_A_RINGS_TX_PUSH_BUF_LEN_MAX,		/* u32 */
367  
368  	/* add new constants above here */
369  	__ETHTOOL_A_RINGS_CNT,
370  	ETHTOOL_A_RINGS_MAX = (__ETHTOOL_A_RINGS_CNT - 1)
371  };
372  
373  /* CHANNELS */
374  
375  enum {
376  	ETHTOOL_A_CHANNELS_UNSPEC,
377  	ETHTOOL_A_CHANNELS_HEADER,			/* nest - _A_HEADER_* */
378  	ETHTOOL_A_CHANNELS_RX_MAX,			/* u32 */
379  	ETHTOOL_A_CHANNELS_TX_MAX,			/* u32 */
380  	ETHTOOL_A_CHANNELS_OTHER_MAX,			/* u32 */
381  	ETHTOOL_A_CHANNELS_COMBINED_MAX,		/* u32 */
382  	ETHTOOL_A_CHANNELS_RX_COUNT,			/* u32 */
383  	ETHTOOL_A_CHANNELS_TX_COUNT,			/* u32 */
384  	ETHTOOL_A_CHANNELS_OTHER_COUNT,			/* u32 */
385  	ETHTOOL_A_CHANNELS_COMBINED_COUNT,		/* u32 */
386  
387  	/* add new constants above here */
388  	__ETHTOOL_A_CHANNELS_CNT,
389  	ETHTOOL_A_CHANNELS_MAX = (__ETHTOOL_A_CHANNELS_CNT - 1)
390  };
391  
392  /* COALESCE */
393  
394  enum {
395  	ETHTOOL_A_COALESCE_UNSPEC,
396  	ETHTOOL_A_COALESCE_HEADER,			/* nest - _A_HEADER_* */
397  	ETHTOOL_A_COALESCE_RX_USECS,			/* u32 */
398  	ETHTOOL_A_COALESCE_RX_MAX_FRAMES,		/* u32 */
399  	ETHTOOL_A_COALESCE_RX_USECS_IRQ,		/* u32 */
400  	ETHTOOL_A_COALESCE_RX_MAX_FRAMES_IRQ,		/* u32 */
401  	ETHTOOL_A_COALESCE_TX_USECS,			/* u32 */
402  	ETHTOOL_A_COALESCE_TX_MAX_FRAMES,		/* u32 */
403  	ETHTOOL_A_COALESCE_TX_USECS_IRQ,		/* u32 */
404  	ETHTOOL_A_COALESCE_TX_MAX_FRAMES_IRQ,		/* u32 */
405  	ETHTOOL_A_COALESCE_STATS_BLOCK_USECS,		/* u32 */
406  	ETHTOOL_A_COALESCE_USE_ADAPTIVE_RX,		/* u8 */
407  	ETHTOOL_A_COALESCE_USE_ADAPTIVE_TX,		/* u8 */
408  	ETHTOOL_A_COALESCE_PKT_RATE_LOW,		/* u32 */
409  	ETHTOOL_A_COALESCE_RX_USECS_LOW,		/* u32 */
410  	ETHTOOL_A_COALESCE_RX_MAX_FRAMES_LOW,		/* u32 */
411  	ETHTOOL_A_COALESCE_TX_USECS_LOW,		/* u32 */
412  	ETHTOOL_A_COALESCE_TX_MAX_FRAMES_LOW,		/* u32 */
413  	ETHTOOL_A_COALESCE_PKT_RATE_HIGH,		/* u32 */
414  	ETHTOOL_A_COALESCE_RX_USECS_HIGH,		/* u32 */
415  	ETHTOOL_A_COALESCE_RX_MAX_FRAMES_HIGH,		/* u32 */
416  	ETHTOOL_A_COALESCE_TX_USECS_HIGH,		/* u32 */
417  	ETHTOOL_A_COALESCE_TX_MAX_FRAMES_HIGH,		/* u32 */
418  	ETHTOOL_A_COALESCE_RATE_SAMPLE_INTERVAL,	/* u32 */
419  	ETHTOOL_A_COALESCE_USE_CQE_MODE_TX,		/* u8 */
420  	ETHTOOL_A_COALESCE_USE_CQE_MODE_RX,		/* u8 */
421  	ETHTOOL_A_COALESCE_TX_AGGR_MAX_BYTES,		/* u32 */
422  	ETHTOOL_A_COALESCE_TX_AGGR_MAX_FRAMES,		/* u32 */
423  	ETHTOOL_A_COALESCE_TX_AGGR_TIME_USECS,		/* u32 */
424  	/* nest - _A_PROFILE_IRQ_MODERATION */
425  	ETHTOOL_A_COALESCE_RX_PROFILE,
426  	/* nest - _A_PROFILE_IRQ_MODERATION */
427  	ETHTOOL_A_COALESCE_TX_PROFILE,
428  
429  	/* add new constants above here */
430  	__ETHTOOL_A_COALESCE_CNT,
431  	ETHTOOL_A_COALESCE_MAX = (__ETHTOOL_A_COALESCE_CNT - 1)
432  };
433  
434  enum {
435  	ETHTOOL_A_PROFILE_UNSPEC,
436  	/* nest, _A_IRQ_MODERATION_* */
437  	ETHTOOL_A_PROFILE_IRQ_MODERATION,
438  	__ETHTOOL_A_PROFILE_CNT,
439  	ETHTOOL_A_PROFILE_MAX = (__ETHTOOL_A_PROFILE_CNT - 1)
440  };
441  
442  enum {
443  	ETHTOOL_A_IRQ_MODERATION_UNSPEC,
444  	ETHTOOL_A_IRQ_MODERATION_USEC,			/* u32 */
445  	ETHTOOL_A_IRQ_MODERATION_PKTS,			/* u32 */
446  	ETHTOOL_A_IRQ_MODERATION_COMPS,			/* u32 */
447  
448  	__ETHTOOL_A_IRQ_MODERATION_CNT,
449  	ETHTOOL_A_IRQ_MODERATION_MAX = (__ETHTOOL_A_IRQ_MODERATION_CNT - 1)
450  };
451  
452  /* PAUSE */
453  
454  enum {
455  	ETHTOOL_A_PAUSE_UNSPEC,
456  	ETHTOOL_A_PAUSE_HEADER,				/* nest - _A_HEADER_* */
457  	ETHTOOL_A_PAUSE_AUTONEG,			/* u8 */
458  	ETHTOOL_A_PAUSE_RX,				/* u8 */
459  	ETHTOOL_A_PAUSE_TX,				/* u8 */
460  	ETHTOOL_A_PAUSE_STATS,				/* nest - _PAUSE_STAT_* */
461  	ETHTOOL_A_PAUSE_STATS_SRC,			/* u32 */
462  
463  	/* add new constants above here */
464  	__ETHTOOL_A_PAUSE_CNT,
465  	ETHTOOL_A_PAUSE_MAX = (__ETHTOOL_A_PAUSE_CNT - 1)
466  };
467  
468  enum {
469  	ETHTOOL_A_PAUSE_STAT_UNSPEC,
470  	ETHTOOL_A_PAUSE_STAT_PAD,
471  
472  	ETHTOOL_A_PAUSE_STAT_TX_FRAMES,
473  	ETHTOOL_A_PAUSE_STAT_RX_FRAMES,
474  
475  	/* add new constants above here
476  	 * adjust ETHTOOL_PAUSE_STAT_CNT if adding non-stats!
477  	 */
478  	__ETHTOOL_A_PAUSE_STAT_CNT,
479  	ETHTOOL_A_PAUSE_STAT_MAX = (__ETHTOOL_A_PAUSE_STAT_CNT - 1)
480  };
481  
482  /* EEE */
483  
484  enum {
485  	ETHTOOL_A_EEE_UNSPEC,
486  	ETHTOOL_A_EEE_HEADER,				/* nest - _A_HEADER_* */
487  	ETHTOOL_A_EEE_MODES_OURS,			/* bitset */
488  	ETHTOOL_A_EEE_MODES_PEER,			/* bitset */
489  	ETHTOOL_A_EEE_ACTIVE,				/* u8 */
490  	ETHTOOL_A_EEE_ENABLED,				/* u8 */
491  	ETHTOOL_A_EEE_TX_LPI_ENABLED,			/* u8 */
492  	ETHTOOL_A_EEE_TX_LPI_TIMER,			/* u32 */
493  
494  	/* add new constants above here */
495  	__ETHTOOL_A_EEE_CNT,
496  	ETHTOOL_A_EEE_MAX = (__ETHTOOL_A_EEE_CNT - 1)
497  };
498  
499  /* TSINFO */
500  
501  enum {
502  	ETHTOOL_A_TSINFO_UNSPEC,
503  	ETHTOOL_A_TSINFO_HEADER,			/* nest - _A_HEADER_* */
504  	ETHTOOL_A_TSINFO_TIMESTAMPING,			/* bitset */
505  	ETHTOOL_A_TSINFO_TX_TYPES,			/* bitset */
506  	ETHTOOL_A_TSINFO_RX_FILTERS,			/* bitset */
507  	ETHTOOL_A_TSINFO_PHC_INDEX,			/* u32 */
508  	ETHTOOL_A_TSINFO_STATS,				/* nest - _A_TSINFO_STAT */
509  
510  	/* add new constants above here */
511  	__ETHTOOL_A_TSINFO_CNT,
512  	ETHTOOL_A_TSINFO_MAX = (__ETHTOOL_A_TSINFO_CNT - 1)
513  };
514  
515  enum {
516  	ETHTOOL_A_TS_STAT_UNSPEC,
517  
518  	ETHTOOL_A_TS_STAT_TX_PKTS,			/* uint */
519  	ETHTOOL_A_TS_STAT_TX_LOST,			/* uint */
520  	ETHTOOL_A_TS_STAT_TX_ERR,			/* uint */
521  
522  	/* add new constants above here */
523  	__ETHTOOL_A_TS_STAT_CNT,
524  	ETHTOOL_A_TS_STAT_MAX = (__ETHTOOL_A_TS_STAT_CNT - 1)
525  
526  };
527  
528  /* PHC VCLOCKS */
529  
530  enum {
531  	ETHTOOL_A_PHC_VCLOCKS_UNSPEC,
532  	ETHTOOL_A_PHC_VCLOCKS_HEADER,			/* nest - _A_HEADER_* */
533  	ETHTOOL_A_PHC_VCLOCKS_NUM,			/* u32 */
534  	ETHTOOL_A_PHC_VCLOCKS_INDEX,			/* array, s32 */
535  
536  	/* add new constants above here */
537  	__ETHTOOL_A_PHC_VCLOCKS_CNT,
538  	ETHTOOL_A_PHC_VCLOCKS_MAX = (__ETHTOOL_A_PHC_VCLOCKS_CNT - 1)
539  };
540  
541  /* CABLE TEST */
542  
543  enum {
544  	ETHTOOL_A_CABLE_TEST_UNSPEC,
545  	ETHTOOL_A_CABLE_TEST_HEADER,		/* nest - _A_HEADER_* */
546  
547  	/* add new constants above here */
548  	__ETHTOOL_A_CABLE_TEST_CNT,
549  	ETHTOOL_A_CABLE_TEST_MAX = __ETHTOOL_A_CABLE_TEST_CNT - 1
550  };
551  
552  /* CABLE TEST NOTIFY */
553  enum {
554  	ETHTOOL_A_CABLE_RESULT_CODE_UNSPEC,
555  	ETHTOOL_A_CABLE_RESULT_CODE_OK,
556  	ETHTOOL_A_CABLE_RESULT_CODE_OPEN,
557  	ETHTOOL_A_CABLE_RESULT_CODE_SAME_SHORT,
558  	ETHTOOL_A_CABLE_RESULT_CODE_CROSS_SHORT,
559  	/* detected reflection caused by the impedance discontinuity between
560  	 * a regular 100 Ohm cable and a part with the abnormal impedance value
561  	 */
562  	ETHTOOL_A_CABLE_RESULT_CODE_IMPEDANCE_MISMATCH,
563  	/* TDR not possible due to high noise level */
564  	ETHTOOL_A_CABLE_RESULT_CODE_NOISE,
565  	/* TDR resolution not possible / out of distance */
566  	ETHTOOL_A_CABLE_RESULT_CODE_RESOLUTION_NOT_POSSIBLE,
567  };
568  
569  enum {
570  	ETHTOOL_A_CABLE_PAIR_A,
571  	ETHTOOL_A_CABLE_PAIR_B,
572  	ETHTOOL_A_CABLE_PAIR_C,
573  	ETHTOOL_A_CABLE_PAIR_D,
574  };
575  
576  /* Information source for specific results. */
577  enum {
578  	ETHTOOL_A_CABLE_INF_SRC_UNSPEC,
579  	/* Results provided by the Time Domain Reflectometry (TDR) */
580  	ETHTOOL_A_CABLE_INF_SRC_TDR,
581  	/* Results provided by the Active Link Cable Diagnostic (ALCD) */
582  	ETHTOOL_A_CABLE_INF_SRC_ALCD,
583  };
584  
585  enum {
586  	ETHTOOL_A_CABLE_RESULT_UNSPEC,
587  	ETHTOOL_A_CABLE_RESULT_PAIR,		/* u8 ETHTOOL_A_CABLE_PAIR_ */
588  	ETHTOOL_A_CABLE_RESULT_CODE,		/* u8 ETHTOOL_A_CABLE_RESULT_CODE_ */
589  	ETHTOOL_A_CABLE_RESULT_SRC,		/* u32 ETHTOOL_A_CABLE_INF_SRC_ */
590  
591  	__ETHTOOL_A_CABLE_RESULT_CNT,
592  	ETHTOOL_A_CABLE_RESULT_MAX = (__ETHTOOL_A_CABLE_RESULT_CNT - 1)
593  };
594  
595  enum {
596  	ETHTOOL_A_CABLE_FAULT_LENGTH_UNSPEC,
597  	ETHTOOL_A_CABLE_FAULT_LENGTH_PAIR,	/* u8 ETHTOOL_A_CABLE_PAIR_ */
598  	ETHTOOL_A_CABLE_FAULT_LENGTH_CM,	/* u32 */
599  	ETHTOOL_A_CABLE_FAULT_LENGTH_SRC,	/* u32 ETHTOOL_A_CABLE_INF_SRC_ */
600  
601  	__ETHTOOL_A_CABLE_FAULT_LENGTH_CNT,
602  	ETHTOOL_A_CABLE_FAULT_LENGTH_MAX = (__ETHTOOL_A_CABLE_FAULT_LENGTH_CNT - 1)
603  };
604  
605  enum {
606  	ETHTOOL_A_CABLE_TEST_NTF_STATUS_UNSPEC,
607  	ETHTOOL_A_CABLE_TEST_NTF_STATUS_STARTED,
608  	ETHTOOL_A_CABLE_TEST_NTF_STATUS_COMPLETED
609  };
610  
611  enum {
612  	ETHTOOL_A_CABLE_NEST_UNSPEC,
613  	ETHTOOL_A_CABLE_NEST_RESULT,		/* nest - ETHTOOL_A_CABLE_RESULT_ */
614  	ETHTOOL_A_CABLE_NEST_FAULT_LENGTH,	/* nest - ETHTOOL_A_CABLE_FAULT_LENGTH_ */
615  	__ETHTOOL_A_CABLE_NEST_CNT,
616  	ETHTOOL_A_CABLE_NEST_MAX = (__ETHTOOL_A_CABLE_NEST_CNT - 1)
617  };
618  
619  enum {
620  	ETHTOOL_A_CABLE_TEST_NTF_UNSPEC,
621  	ETHTOOL_A_CABLE_TEST_NTF_HEADER,	/* nest - ETHTOOL_A_HEADER_* */
622  	ETHTOOL_A_CABLE_TEST_NTF_STATUS,	/* u8 - _STARTED/_COMPLETE */
623  	ETHTOOL_A_CABLE_TEST_NTF_NEST,		/* nest - of results: */
624  
625  	__ETHTOOL_A_CABLE_TEST_NTF_CNT,
626  	ETHTOOL_A_CABLE_TEST_NTF_MAX = (__ETHTOOL_A_CABLE_TEST_NTF_CNT - 1)
627  };
628  
629  /* CABLE TEST TDR */
630  
631  enum {
632  	ETHTOOL_A_CABLE_TEST_TDR_CFG_UNSPEC,
633  	ETHTOOL_A_CABLE_TEST_TDR_CFG_FIRST,		/* u32 */
634  	ETHTOOL_A_CABLE_TEST_TDR_CFG_LAST,		/* u32 */
635  	ETHTOOL_A_CABLE_TEST_TDR_CFG_STEP,		/* u32 */
636  	ETHTOOL_A_CABLE_TEST_TDR_CFG_PAIR,		/* u8 */
637  
638  	/* add new constants above here */
639  	__ETHTOOL_A_CABLE_TEST_TDR_CFG_CNT,
640  	ETHTOOL_A_CABLE_TEST_TDR_CFG_MAX = __ETHTOOL_A_CABLE_TEST_TDR_CFG_CNT - 1
641  };
642  
643  enum {
644  	ETHTOOL_A_CABLE_TEST_TDR_UNSPEC,
645  	ETHTOOL_A_CABLE_TEST_TDR_HEADER,	/* nest - _A_HEADER_* */
646  	ETHTOOL_A_CABLE_TEST_TDR_CFG,		/* nest - *_TDR_CFG_* */
647  
648  	/* add new constants above here */
649  	__ETHTOOL_A_CABLE_TEST_TDR_CNT,
650  	ETHTOOL_A_CABLE_TEST_TDR_MAX = __ETHTOOL_A_CABLE_TEST_TDR_CNT - 1
651  };
652  
653  /* CABLE TEST TDR NOTIFY */
654  
655  enum {
656  	ETHTOOL_A_CABLE_AMPLITUDE_UNSPEC,
657  	ETHTOOL_A_CABLE_AMPLITUDE_PAIR,         /* u8 */
658  	ETHTOOL_A_CABLE_AMPLITUDE_mV,           /* s16 */
659  
660  	__ETHTOOL_A_CABLE_AMPLITUDE_CNT,
661  	ETHTOOL_A_CABLE_AMPLITUDE_MAX = (__ETHTOOL_A_CABLE_AMPLITUDE_CNT - 1)
662  };
663  
664  enum {
665  	ETHTOOL_A_CABLE_PULSE_UNSPEC,
666  	ETHTOOL_A_CABLE_PULSE_mV,		/* s16 */
667  
668  	__ETHTOOL_A_CABLE_PULSE_CNT,
669  	ETHTOOL_A_CABLE_PULSE_MAX = (__ETHTOOL_A_CABLE_PULSE_CNT - 1)
670  };
671  
672  enum {
673  	ETHTOOL_A_CABLE_STEP_UNSPEC,
674  	ETHTOOL_A_CABLE_STEP_FIRST_DISTANCE,	/* u32 */
675  	ETHTOOL_A_CABLE_STEP_LAST_DISTANCE,	/* u32 */
676  	ETHTOOL_A_CABLE_STEP_STEP_DISTANCE,	/* u32 */
677  
678  	__ETHTOOL_A_CABLE_STEP_CNT,
679  	ETHTOOL_A_CABLE_STEP_MAX = (__ETHTOOL_A_CABLE_STEP_CNT - 1)
680  };
681  
682  enum {
683  	ETHTOOL_A_CABLE_TDR_NEST_UNSPEC,
684  	ETHTOOL_A_CABLE_TDR_NEST_STEP,		/* nest - ETHTTOOL_A_CABLE_STEP */
685  	ETHTOOL_A_CABLE_TDR_NEST_AMPLITUDE,	/* nest - ETHTOOL_A_CABLE_AMPLITUDE */
686  	ETHTOOL_A_CABLE_TDR_NEST_PULSE,		/* nest - ETHTOOL_A_CABLE_PULSE */
687  
688  	__ETHTOOL_A_CABLE_TDR_NEST_CNT,
689  	ETHTOOL_A_CABLE_TDR_NEST_MAX = (__ETHTOOL_A_CABLE_TDR_NEST_CNT - 1)
690  };
691  
692  enum {
693  	ETHTOOL_A_CABLE_TEST_TDR_NTF_UNSPEC,
694  	ETHTOOL_A_CABLE_TEST_TDR_NTF_HEADER,	/* nest - ETHTOOL_A_HEADER_* */
695  	ETHTOOL_A_CABLE_TEST_TDR_NTF_STATUS,	/* u8 - _STARTED/_COMPLETE */
696  	ETHTOOL_A_CABLE_TEST_TDR_NTF_NEST,	/* nest - of results: */
697  
698  	/* add new constants above here */
699  	__ETHTOOL_A_CABLE_TEST_TDR_NTF_CNT,
700  	ETHTOOL_A_CABLE_TEST_TDR_NTF_MAX = __ETHTOOL_A_CABLE_TEST_TDR_NTF_CNT - 1
701  };
702  
703  /* TUNNEL INFO */
704  
705  enum {
706  	ETHTOOL_UDP_TUNNEL_TYPE_VXLAN,
707  	ETHTOOL_UDP_TUNNEL_TYPE_GENEVE,
708  	ETHTOOL_UDP_TUNNEL_TYPE_VXLAN_GPE,
709  
710  	__ETHTOOL_UDP_TUNNEL_TYPE_CNT
711  };
712  
713  enum {
714  	ETHTOOL_A_TUNNEL_UDP_ENTRY_UNSPEC,
715  
716  	ETHTOOL_A_TUNNEL_UDP_ENTRY_PORT,		/* be16 */
717  	ETHTOOL_A_TUNNEL_UDP_ENTRY_TYPE,		/* u32 */
718  
719  	/* add new constants above here */
720  	__ETHTOOL_A_TUNNEL_UDP_ENTRY_CNT,
721  	ETHTOOL_A_TUNNEL_UDP_ENTRY_MAX = (__ETHTOOL_A_TUNNEL_UDP_ENTRY_CNT - 1)
722  };
723  
724  enum {
725  	ETHTOOL_A_TUNNEL_UDP_TABLE_UNSPEC,
726  
727  	ETHTOOL_A_TUNNEL_UDP_TABLE_SIZE,		/* u32 */
728  	ETHTOOL_A_TUNNEL_UDP_TABLE_TYPES,		/* bitset */
729  	ETHTOOL_A_TUNNEL_UDP_TABLE_ENTRY,		/* nest - _UDP_ENTRY_* */
730  
731  	/* add new constants above here */
732  	__ETHTOOL_A_TUNNEL_UDP_TABLE_CNT,
733  	ETHTOOL_A_TUNNEL_UDP_TABLE_MAX = (__ETHTOOL_A_TUNNEL_UDP_TABLE_CNT - 1)
734  };
735  
736  enum {
737  	ETHTOOL_A_TUNNEL_UDP_UNSPEC,
738  
739  	ETHTOOL_A_TUNNEL_UDP_TABLE,			/* nest - _UDP_TABLE_* */
740  
741  	/* add new constants above here */
742  	__ETHTOOL_A_TUNNEL_UDP_CNT,
743  	ETHTOOL_A_TUNNEL_UDP_MAX = (__ETHTOOL_A_TUNNEL_UDP_CNT - 1)
744  };
745  
746  enum {
747  	ETHTOOL_A_TUNNEL_INFO_UNSPEC,
748  	ETHTOOL_A_TUNNEL_INFO_HEADER,			/* nest - _A_HEADER_* */
749  
750  	ETHTOOL_A_TUNNEL_INFO_UDP_PORTS,		/* nest - _UDP_TABLE */
751  
752  	/* add new constants above here */
753  	__ETHTOOL_A_TUNNEL_INFO_CNT,
754  	ETHTOOL_A_TUNNEL_INFO_MAX = (__ETHTOOL_A_TUNNEL_INFO_CNT - 1)
755  };
756  
757  /* FEC */
758  
759  enum {
760  	ETHTOOL_A_FEC_UNSPEC,
761  	ETHTOOL_A_FEC_HEADER,				/* nest - _A_HEADER_* */
762  	ETHTOOL_A_FEC_MODES,				/* bitset */
763  	ETHTOOL_A_FEC_AUTO,				/* u8 */
764  	ETHTOOL_A_FEC_ACTIVE,				/* u32 */
765  	ETHTOOL_A_FEC_STATS,				/* nest - _A_FEC_STAT */
766  
767  	__ETHTOOL_A_FEC_CNT,
768  	ETHTOOL_A_FEC_MAX = (__ETHTOOL_A_FEC_CNT - 1)
769  };
770  
771  enum {
772  	ETHTOOL_A_FEC_STAT_UNSPEC,
773  	ETHTOOL_A_FEC_STAT_PAD,
774  
775  	ETHTOOL_A_FEC_STAT_CORRECTED,			/* array, u64 */
776  	ETHTOOL_A_FEC_STAT_UNCORR,			/* array, u64 */
777  	ETHTOOL_A_FEC_STAT_CORR_BITS,			/* array, u64 */
778  
779  	/* add new constants above here */
780  	__ETHTOOL_A_FEC_STAT_CNT,
781  	ETHTOOL_A_FEC_STAT_MAX = (__ETHTOOL_A_FEC_STAT_CNT - 1)
782  };
783  
784  /* MODULE EEPROM */
785  
786  enum {
787  	ETHTOOL_A_MODULE_EEPROM_UNSPEC,
788  	ETHTOOL_A_MODULE_EEPROM_HEADER,			/* nest - _A_HEADER_* */
789  
790  	ETHTOOL_A_MODULE_EEPROM_OFFSET,			/* u32 */
791  	ETHTOOL_A_MODULE_EEPROM_LENGTH,			/* u32 */
792  	ETHTOOL_A_MODULE_EEPROM_PAGE,			/* u8 */
793  	ETHTOOL_A_MODULE_EEPROM_BANK,			/* u8 */
794  	ETHTOOL_A_MODULE_EEPROM_I2C_ADDRESS,		/* u8 */
795  	ETHTOOL_A_MODULE_EEPROM_DATA,			/* binary */
796  
797  	__ETHTOOL_A_MODULE_EEPROM_CNT,
798  	ETHTOOL_A_MODULE_EEPROM_MAX = (__ETHTOOL_A_MODULE_EEPROM_CNT - 1)
799  };
800  
801  /* STATS */
802  
803  enum {
804  	ETHTOOL_A_STATS_UNSPEC,
805  	ETHTOOL_A_STATS_PAD,
806  	ETHTOOL_A_STATS_HEADER,			/* nest - _A_HEADER_* */
807  	ETHTOOL_A_STATS_GROUPS,			/* bitset */
808  
809  	ETHTOOL_A_STATS_GRP,			/* nest - _A_STATS_GRP_* */
810  
811  	ETHTOOL_A_STATS_SRC,			/* u32 */
812  
813  	/* add new constants above here */
814  	__ETHTOOL_A_STATS_CNT,
815  	ETHTOOL_A_STATS_MAX = (__ETHTOOL_A_STATS_CNT - 1)
816  };
817  
818  enum {
819  	ETHTOOL_STATS_ETH_PHY,
820  	ETHTOOL_STATS_ETH_MAC,
821  	ETHTOOL_STATS_ETH_CTRL,
822  	ETHTOOL_STATS_RMON,
823  
824  	/* add new constants above here */
825  	__ETHTOOL_STATS_CNT
826  };
827  
828  enum {
829  	ETHTOOL_A_STATS_GRP_UNSPEC,
830  	ETHTOOL_A_STATS_GRP_PAD,
831  
832  	ETHTOOL_A_STATS_GRP_ID,			/* u32 */
833  	ETHTOOL_A_STATS_GRP_SS_ID,		/* u32 */
834  
835  	ETHTOOL_A_STATS_GRP_STAT,		/* nest */
836  
837  	ETHTOOL_A_STATS_GRP_HIST_RX,		/* nest */
838  	ETHTOOL_A_STATS_GRP_HIST_TX,		/* nest */
839  
840  	ETHTOOL_A_STATS_GRP_HIST_BKT_LOW,	/* u32 */
841  	ETHTOOL_A_STATS_GRP_HIST_BKT_HI,	/* u32 */
842  	ETHTOOL_A_STATS_GRP_HIST_VAL,		/* u64 */
843  
844  	/* add new constants above here */
845  	__ETHTOOL_A_STATS_GRP_CNT,
846  	ETHTOOL_A_STATS_GRP_MAX = (__ETHTOOL_A_STATS_GRP_CNT - 1)
847  };
848  
849  enum {
850  	/* 30.3.2.1.5 aSymbolErrorDuringCarrier */
851  	ETHTOOL_A_STATS_ETH_PHY_5_SYM_ERR,
852  
853  	/* add new constants above here */
854  	__ETHTOOL_A_STATS_ETH_PHY_CNT,
855  	ETHTOOL_A_STATS_ETH_PHY_MAX = (__ETHTOOL_A_STATS_ETH_PHY_CNT - 1)
856  };
857  
858  enum {
859  	/* 30.3.1.1.2 aFramesTransmittedOK */
860  	ETHTOOL_A_STATS_ETH_MAC_2_TX_PKT,
861  	/* 30.3.1.1.3 aSingleCollisionFrames */
862  	ETHTOOL_A_STATS_ETH_MAC_3_SINGLE_COL,
863  	/* 30.3.1.1.4 aMultipleCollisionFrames */
864  	ETHTOOL_A_STATS_ETH_MAC_4_MULTI_COL,
865  	/* 30.3.1.1.5 aFramesReceivedOK */
866  	ETHTOOL_A_STATS_ETH_MAC_5_RX_PKT,
867  	/* 30.3.1.1.6 aFrameCheckSequenceErrors */
868  	ETHTOOL_A_STATS_ETH_MAC_6_FCS_ERR,
869  	/* 30.3.1.1.7 aAlignmentErrors */
870  	ETHTOOL_A_STATS_ETH_MAC_7_ALIGN_ERR,
871  	/* 30.3.1.1.8 aOctetsTransmittedOK */
872  	ETHTOOL_A_STATS_ETH_MAC_8_TX_BYTES,
873  	/* 30.3.1.1.9 aFramesWithDeferredXmissions */
874  	ETHTOOL_A_STATS_ETH_MAC_9_TX_DEFER,
875  	/* 30.3.1.1.10 aLateCollisions */
876  	ETHTOOL_A_STATS_ETH_MAC_10_LATE_COL,
877  	/* 30.3.1.1.11 aFramesAbortedDueToXSColls */
878  	ETHTOOL_A_STATS_ETH_MAC_11_XS_COL,
879  	/* 30.3.1.1.12 aFramesLostDueToIntMACXmitError */
880  	ETHTOOL_A_STATS_ETH_MAC_12_TX_INT_ERR,
881  	/* 30.3.1.1.13 aCarrierSenseErrors */
882  	ETHTOOL_A_STATS_ETH_MAC_13_CS_ERR,
883  	/* 30.3.1.1.14 aOctetsReceivedOK */
884  	ETHTOOL_A_STATS_ETH_MAC_14_RX_BYTES,
885  	/* 30.3.1.1.15 aFramesLostDueToIntMACRcvError */
886  	ETHTOOL_A_STATS_ETH_MAC_15_RX_INT_ERR,
887  
888  	/* 30.3.1.1.18 aMulticastFramesXmittedOK */
889  	ETHTOOL_A_STATS_ETH_MAC_18_TX_MCAST,
890  	/* 30.3.1.1.19 aBroadcastFramesXmittedOK */
891  	ETHTOOL_A_STATS_ETH_MAC_19_TX_BCAST,
892  	/* 30.3.1.1.20 aFramesWithExcessiveDeferral */
893  	ETHTOOL_A_STATS_ETH_MAC_20_XS_DEFER,
894  	/* 30.3.1.1.21 aMulticastFramesReceivedOK */
895  	ETHTOOL_A_STATS_ETH_MAC_21_RX_MCAST,
896  	/* 30.3.1.1.22 aBroadcastFramesReceivedOK */
897  	ETHTOOL_A_STATS_ETH_MAC_22_RX_BCAST,
898  	/* 30.3.1.1.23 aInRangeLengthErrors */
899  	ETHTOOL_A_STATS_ETH_MAC_23_IR_LEN_ERR,
900  	/* 30.3.1.1.24 aOutOfRangeLengthField */
901  	ETHTOOL_A_STATS_ETH_MAC_24_OOR_LEN,
902  	/* 30.3.1.1.25 aFrameTooLongErrors */
903  	ETHTOOL_A_STATS_ETH_MAC_25_TOO_LONG_ERR,
904  
905  	/* add new constants above here */
906  	__ETHTOOL_A_STATS_ETH_MAC_CNT,
907  	ETHTOOL_A_STATS_ETH_MAC_MAX = (__ETHTOOL_A_STATS_ETH_MAC_CNT - 1)
908  };
909  
910  enum {
911  	/* 30.3.3.3 aMACControlFramesTransmitted */
912  	ETHTOOL_A_STATS_ETH_CTRL_3_TX,
913  	/* 30.3.3.4 aMACControlFramesReceived */
914  	ETHTOOL_A_STATS_ETH_CTRL_4_RX,
915  	/* 30.3.3.5 aUnsupportedOpcodesReceived */
916  	ETHTOOL_A_STATS_ETH_CTRL_5_RX_UNSUP,
917  
918  	/* add new constants above here */
919  	__ETHTOOL_A_STATS_ETH_CTRL_CNT,
920  	ETHTOOL_A_STATS_ETH_CTRL_MAX = (__ETHTOOL_A_STATS_ETH_CTRL_CNT - 1)
921  };
922  
923  enum {
924  	/* etherStatsUndersizePkts */
925  	ETHTOOL_A_STATS_RMON_UNDERSIZE,
926  	/* etherStatsOversizePkts */
927  	ETHTOOL_A_STATS_RMON_OVERSIZE,
928  	/* etherStatsFragments */
929  	ETHTOOL_A_STATS_RMON_FRAG,
930  	/* etherStatsJabbers */
931  	ETHTOOL_A_STATS_RMON_JABBER,
932  
933  	/* add new constants above here */
934  	__ETHTOOL_A_STATS_RMON_CNT,
935  	ETHTOOL_A_STATS_RMON_MAX = (__ETHTOOL_A_STATS_RMON_CNT - 1)
936  };
937  
938  /* MODULE */
939  
940  enum {
941  	ETHTOOL_A_MODULE_UNSPEC,
942  	ETHTOOL_A_MODULE_HEADER,		/* nest - _A_HEADER_* */
943  	ETHTOOL_A_MODULE_POWER_MODE_POLICY,	/* u8 */
944  	ETHTOOL_A_MODULE_POWER_MODE,		/* u8 */
945  
946  	/* add new constants above here */
947  	__ETHTOOL_A_MODULE_CNT,
948  	ETHTOOL_A_MODULE_MAX = (__ETHTOOL_A_MODULE_CNT - 1)
949  };
950  
951  /* Power Sourcing Equipment */
952  enum {
953  	ETHTOOL_A_C33_PSE_PW_LIMIT_UNSPEC,
954  	ETHTOOL_A_C33_PSE_PW_LIMIT_MIN,	/* u32 */
955  	ETHTOOL_A_C33_PSE_PW_LIMIT_MAX,	/* u32 */
956  };
957  
958  enum {
959  	ETHTOOL_A_PSE_UNSPEC,
960  	ETHTOOL_A_PSE_HEADER,			/* nest - _A_HEADER_* */
961  	ETHTOOL_A_PODL_PSE_ADMIN_STATE,		/* u32 */
962  	ETHTOOL_A_PODL_PSE_ADMIN_CONTROL,	/* u32 */
963  	ETHTOOL_A_PODL_PSE_PW_D_STATUS,		/* u32 */
964  	ETHTOOL_A_C33_PSE_ADMIN_STATE,		/* u32 */
965  	ETHTOOL_A_C33_PSE_ADMIN_CONTROL,	/* u32 */
966  	ETHTOOL_A_C33_PSE_PW_D_STATUS,		/* u32 */
967  	ETHTOOL_A_C33_PSE_PW_CLASS,		/* u32 */
968  	ETHTOOL_A_C33_PSE_ACTUAL_PW,		/* u32 */
969  	ETHTOOL_A_C33_PSE_EXT_STATE,		/* u32 */
970  	ETHTOOL_A_C33_PSE_EXT_SUBSTATE,		/* u32 */
971  	ETHTOOL_A_C33_PSE_AVAIL_PW_LIMIT,	/* u32 */
972  	ETHTOOL_A_C33_PSE_PW_LIMIT_RANGES,	/* nest - _C33_PSE_PW_LIMIT_* */
973  
974  	/* add new constants above here */
975  	__ETHTOOL_A_PSE_CNT,
976  	ETHTOOL_A_PSE_MAX = (__ETHTOOL_A_PSE_CNT - 1)
977  };
978  
979  enum {
980  	ETHTOOL_A_RSS_UNSPEC,
981  	ETHTOOL_A_RSS_HEADER,
982  	ETHTOOL_A_RSS_CONTEXT,		/* u32 */
983  	ETHTOOL_A_RSS_HFUNC,		/* u32 */
984  	ETHTOOL_A_RSS_INDIR,		/* binary */
985  	ETHTOOL_A_RSS_HKEY,		/* binary */
986  	ETHTOOL_A_RSS_INPUT_XFRM,	/* u32 */
987  	ETHTOOL_A_RSS_START_CONTEXT,	/* u32 */
988  
989  	__ETHTOOL_A_RSS_CNT,
990  	ETHTOOL_A_RSS_MAX = (__ETHTOOL_A_RSS_CNT - 1),
991  };
992  
993  /* PLCA */
994  
995  enum {
996  	ETHTOOL_A_PLCA_UNSPEC,
997  	ETHTOOL_A_PLCA_HEADER,			/* nest - _A_HEADER_* */
998  	ETHTOOL_A_PLCA_VERSION,			/* u16 */
999  	ETHTOOL_A_PLCA_ENABLED,			/* u8  */
1000  	ETHTOOL_A_PLCA_STATUS,			/* u8  */
1001  	ETHTOOL_A_PLCA_NODE_CNT,		/* u32 */
1002  	ETHTOOL_A_PLCA_NODE_ID,			/* u32 */
1003  	ETHTOOL_A_PLCA_TO_TMR,			/* u32 */
1004  	ETHTOOL_A_PLCA_BURST_CNT,		/* u32 */
1005  	ETHTOOL_A_PLCA_BURST_TMR,		/* u32 */
1006  
1007  	/* add new constants above here */
1008  	__ETHTOOL_A_PLCA_CNT,
1009  	ETHTOOL_A_PLCA_MAX = (__ETHTOOL_A_PLCA_CNT - 1)
1010  };
1011  
1012  /* MAC Merge (802.3) */
1013  
1014  enum {
1015  	ETHTOOL_A_MM_STAT_UNSPEC,
1016  	ETHTOOL_A_MM_STAT_PAD,
1017  
1018  	/* aMACMergeFrameAssErrorCount */
1019  	ETHTOOL_A_MM_STAT_REASSEMBLY_ERRORS,	/* u64 */
1020  	/* aMACMergeFrameSmdErrorCount */
1021  	ETHTOOL_A_MM_STAT_SMD_ERRORS,		/* u64 */
1022  	/* aMACMergeFrameAssOkCount */
1023  	ETHTOOL_A_MM_STAT_REASSEMBLY_OK,	/* u64 */
1024  	/* aMACMergeFragCountRx */
1025  	ETHTOOL_A_MM_STAT_RX_FRAG_COUNT,	/* u64 */
1026  	/* aMACMergeFragCountTx */
1027  	ETHTOOL_A_MM_STAT_TX_FRAG_COUNT,	/* u64 */
1028  	/* aMACMergeHoldCount */
1029  	ETHTOOL_A_MM_STAT_HOLD_COUNT,		/* u64 */
1030  
1031  	/* add new constants above here */
1032  	__ETHTOOL_A_MM_STAT_CNT,
1033  	ETHTOOL_A_MM_STAT_MAX = (__ETHTOOL_A_MM_STAT_CNT - 1)
1034  };
1035  
1036  enum {
1037  	ETHTOOL_A_MM_UNSPEC,
1038  	ETHTOOL_A_MM_HEADER,			/* nest - _A_HEADER_* */
1039  	ETHTOOL_A_MM_PMAC_ENABLED,		/* u8 */
1040  	ETHTOOL_A_MM_TX_ENABLED,		/* u8 */
1041  	ETHTOOL_A_MM_TX_ACTIVE,			/* u8 */
1042  	ETHTOOL_A_MM_TX_MIN_FRAG_SIZE,		/* u32 */
1043  	ETHTOOL_A_MM_RX_MIN_FRAG_SIZE,		/* u32 */
1044  	ETHTOOL_A_MM_VERIFY_ENABLED,		/* u8 */
1045  	ETHTOOL_A_MM_VERIFY_STATUS,		/* u8 */
1046  	ETHTOOL_A_MM_VERIFY_TIME,		/* u32 */
1047  	ETHTOOL_A_MM_MAX_VERIFY_TIME,		/* u32 */
1048  	ETHTOOL_A_MM_STATS,			/* nest - _A_MM_STAT_* */
1049  
1050  	/* add new constants above here */
1051  	__ETHTOOL_A_MM_CNT,
1052  	ETHTOOL_A_MM_MAX = (__ETHTOOL_A_MM_CNT - 1)
1053  };
1054  
1055  /* MODULE_FW_FLASH */
1056  
1057  enum {
1058  	ETHTOOL_A_MODULE_FW_FLASH_UNSPEC,
1059  	ETHTOOL_A_MODULE_FW_FLASH_HEADER,		/* nest - _A_HEADER_* */
1060  	ETHTOOL_A_MODULE_FW_FLASH_FILE_NAME,		/* string */
1061  	ETHTOOL_A_MODULE_FW_FLASH_PASSWORD,		/* u32 */
1062  	ETHTOOL_A_MODULE_FW_FLASH_STATUS,		/* u32 */
1063  	ETHTOOL_A_MODULE_FW_FLASH_STATUS_MSG,		/* string */
1064  	ETHTOOL_A_MODULE_FW_FLASH_DONE,			/* uint */
1065  	ETHTOOL_A_MODULE_FW_FLASH_TOTAL,		/* uint */
1066  
1067  	/* add new constants above here */
1068  	__ETHTOOL_A_MODULE_FW_FLASH_CNT,
1069  	ETHTOOL_A_MODULE_FW_FLASH_MAX = (__ETHTOOL_A_MODULE_FW_FLASH_CNT - 1)
1070  };
1071  
1072  enum {
1073  	ETHTOOL_A_PHY_UNSPEC,
1074  	ETHTOOL_A_PHY_HEADER,			/* nest - _A_HEADER_* */
1075  	ETHTOOL_A_PHY_INDEX,			/* u32 */
1076  	ETHTOOL_A_PHY_DRVNAME,			/* string */
1077  	ETHTOOL_A_PHY_NAME,			/* string */
1078  	ETHTOOL_A_PHY_UPSTREAM_TYPE,		/* u32 */
1079  	ETHTOOL_A_PHY_UPSTREAM_INDEX,		/* u32 */
1080  	ETHTOOL_A_PHY_UPSTREAM_SFP_NAME,	/* string */
1081  	ETHTOOL_A_PHY_DOWNSTREAM_SFP_NAME,	/* string */
1082  
1083  	/* add new constants above here */
1084  	__ETHTOOL_A_PHY_CNT,
1085  	ETHTOOL_A_PHY_MAX = (__ETHTOOL_A_PHY_CNT - 1)
1086  };
1087  
1088  /* generic netlink info */
1089  #define ETHTOOL_GENL_NAME "ethtool"
1090  #define ETHTOOL_GENL_VERSION 1
1091  
1092  #define ETHTOOL_MCGRP_MONITOR_NAME "monitor"
1093  
1094  #endif /* _UAPI_LINUX_ETHTOOL_NETLINK_H_ */
1095