zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

ethtool_netlink.h (30587B) - Raw


      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 _LINUX_ETHTOOL_NETLINK_H_
     10 #define _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 /* _LINUX_ETHTOOL_NETLINK_H_ */