12b4a8990SMichal Kubecek /* SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note */ 22b4a8990SMichal Kubecek /* 32b4a8990SMichal Kubecek * include/uapi/linux/ethtool_netlink.h - netlink interface for ethtool 42b4a8990SMichal Kubecek * 572ef5e52SMauro Carvalho Chehab * See Documentation/networking/ethtool-netlink.rst in kernel source tree for 62b4a8990SMichal Kubecek * doucumentation of the interface. 72b4a8990SMichal Kubecek */ 82b4a8990SMichal Kubecek 92b4a8990SMichal Kubecek #ifndef _UAPI_LINUX_ETHTOOL_NETLINK_H_ 102b4a8990SMichal Kubecek #define _UAPI_LINUX_ETHTOOL_NETLINK_H_ 112b4a8990SMichal Kubecek 122b4a8990SMichal Kubecek #include <linux/ethtool.h> 132b4a8990SMichal Kubecek 142b4a8990SMichal Kubecek /* message types - userspace to kernel */ 152b4a8990SMichal Kubecek enum { 162b4a8990SMichal Kubecek ETHTOOL_MSG_USER_NONE, 1771921690SMichal Kubecek ETHTOOL_MSG_STRSET_GET, 18459e0b81SMichal Kubecek ETHTOOL_MSG_LINKINFO_GET, 19a53f3d41SMichal Kubecek ETHTOOL_MSG_LINKINFO_SET, 20f625aa9bSMichal Kubecek ETHTOOL_MSG_LINKMODES_GET, 21bfbcfe20SMichal Kubecek ETHTOOL_MSG_LINKMODES_SET, 223d2b847fSMichal Kubecek ETHTOOL_MSG_LINKSTATE_GET, 236a94b8ccSMichal Kubecek ETHTOOL_MSG_DEBUG_GET, 24e54d04e3SMichal Kubecek ETHTOOL_MSG_DEBUG_SET, 2551ea22b0SMichal Kubecek ETHTOOL_MSG_WOL_GET, 268d425b19SMichal Kubecek ETHTOOL_MSG_WOL_SET, 270524399dSMichal Kubecek ETHTOOL_MSG_FEATURES_GET, 280980bfcdSMichal Kubecek ETHTOOL_MSG_FEATURES_SET, 29e16c3386SMichal Kubecek ETHTOOL_MSG_PRIVFLAGS_GET, 30f265d799SMichal Kubecek ETHTOOL_MSG_PRIVFLAGS_SET, 31e4a1717bSMichal Kubecek ETHTOOL_MSG_RINGS_GET, 322fc2929eSMichal Kubecek ETHTOOL_MSG_RINGS_SET, 330c84979cSMichal Kubecek ETHTOOL_MSG_CHANNELS_GET, 34e19c591eSMichal Kubecek ETHTOOL_MSG_CHANNELS_SET, 3521727545SMichal Kubecek ETHTOOL_MSG_COALESCE_GET, 369881418cSMichal Kubecek ETHTOOL_MSG_COALESCE_SET, 377f59fb32SMichal Kubecek ETHTOOL_MSG_PAUSE_GET, 383ab87993SMichal Kubecek ETHTOOL_MSG_PAUSE_SET, 39b7eeefe7SMichal Kubecek ETHTOOL_MSG_EEE_GET, 40fd77be7bSMichal Kubecek ETHTOOL_MSG_EEE_SET, 415b071c59SMichal Kubecek ETHTOOL_MSG_TSINFO_GET, 4211ca3c42SAndrew Lunn ETHTOOL_MSG_CABLE_TEST_ACT, 43a331172bSAndrew Lunn ETHTOOL_MSG_CABLE_TEST_TDR_ACT, 442b4a8990SMichal Kubecek 452b4a8990SMichal Kubecek /* add new constants above here */ 462b4a8990SMichal Kubecek __ETHTOOL_MSG_USER_CNT, 472b4a8990SMichal Kubecek ETHTOOL_MSG_USER_MAX = __ETHTOOL_MSG_USER_CNT - 1 482b4a8990SMichal Kubecek }; 492b4a8990SMichal Kubecek 502b4a8990SMichal Kubecek /* message types - kernel to userspace */ 512b4a8990SMichal Kubecek enum { 522b4a8990SMichal Kubecek ETHTOOL_MSG_KERNEL_NONE, 5371921690SMichal Kubecek ETHTOOL_MSG_STRSET_GET_REPLY, 54459e0b81SMichal Kubecek ETHTOOL_MSG_LINKINFO_GET_REPLY, 5573286734SMichal Kubecek ETHTOOL_MSG_LINKINFO_NTF, 56f625aa9bSMichal Kubecek ETHTOOL_MSG_LINKMODES_GET_REPLY, 571b1b1847SMichal Kubecek ETHTOOL_MSG_LINKMODES_NTF, 583d2b847fSMichal Kubecek ETHTOOL_MSG_LINKSTATE_GET_REPLY, 596a94b8ccSMichal Kubecek ETHTOOL_MSG_DEBUG_GET_REPLY, 600bda7af3SMichal Kubecek ETHTOOL_MSG_DEBUG_NTF, 6151ea22b0SMichal Kubecek ETHTOOL_MSG_WOL_GET_REPLY, 6267bffa79SMichal Kubecek ETHTOOL_MSG_WOL_NTF, 630524399dSMichal Kubecek ETHTOOL_MSG_FEATURES_GET_REPLY, 640980bfcdSMichal Kubecek ETHTOOL_MSG_FEATURES_SET_REPLY, 659c6451efSMichal Kubecek ETHTOOL_MSG_FEATURES_NTF, 66e16c3386SMichal Kubecek ETHTOOL_MSG_PRIVFLAGS_GET_REPLY, 67111dcba3SMichal Kubecek ETHTOOL_MSG_PRIVFLAGS_NTF, 68e4a1717bSMichal Kubecek ETHTOOL_MSG_RINGS_GET_REPLY, 69bc9d1c99SMichal Kubecek ETHTOOL_MSG_RINGS_NTF, 700c84979cSMichal Kubecek ETHTOOL_MSG_CHANNELS_GET_REPLY, 71546379b9SMichal Kubecek ETHTOOL_MSG_CHANNELS_NTF, 7221727545SMichal Kubecek ETHTOOL_MSG_COALESCE_GET_REPLY, 730cf3eac8SMichal Kubecek ETHTOOL_MSG_COALESCE_NTF, 747f59fb32SMichal Kubecek ETHTOOL_MSG_PAUSE_GET_REPLY, 75bf37faa3SMichal Kubecek ETHTOOL_MSG_PAUSE_NTF, 76b7eeefe7SMichal Kubecek ETHTOOL_MSG_EEE_GET_REPLY, 776c5bc8feSMichal Kubecek ETHTOOL_MSG_EEE_NTF, 785b071c59SMichal Kubecek ETHTOOL_MSG_TSINFO_GET_REPLY, 79b28efb93SAndrew Lunn ETHTOOL_MSG_CABLE_TEST_NTF, 80a331172bSAndrew Lunn ETHTOOL_MSG_CABLE_TEST_TDR_NTF, 812b4a8990SMichal Kubecek 822b4a8990SMichal Kubecek /* add new constants above here */ 832b4a8990SMichal Kubecek __ETHTOOL_MSG_KERNEL_CNT, 842b4a8990SMichal Kubecek ETHTOOL_MSG_KERNEL_MAX = __ETHTOOL_MSG_KERNEL_CNT - 1 852b4a8990SMichal Kubecek }; 862b4a8990SMichal Kubecek 87041b1c5dSMichal Kubecek /* request header */ 88041b1c5dSMichal Kubecek 89041b1c5dSMichal Kubecek /* use compact bitsets in reply */ 90041b1c5dSMichal Kubecek #define ETHTOOL_FLAG_COMPACT_BITSETS (1 << 0) 91041b1c5dSMichal Kubecek /* provide optional reply for SET or ACT requests */ 92041b1c5dSMichal Kubecek #define ETHTOOL_FLAG_OMIT_REPLY (1 << 1) 93041b1c5dSMichal Kubecek 94041b1c5dSMichal Kubecek #define ETHTOOL_FLAG_ALL (ETHTOOL_FLAG_COMPACT_BITSETS | \ 95041b1c5dSMichal Kubecek ETHTOOL_FLAG_OMIT_REPLY) 96041b1c5dSMichal Kubecek 97041b1c5dSMichal Kubecek enum { 98041b1c5dSMichal Kubecek ETHTOOL_A_HEADER_UNSPEC, 99041b1c5dSMichal Kubecek ETHTOOL_A_HEADER_DEV_INDEX, /* u32 */ 100041b1c5dSMichal Kubecek ETHTOOL_A_HEADER_DEV_NAME, /* string */ 101041b1c5dSMichal Kubecek ETHTOOL_A_HEADER_FLAGS, /* u32 - ETHTOOL_FLAG_* */ 102041b1c5dSMichal Kubecek 103041b1c5dSMichal Kubecek /* add new constants above here */ 104041b1c5dSMichal Kubecek __ETHTOOL_A_HEADER_CNT, 105041b1c5dSMichal Kubecek ETHTOOL_A_HEADER_MAX = __ETHTOOL_A_HEADER_CNT - 1 106041b1c5dSMichal Kubecek }; 107041b1c5dSMichal Kubecek 10810b518d4SMichal Kubecek /* bit sets */ 10910b518d4SMichal Kubecek 11010b518d4SMichal Kubecek enum { 11110b518d4SMichal Kubecek ETHTOOL_A_BITSET_BIT_UNSPEC, 11210b518d4SMichal Kubecek ETHTOOL_A_BITSET_BIT_INDEX, /* u32 */ 11310b518d4SMichal Kubecek ETHTOOL_A_BITSET_BIT_NAME, /* string */ 11410b518d4SMichal Kubecek ETHTOOL_A_BITSET_BIT_VALUE, /* flag */ 11510b518d4SMichal Kubecek 11610b518d4SMichal Kubecek /* add new constants above here */ 11710b518d4SMichal Kubecek __ETHTOOL_A_BITSET_BIT_CNT, 11810b518d4SMichal Kubecek ETHTOOL_A_BITSET_BIT_MAX = __ETHTOOL_A_BITSET_BIT_CNT - 1 11910b518d4SMichal Kubecek }; 12010b518d4SMichal Kubecek 12110b518d4SMichal Kubecek enum { 12210b518d4SMichal Kubecek ETHTOOL_A_BITSET_BITS_UNSPEC, 12310b518d4SMichal Kubecek ETHTOOL_A_BITSET_BITS_BIT, /* nest - _A_BITSET_BIT_* */ 12410b518d4SMichal Kubecek 12510b518d4SMichal Kubecek /* add new constants above here */ 12610b518d4SMichal Kubecek __ETHTOOL_A_BITSET_BITS_CNT, 12710b518d4SMichal Kubecek ETHTOOL_A_BITSET_BITS_MAX = __ETHTOOL_A_BITSET_BITS_CNT - 1 12810b518d4SMichal Kubecek }; 12910b518d4SMichal Kubecek 13010b518d4SMichal Kubecek enum { 13110b518d4SMichal Kubecek ETHTOOL_A_BITSET_UNSPEC, 13210b518d4SMichal Kubecek ETHTOOL_A_BITSET_NOMASK, /* flag */ 13310b518d4SMichal Kubecek ETHTOOL_A_BITSET_SIZE, /* u32 */ 13410b518d4SMichal Kubecek ETHTOOL_A_BITSET_BITS, /* nest - _A_BITSET_BITS_* */ 13510b518d4SMichal Kubecek ETHTOOL_A_BITSET_VALUE, /* binary */ 13610b518d4SMichal Kubecek ETHTOOL_A_BITSET_MASK, /* binary */ 13710b518d4SMichal Kubecek 13810b518d4SMichal Kubecek /* add new constants above here */ 13910b518d4SMichal Kubecek __ETHTOOL_A_BITSET_CNT, 14010b518d4SMichal Kubecek ETHTOOL_A_BITSET_MAX = __ETHTOOL_A_BITSET_CNT - 1 14110b518d4SMichal Kubecek }; 14210b518d4SMichal Kubecek 14371921690SMichal Kubecek /* string sets */ 14471921690SMichal Kubecek 14571921690SMichal Kubecek enum { 14671921690SMichal Kubecek ETHTOOL_A_STRING_UNSPEC, 14771921690SMichal Kubecek ETHTOOL_A_STRING_INDEX, /* u32 */ 14871921690SMichal Kubecek ETHTOOL_A_STRING_VALUE, /* string */ 14971921690SMichal Kubecek 15071921690SMichal Kubecek /* add new constants above here */ 15171921690SMichal Kubecek __ETHTOOL_A_STRING_CNT, 15271921690SMichal Kubecek ETHTOOL_A_STRING_MAX = __ETHTOOL_A_STRING_CNT - 1 15371921690SMichal Kubecek }; 15471921690SMichal Kubecek 15571921690SMichal Kubecek enum { 15671921690SMichal Kubecek ETHTOOL_A_STRINGS_UNSPEC, 15771921690SMichal Kubecek ETHTOOL_A_STRINGS_STRING, /* nest - _A_STRINGS_* */ 15871921690SMichal Kubecek 15971921690SMichal Kubecek /* add new constants above here */ 16071921690SMichal Kubecek __ETHTOOL_A_STRINGS_CNT, 16171921690SMichal Kubecek ETHTOOL_A_STRINGS_MAX = __ETHTOOL_A_STRINGS_CNT - 1 16271921690SMichal Kubecek }; 16371921690SMichal Kubecek 16471921690SMichal Kubecek enum { 16571921690SMichal Kubecek ETHTOOL_A_STRINGSET_UNSPEC, 16671921690SMichal Kubecek ETHTOOL_A_STRINGSET_ID, /* u32 */ 16771921690SMichal Kubecek ETHTOOL_A_STRINGSET_COUNT, /* u32 */ 16871921690SMichal Kubecek ETHTOOL_A_STRINGSET_STRINGS, /* nest - _A_STRINGS_* */ 16971921690SMichal Kubecek 17071921690SMichal Kubecek /* add new constants above here */ 17171921690SMichal Kubecek __ETHTOOL_A_STRINGSET_CNT, 17271921690SMichal Kubecek ETHTOOL_A_STRINGSET_MAX = __ETHTOOL_A_STRINGSET_CNT - 1 17371921690SMichal Kubecek }; 17471921690SMichal Kubecek 17571921690SMichal Kubecek enum { 17671921690SMichal Kubecek ETHTOOL_A_STRINGSETS_UNSPEC, 17771921690SMichal Kubecek ETHTOOL_A_STRINGSETS_STRINGSET, /* nest - _A_STRINGSET_* */ 17871921690SMichal Kubecek 17971921690SMichal Kubecek /* add new constants above here */ 18071921690SMichal Kubecek __ETHTOOL_A_STRINGSETS_CNT, 18171921690SMichal Kubecek ETHTOOL_A_STRINGSETS_MAX = __ETHTOOL_A_STRINGSETS_CNT - 1 18271921690SMichal Kubecek }; 18371921690SMichal Kubecek 18471921690SMichal Kubecek /* STRSET */ 18571921690SMichal Kubecek 18671921690SMichal Kubecek enum { 18771921690SMichal Kubecek ETHTOOL_A_STRSET_UNSPEC, 18871921690SMichal Kubecek ETHTOOL_A_STRSET_HEADER, /* nest - _A_HEADER_* */ 18971921690SMichal Kubecek ETHTOOL_A_STRSET_STRINGSETS, /* nest - _A_STRINGSETS_* */ 19071921690SMichal Kubecek ETHTOOL_A_STRSET_COUNTS_ONLY, /* flag */ 19171921690SMichal Kubecek 19271921690SMichal Kubecek /* add new constants above here */ 19371921690SMichal Kubecek __ETHTOOL_A_STRSET_CNT, 19471921690SMichal Kubecek ETHTOOL_A_STRSET_MAX = __ETHTOOL_A_STRSET_CNT - 1 19571921690SMichal Kubecek }; 19671921690SMichal Kubecek 197459e0b81SMichal Kubecek /* LINKINFO */ 198459e0b81SMichal Kubecek 199459e0b81SMichal Kubecek enum { 200459e0b81SMichal Kubecek ETHTOOL_A_LINKINFO_UNSPEC, 201459e0b81SMichal Kubecek ETHTOOL_A_LINKINFO_HEADER, /* nest - _A_HEADER_* */ 202459e0b81SMichal Kubecek ETHTOOL_A_LINKINFO_PORT, /* u8 */ 203459e0b81SMichal Kubecek ETHTOOL_A_LINKINFO_PHYADDR, /* u8 */ 204459e0b81SMichal Kubecek ETHTOOL_A_LINKINFO_TP_MDIX, /* u8 */ 205459e0b81SMichal Kubecek ETHTOOL_A_LINKINFO_TP_MDIX_CTRL, /* u8 */ 206459e0b81SMichal Kubecek ETHTOOL_A_LINKINFO_TRANSCEIVER, /* u8 */ 207459e0b81SMichal Kubecek 208459e0b81SMichal Kubecek /* add new constants above here */ 209459e0b81SMichal Kubecek __ETHTOOL_A_LINKINFO_CNT, 210459e0b81SMichal Kubecek ETHTOOL_A_LINKINFO_MAX = __ETHTOOL_A_LINKINFO_CNT - 1 211459e0b81SMichal Kubecek }; 212459e0b81SMichal Kubecek 213f625aa9bSMichal Kubecek /* LINKMODES */ 214f625aa9bSMichal Kubecek 215f625aa9bSMichal Kubecek enum { 216f625aa9bSMichal Kubecek ETHTOOL_A_LINKMODES_UNSPEC, 217f625aa9bSMichal Kubecek ETHTOOL_A_LINKMODES_HEADER, /* nest - _A_HEADER_* */ 218f625aa9bSMichal Kubecek ETHTOOL_A_LINKMODES_AUTONEG, /* u8 */ 219f625aa9bSMichal Kubecek ETHTOOL_A_LINKMODES_OURS, /* bitset */ 220f625aa9bSMichal Kubecek ETHTOOL_A_LINKMODES_PEER, /* bitset */ 221f625aa9bSMichal Kubecek ETHTOOL_A_LINKMODES_SPEED, /* u32 */ 222f625aa9bSMichal Kubecek ETHTOOL_A_LINKMODES_DUPLEX, /* u8 */ 223bdbdac76SOleksij Rempel ETHTOOL_A_LINKMODES_MASTER_SLAVE_CFG, /* u8 */ 224bdbdac76SOleksij Rempel ETHTOOL_A_LINKMODES_MASTER_SLAVE_STATE, /* u8 */ 225f625aa9bSMichal Kubecek 226f625aa9bSMichal Kubecek /* add new constants above here */ 227f625aa9bSMichal Kubecek __ETHTOOL_A_LINKMODES_CNT, 228f625aa9bSMichal Kubecek ETHTOOL_A_LINKMODES_MAX = __ETHTOOL_A_LINKMODES_CNT - 1 229f625aa9bSMichal Kubecek }; 230f625aa9bSMichal Kubecek 2313d2b847fSMichal Kubecek /* LINKSTATE */ 2323d2b847fSMichal Kubecek 2333d2b847fSMichal Kubecek enum { 2343d2b847fSMichal Kubecek ETHTOOL_A_LINKSTATE_UNSPEC, 2353d2b847fSMichal Kubecek ETHTOOL_A_LINKSTATE_HEADER, /* nest - _A_HEADER_* */ 2363d2b847fSMichal Kubecek ETHTOOL_A_LINKSTATE_LINK, /* u8 */ 23780660219SOleksij Rempel ETHTOOL_A_LINKSTATE_SQI, /* u32 */ 23880660219SOleksij Rempel ETHTOOL_A_LINKSTATE_SQI_MAX, /* u32 */ 239*ecc31c60SAmit Cohen ETHTOOL_A_LINKSTATE_EXT_STATE, /* u8 */ 240*ecc31c60SAmit Cohen ETHTOOL_A_LINKSTATE_EXT_SUBSTATE, /* u8 */ 2413d2b847fSMichal Kubecek 2423d2b847fSMichal Kubecek /* add new constants above here */ 2433d2b847fSMichal Kubecek __ETHTOOL_A_LINKSTATE_CNT, 2443d2b847fSMichal Kubecek ETHTOOL_A_LINKSTATE_MAX = __ETHTOOL_A_LINKSTATE_CNT - 1 2453d2b847fSMichal Kubecek }; 2463d2b847fSMichal Kubecek 2476a94b8ccSMichal Kubecek /* DEBUG */ 2486a94b8ccSMichal Kubecek 2496a94b8ccSMichal Kubecek enum { 2506a94b8ccSMichal Kubecek ETHTOOL_A_DEBUG_UNSPEC, 2516a94b8ccSMichal Kubecek ETHTOOL_A_DEBUG_HEADER, /* nest - _A_HEADER_* */ 2526a94b8ccSMichal Kubecek ETHTOOL_A_DEBUG_MSGMASK, /* bitset */ 2536a94b8ccSMichal Kubecek 2546a94b8ccSMichal Kubecek /* add new constants above here */ 2556a94b8ccSMichal Kubecek __ETHTOOL_A_DEBUG_CNT, 2566a94b8ccSMichal Kubecek ETHTOOL_A_DEBUG_MAX = __ETHTOOL_A_DEBUG_CNT - 1 2576a94b8ccSMichal Kubecek }; 2586a94b8ccSMichal Kubecek 25951ea22b0SMichal Kubecek /* WOL */ 26051ea22b0SMichal Kubecek 26151ea22b0SMichal Kubecek enum { 26251ea22b0SMichal Kubecek ETHTOOL_A_WOL_UNSPEC, 26351ea22b0SMichal Kubecek ETHTOOL_A_WOL_HEADER, /* nest - _A_HEADER_* */ 26451ea22b0SMichal Kubecek ETHTOOL_A_WOL_MODES, /* bitset */ 26551ea22b0SMichal Kubecek ETHTOOL_A_WOL_SOPASS, /* binary */ 26651ea22b0SMichal Kubecek 26751ea22b0SMichal Kubecek /* add new constants above here */ 26851ea22b0SMichal Kubecek __ETHTOOL_A_WOL_CNT, 26951ea22b0SMichal Kubecek ETHTOOL_A_WOL_MAX = __ETHTOOL_A_WOL_CNT - 1 27051ea22b0SMichal Kubecek }; 27151ea22b0SMichal Kubecek 2720524399dSMichal Kubecek /* FEATURES */ 2730524399dSMichal Kubecek 2740524399dSMichal Kubecek enum { 2750524399dSMichal Kubecek ETHTOOL_A_FEATURES_UNSPEC, 2760524399dSMichal Kubecek ETHTOOL_A_FEATURES_HEADER, /* nest - _A_HEADER_* */ 2770524399dSMichal Kubecek ETHTOOL_A_FEATURES_HW, /* bitset */ 2780524399dSMichal Kubecek ETHTOOL_A_FEATURES_WANTED, /* bitset */ 2790524399dSMichal Kubecek ETHTOOL_A_FEATURES_ACTIVE, /* bitset */ 2800524399dSMichal Kubecek ETHTOOL_A_FEATURES_NOCHANGE, /* bitset */ 2810524399dSMichal Kubecek 2820524399dSMichal Kubecek /* add new constants above here */ 2830524399dSMichal Kubecek __ETHTOOL_A_FEATURES_CNT, 2840524399dSMichal Kubecek ETHTOOL_A_FEATURES_MAX = __ETHTOOL_A_FEATURES_CNT - 1 2850524399dSMichal Kubecek }; 2860524399dSMichal Kubecek 287e16c3386SMichal Kubecek /* PRIVFLAGS */ 288e16c3386SMichal Kubecek 289e16c3386SMichal Kubecek enum { 290e16c3386SMichal Kubecek ETHTOOL_A_PRIVFLAGS_UNSPEC, 291e16c3386SMichal Kubecek ETHTOOL_A_PRIVFLAGS_HEADER, /* nest - _A_HEADER_* */ 292e16c3386SMichal Kubecek ETHTOOL_A_PRIVFLAGS_FLAGS, /* bitset */ 293e16c3386SMichal Kubecek 294e16c3386SMichal Kubecek /* add new constants above here */ 295e16c3386SMichal Kubecek __ETHTOOL_A_PRIVFLAGS_CNT, 296e16c3386SMichal Kubecek ETHTOOL_A_PRIVFLAGS_MAX = __ETHTOOL_A_PRIVFLAGS_CNT - 1 297e16c3386SMichal Kubecek }; 298e16c3386SMichal Kubecek 299e4a1717bSMichal Kubecek /* RINGS */ 300e4a1717bSMichal Kubecek 301e4a1717bSMichal Kubecek enum { 302e4a1717bSMichal Kubecek ETHTOOL_A_RINGS_UNSPEC, 303e4a1717bSMichal Kubecek ETHTOOL_A_RINGS_HEADER, /* nest - _A_HEADER_* */ 304e4a1717bSMichal Kubecek ETHTOOL_A_RINGS_RX_MAX, /* u32 */ 305e4a1717bSMichal Kubecek ETHTOOL_A_RINGS_RX_MINI_MAX, /* u32 */ 306e4a1717bSMichal Kubecek ETHTOOL_A_RINGS_RX_JUMBO_MAX, /* u32 */ 307e4a1717bSMichal Kubecek ETHTOOL_A_RINGS_TX_MAX, /* u32 */ 308e4a1717bSMichal Kubecek ETHTOOL_A_RINGS_RX, /* u32 */ 309e4a1717bSMichal Kubecek ETHTOOL_A_RINGS_RX_MINI, /* u32 */ 310e4a1717bSMichal Kubecek ETHTOOL_A_RINGS_RX_JUMBO, /* u32 */ 311e4a1717bSMichal Kubecek ETHTOOL_A_RINGS_TX, /* u32 */ 312e4a1717bSMichal Kubecek 313e4a1717bSMichal Kubecek /* add new constants above here */ 314e4a1717bSMichal Kubecek __ETHTOOL_A_RINGS_CNT, 315e4a1717bSMichal Kubecek ETHTOOL_A_RINGS_MAX = (__ETHTOOL_A_RINGS_CNT - 1) 316e4a1717bSMichal Kubecek }; 317e4a1717bSMichal Kubecek 3180c84979cSMichal Kubecek /* CHANNELS */ 3190c84979cSMichal Kubecek 3200c84979cSMichal Kubecek enum { 3210c84979cSMichal Kubecek ETHTOOL_A_CHANNELS_UNSPEC, 3220c84979cSMichal Kubecek ETHTOOL_A_CHANNELS_HEADER, /* nest - _A_HEADER_* */ 3230c84979cSMichal Kubecek ETHTOOL_A_CHANNELS_RX_MAX, /* u32 */ 3240c84979cSMichal Kubecek ETHTOOL_A_CHANNELS_TX_MAX, /* u32 */ 3250c84979cSMichal Kubecek ETHTOOL_A_CHANNELS_OTHER_MAX, /* u32 */ 3260c84979cSMichal Kubecek ETHTOOL_A_CHANNELS_COMBINED_MAX, /* u32 */ 3270c84979cSMichal Kubecek ETHTOOL_A_CHANNELS_RX_COUNT, /* u32 */ 3280c84979cSMichal Kubecek ETHTOOL_A_CHANNELS_TX_COUNT, /* u32 */ 3290c84979cSMichal Kubecek ETHTOOL_A_CHANNELS_OTHER_COUNT, /* u32 */ 3300c84979cSMichal Kubecek ETHTOOL_A_CHANNELS_COMBINED_COUNT, /* u32 */ 3310c84979cSMichal Kubecek 3320c84979cSMichal Kubecek /* add new constants above here */ 3330c84979cSMichal Kubecek __ETHTOOL_A_CHANNELS_CNT, 3340c84979cSMichal Kubecek ETHTOOL_A_CHANNELS_MAX = (__ETHTOOL_A_CHANNELS_CNT - 1) 3350c84979cSMichal Kubecek }; 3360c84979cSMichal Kubecek 33721727545SMichal Kubecek /* COALESCE */ 33821727545SMichal Kubecek 33921727545SMichal Kubecek enum { 34021727545SMichal Kubecek ETHTOOL_A_COALESCE_UNSPEC, 34121727545SMichal Kubecek ETHTOOL_A_COALESCE_HEADER, /* nest - _A_HEADER_* */ 34221727545SMichal Kubecek ETHTOOL_A_COALESCE_RX_USECS, /* u32 */ 34321727545SMichal Kubecek ETHTOOL_A_COALESCE_RX_MAX_FRAMES, /* u32 */ 34421727545SMichal Kubecek ETHTOOL_A_COALESCE_RX_USECS_IRQ, /* u32 */ 34521727545SMichal Kubecek ETHTOOL_A_COALESCE_RX_MAX_FRAMES_IRQ, /* u32 */ 34621727545SMichal Kubecek ETHTOOL_A_COALESCE_TX_USECS, /* u32 */ 34721727545SMichal Kubecek ETHTOOL_A_COALESCE_TX_MAX_FRAMES, /* u32 */ 34821727545SMichal Kubecek ETHTOOL_A_COALESCE_TX_USECS_IRQ, /* u32 */ 34921727545SMichal Kubecek ETHTOOL_A_COALESCE_TX_MAX_FRAMES_IRQ, /* u32 */ 35021727545SMichal Kubecek ETHTOOL_A_COALESCE_STATS_BLOCK_USECS, /* u32 */ 35121727545SMichal Kubecek ETHTOOL_A_COALESCE_USE_ADAPTIVE_RX, /* u8 */ 35221727545SMichal Kubecek ETHTOOL_A_COALESCE_USE_ADAPTIVE_TX, /* u8 */ 35321727545SMichal Kubecek ETHTOOL_A_COALESCE_PKT_RATE_LOW, /* u32 */ 35421727545SMichal Kubecek ETHTOOL_A_COALESCE_RX_USECS_LOW, /* u32 */ 35521727545SMichal Kubecek ETHTOOL_A_COALESCE_RX_MAX_FRAMES_LOW, /* u32 */ 35621727545SMichal Kubecek ETHTOOL_A_COALESCE_TX_USECS_LOW, /* u32 */ 35721727545SMichal Kubecek ETHTOOL_A_COALESCE_TX_MAX_FRAMES_LOW, /* u32 */ 35821727545SMichal Kubecek ETHTOOL_A_COALESCE_PKT_RATE_HIGH, /* u32 */ 35921727545SMichal Kubecek ETHTOOL_A_COALESCE_RX_USECS_HIGH, /* u32 */ 36021727545SMichal Kubecek ETHTOOL_A_COALESCE_RX_MAX_FRAMES_HIGH, /* u32 */ 36121727545SMichal Kubecek ETHTOOL_A_COALESCE_TX_USECS_HIGH, /* u32 */ 36221727545SMichal Kubecek ETHTOOL_A_COALESCE_TX_MAX_FRAMES_HIGH, /* u32 */ 36321727545SMichal Kubecek ETHTOOL_A_COALESCE_RATE_SAMPLE_INTERVAL, /* u32 */ 36421727545SMichal Kubecek 36521727545SMichal Kubecek /* add new constants above here */ 36621727545SMichal Kubecek __ETHTOOL_A_COALESCE_CNT, 36721727545SMichal Kubecek ETHTOOL_A_COALESCE_MAX = (__ETHTOOL_A_COALESCE_CNT - 1) 36821727545SMichal Kubecek }; 36921727545SMichal Kubecek 3707f59fb32SMichal Kubecek /* PAUSE */ 3717f59fb32SMichal Kubecek 3727f59fb32SMichal Kubecek enum { 3737f59fb32SMichal Kubecek ETHTOOL_A_PAUSE_UNSPEC, 3747f59fb32SMichal Kubecek ETHTOOL_A_PAUSE_HEADER, /* nest - _A_HEADER_* */ 3757f59fb32SMichal Kubecek ETHTOOL_A_PAUSE_AUTONEG, /* u8 */ 3767f59fb32SMichal Kubecek ETHTOOL_A_PAUSE_RX, /* u8 */ 3777f59fb32SMichal Kubecek ETHTOOL_A_PAUSE_TX, /* u8 */ 3787f59fb32SMichal Kubecek 3797f59fb32SMichal Kubecek /* add new constants above here */ 3807f59fb32SMichal Kubecek __ETHTOOL_A_PAUSE_CNT, 3817f59fb32SMichal Kubecek ETHTOOL_A_PAUSE_MAX = (__ETHTOOL_A_PAUSE_CNT - 1) 3827f59fb32SMichal Kubecek }; 3837f59fb32SMichal Kubecek 384b7eeefe7SMichal Kubecek /* EEE */ 385b7eeefe7SMichal Kubecek 386b7eeefe7SMichal Kubecek enum { 387b7eeefe7SMichal Kubecek ETHTOOL_A_EEE_UNSPEC, 388b7eeefe7SMichal Kubecek ETHTOOL_A_EEE_HEADER, /* nest - _A_HEADER_* */ 389b7eeefe7SMichal Kubecek ETHTOOL_A_EEE_MODES_OURS, /* bitset */ 390b7eeefe7SMichal Kubecek ETHTOOL_A_EEE_MODES_PEER, /* bitset */ 391b7eeefe7SMichal Kubecek ETHTOOL_A_EEE_ACTIVE, /* u8 */ 392b7eeefe7SMichal Kubecek ETHTOOL_A_EEE_ENABLED, /* u8 */ 393b7eeefe7SMichal Kubecek ETHTOOL_A_EEE_TX_LPI_ENABLED, /* u8 */ 394b7eeefe7SMichal Kubecek ETHTOOL_A_EEE_TX_LPI_TIMER, /* u32 */ 395b7eeefe7SMichal Kubecek 396b7eeefe7SMichal Kubecek /* add new constants above here */ 397b7eeefe7SMichal Kubecek __ETHTOOL_A_EEE_CNT, 398b7eeefe7SMichal Kubecek ETHTOOL_A_EEE_MAX = (__ETHTOOL_A_EEE_CNT - 1) 399b7eeefe7SMichal Kubecek }; 400b7eeefe7SMichal Kubecek 4015b071c59SMichal Kubecek /* TSINFO */ 4025b071c59SMichal Kubecek 4035b071c59SMichal Kubecek enum { 4045b071c59SMichal Kubecek ETHTOOL_A_TSINFO_UNSPEC, 4055b071c59SMichal Kubecek ETHTOOL_A_TSINFO_HEADER, /* nest - _A_HEADER_* */ 4065b071c59SMichal Kubecek ETHTOOL_A_TSINFO_TIMESTAMPING, /* bitset */ 4075b071c59SMichal Kubecek ETHTOOL_A_TSINFO_TX_TYPES, /* bitset */ 4085b071c59SMichal Kubecek ETHTOOL_A_TSINFO_RX_FILTERS, /* bitset */ 4095b071c59SMichal Kubecek ETHTOOL_A_TSINFO_PHC_INDEX, /* u32 */ 4105b071c59SMichal Kubecek 4115b071c59SMichal Kubecek /* add new constants above here */ 4125b071c59SMichal Kubecek __ETHTOOL_A_TSINFO_CNT, 4135b071c59SMichal Kubecek ETHTOOL_A_TSINFO_MAX = (__ETHTOOL_A_TSINFO_CNT - 1) 4145b071c59SMichal Kubecek }; 4155b071c59SMichal Kubecek 41611ca3c42SAndrew Lunn /* CABLE TEST */ 41711ca3c42SAndrew Lunn 41811ca3c42SAndrew Lunn enum { 41911ca3c42SAndrew Lunn ETHTOOL_A_CABLE_TEST_UNSPEC, 42011ca3c42SAndrew Lunn ETHTOOL_A_CABLE_TEST_HEADER, /* nest - _A_HEADER_* */ 42111ca3c42SAndrew Lunn 42211ca3c42SAndrew Lunn /* add new constants above here */ 42311ca3c42SAndrew Lunn __ETHTOOL_A_CABLE_TEST_CNT, 42411ca3c42SAndrew Lunn ETHTOOL_A_CABLE_TEST_MAX = __ETHTOOL_A_CABLE_TEST_CNT - 1 42511ca3c42SAndrew Lunn }; 42611ca3c42SAndrew Lunn 427b28efb93SAndrew Lunn /* CABLE TEST NOTIFY */ 428b28efb93SAndrew Lunn enum { 429b28efb93SAndrew Lunn ETHTOOL_A_CABLE_RESULT_CODE_UNSPEC, 430b28efb93SAndrew Lunn ETHTOOL_A_CABLE_RESULT_CODE_OK, 431b28efb93SAndrew Lunn ETHTOOL_A_CABLE_RESULT_CODE_OPEN, 432b28efb93SAndrew Lunn ETHTOOL_A_CABLE_RESULT_CODE_SAME_SHORT, 433b28efb93SAndrew Lunn ETHTOOL_A_CABLE_RESULT_CODE_CROSS_SHORT, 434b28efb93SAndrew Lunn }; 435b28efb93SAndrew Lunn 436b28efb93SAndrew Lunn enum { 437b28efb93SAndrew Lunn ETHTOOL_A_CABLE_PAIR_A, 438b28efb93SAndrew Lunn ETHTOOL_A_CABLE_PAIR_B, 439b28efb93SAndrew Lunn ETHTOOL_A_CABLE_PAIR_C, 440b28efb93SAndrew Lunn ETHTOOL_A_CABLE_PAIR_D, 441b28efb93SAndrew Lunn }; 442b28efb93SAndrew Lunn 443b28efb93SAndrew Lunn enum { 444b28efb93SAndrew Lunn ETHTOOL_A_CABLE_RESULT_UNSPEC, 445b28efb93SAndrew Lunn ETHTOOL_A_CABLE_RESULT_PAIR, /* u8 ETHTOOL_A_CABLE_PAIR_ */ 446b28efb93SAndrew Lunn ETHTOOL_A_CABLE_RESULT_CODE, /* u8 ETHTOOL_A_CABLE_RESULT_CODE_ */ 447b28efb93SAndrew Lunn 448b28efb93SAndrew Lunn __ETHTOOL_A_CABLE_RESULT_CNT, 449b28efb93SAndrew Lunn ETHTOOL_A_CABLE_RESULT_MAX = (__ETHTOOL_A_CABLE_RESULT_CNT - 1) 450b28efb93SAndrew Lunn }; 451b28efb93SAndrew Lunn 452b28efb93SAndrew Lunn enum { 453b28efb93SAndrew Lunn ETHTOOL_A_CABLE_FAULT_LENGTH_UNSPEC, 454b28efb93SAndrew Lunn ETHTOOL_A_CABLE_FAULT_LENGTH_PAIR, /* u8 ETHTOOL_A_CABLE_PAIR_ */ 455b28efb93SAndrew Lunn ETHTOOL_A_CABLE_FAULT_LENGTH_CM, /* u32 */ 456b28efb93SAndrew Lunn 457b28efb93SAndrew Lunn __ETHTOOL_A_CABLE_FAULT_LENGTH_CNT, 458b28efb93SAndrew Lunn ETHTOOL_A_CABLE_FAULT_LENGTH_MAX = (__ETHTOOL_A_CABLE_FAULT_LENGTH_CNT - 1) 459b28efb93SAndrew Lunn }; 460b28efb93SAndrew Lunn 461b28efb93SAndrew Lunn enum { 462b28efb93SAndrew Lunn ETHTOOL_A_CABLE_TEST_NTF_STATUS_UNSPEC, 463b28efb93SAndrew Lunn ETHTOOL_A_CABLE_TEST_NTF_STATUS_STARTED, 464b28efb93SAndrew Lunn ETHTOOL_A_CABLE_TEST_NTF_STATUS_COMPLETED 465b28efb93SAndrew Lunn }; 466b28efb93SAndrew Lunn 467b28efb93SAndrew Lunn enum { 468b28efb93SAndrew Lunn ETHTOOL_A_CABLE_NEST_UNSPEC, 469b28efb93SAndrew Lunn ETHTOOL_A_CABLE_NEST_RESULT, /* nest - ETHTOOL_A_CABLE_RESULT_ */ 470b28efb93SAndrew Lunn ETHTOOL_A_CABLE_NEST_FAULT_LENGTH, /* nest - ETHTOOL_A_CABLE_FAULT_LENGTH_ */ 471b28efb93SAndrew Lunn __ETHTOOL_A_CABLE_NEST_CNT, 472b28efb93SAndrew Lunn ETHTOOL_A_CABLE_NEST_MAX = (__ETHTOOL_A_CABLE_NEST_CNT - 1) 473b28efb93SAndrew Lunn }; 474b28efb93SAndrew Lunn 475b28efb93SAndrew Lunn enum { 476b28efb93SAndrew Lunn ETHTOOL_A_CABLE_TEST_NTF_UNSPEC, 477b28efb93SAndrew Lunn ETHTOOL_A_CABLE_TEST_NTF_HEADER, /* nest - ETHTOOL_A_HEADER_* */ 478b28efb93SAndrew Lunn ETHTOOL_A_CABLE_TEST_NTF_STATUS, /* u8 - _STARTED/_COMPLETE */ 479b28efb93SAndrew Lunn ETHTOOL_A_CABLE_TEST_NTF_NEST, /* nest - of results: */ 480b28efb93SAndrew Lunn 481b28efb93SAndrew Lunn __ETHTOOL_A_CABLE_TEST_NTF_CNT, 482b28efb93SAndrew Lunn ETHTOOL_A_CABLE_TEST_NTF_MAX = (__ETHTOOL_A_CABLE_TEST_NTF_CNT - 1) 483b28efb93SAndrew Lunn }; 484b28efb93SAndrew Lunn 485a331172bSAndrew Lunn /* CABLE TEST TDR */ 486a331172bSAndrew Lunn 487a331172bSAndrew Lunn enum { 488f2bc8ad3SAndrew Lunn ETHTOOL_A_CABLE_TEST_TDR_CFG_UNSPEC, 489f2bc8ad3SAndrew Lunn ETHTOOL_A_CABLE_TEST_TDR_CFG_FIRST, /* u32 */ 490f2bc8ad3SAndrew Lunn ETHTOOL_A_CABLE_TEST_TDR_CFG_LAST, /* u32 */ 491f2bc8ad3SAndrew Lunn ETHTOOL_A_CABLE_TEST_TDR_CFG_STEP, /* u32 */ 492f2bc8ad3SAndrew Lunn ETHTOOL_A_CABLE_TEST_TDR_CFG_PAIR, /* u8 */ 493f2bc8ad3SAndrew Lunn 494f2bc8ad3SAndrew Lunn /* add new constants above here */ 495f2bc8ad3SAndrew Lunn __ETHTOOL_A_CABLE_TEST_TDR_CFG_CNT, 496f2bc8ad3SAndrew Lunn ETHTOOL_A_CABLE_TEST_TDR_CFG_MAX = __ETHTOOL_A_CABLE_TEST_TDR_CFG_CNT - 1 497f2bc8ad3SAndrew Lunn }; 498f2bc8ad3SAndrew Lunn 499f2bc8ad3SAndrew Lunn enum { 500a331172bSAndrew Lunn ETHTOOL_A_CABLE_TEST_TDR_UNSPEC, 501a331172bSAndrew Lunn ETHTOOL_A_CABLE_TEST_TDR_HEADER, /* nest - _A_HEADER_* */ 502f2bc8ad3SAndrew Lunn ETHTOOL_A_CABLE_TEST_TDR_CFG, /* nest - *_TDR_CFG_* */ 503a331172bSAndrew Lunn 504a331172bSAndrew Lunn /* add new constants above here */ 505a331172bSAndrew Lunn __ETHTOOL_A_CABLE_TEST_TDR_CNT, 506a331172bSAndrew Lunn ETHTOOL_A_CABLE_TEST_TDR_MAX = __ETHTOOL_A_CABLE_TEST_TDR_CNT - 1 507a331172bSAndrew Lunn }; 508a331172bSAndrew Lunn 509a331172bSAndrew Lunn /* CABLE TEST TDR NOTIFY */ 510a331172bSAndrew Lunn 511a331172bSAndrew Lunn enum { 512a331172bSAndrew Lunn ETHTOOL_A_CABLE_AMPLITUDE_UNSPEC, 513a331172bSAndrew Lunn ETHTOOL_A_CABLE_AMPLITUDE_PAIR, /* u8 */ 514a331172bSAndrew Lunn ETHTOOL_A_CABLE_AMPLITUDE_mV, /* s16 */ 515a331172bSAndrew Lunn 516a331172bSAndrew Lunn __ETHTOOL_A_CABLE_AMPLITUDE_CNT, 517a331172bSAndrew Lunn ETHTOOL_A_CABLE_AMPLITUDE_MAX = (__ETHTOOL_A_CABLE_AMPLITUDE_CNT - 1) 518a331172bSAndrew Lunn }; 519a331172bSAndrew Lunn 520a331172bSAndrew Lunn enum { 521a331172bSAndrew Lunn ETHTOOL_A_CABLE_PULSE_UNSPEC, 522a331172bSAndrew Lunn ETHTOOL_A_CABLE_PULSE_mV, /* s16 */ 523a331172bSAndrew Lunn 524a331172bSAndrew Lunn __ETHTOOL_A_CABLE_PULSE_CNT, 525a331172bSAndrew Lunn ETHTOOL_A_CABLE_PULSE_MAX = (__ETHTOOL_A_CABLE_PULSE_CNT - 1) 526a331172bSAndrew Lunn }; 527a331172bSAndrew Lunn 528a331172bSAndrew Lunn enum { 529a331172bSAndrew Lunn ETHTOOL_A_CABLE_STEP_UNSPEC, 530a331172bSAndrew Lunn ETHTOOL_A_CABLE_STEP_FIRST_DISTANCE, /* u32 */ 531a331172bSAndrew Lunn ETHTOOL_A_CABLE_STEP_LAST_DISTANCE, /* u32 */ 532a331172bSAndrew Lunn ETHTOOL_A_CABLE_STEP_STEP_DISTANCE, /* u32 */ 533a331172bSAndrew Lunn 534a331172bSAndrew Lunn __ETHTOOL_A_CABLE_STEP_CNT, 535a331172bSAndrew Lunn ETHTOOL_A_CABLE_STEP_MAX = (__ETHTOOL_A_CABLE_STEP_CNT - 1) 536a331172bSAndrew Lunn }; 537a331172bSAndrew Lunn 538a331172bSAndrew Lunn enum { 539a331172bSAndrew Lunn ETHTOOL_A_CABLE_TDR_NEST_UNSPEC, 540a331172bSAndrew Lunn ETHTOOL_A_CABLE_TDR_NEST_STEP, /* nest - ETHTTOOL_A_CABLE_STEP */ 541a331172bSAndrew Lunn ETHTOOL_A_CABLE_TDR_NEST_AMPLITUDE, /* nest - ETHTOOL_A_CABLE_AMPLITUDE */ 542a331172bSAndrew Lunn ETHTOOL_A_CABLE_TDR_NEST_PULSE, /* nest - ETHTOOL_A_CABLE_PULSE */ 543a331172bSAndrew Lunn 544a331172bSAndrew Lunn __ETHTOOL_A_CABLE_TDR_NEST_CNT, 545a331172bSAndrew Lunn ETHTOOL_A_CABLE_TDR_NEST_MAX = (__ETHTOOL_A_CABLE_TDR_NEST_CNT - 1) 546a331172bSAndrew Lunn }; 547a331172bSAndrew Lunn 548a331172bSAndrew Lunn enum { 549a331172bSAndrew Lunn ETHTOOL_A_CABLE_TEST_TDR_NTF_UNSPEC, 550a331172bSAndrew Lunn ETHTOOL_A_CABLE_TEST_TDR_NTF_HEADER, /* nest - ETHTOOL_A_HEADER_* */ 551a331172bSAndrew Lunn ETHTOOL_A_CABLE_TEST_TDR_NTF_STATUS, /* u8 - _STARTED/_COMPLETE */ 552a331172bSAndrew Lunn ETHTOOL_A_CABLE_TEST_TDR_NTF_NEST, /* nest - of results: */ 553a331172bSAndrew Lunn 554a331172bSAndrew Lunn /* add new constants above here */ 555a331172bSAndrew Lunn __ETHTOOL_A_CABLE_TEST_TDR_NTF_CNT, 556a331172bSAndrew Lunn ETHTOOL_A_CABLE_TEST_TDR_NTF_MAX = __ETHTOOL_A_CABLE_TEST_TDR_NTF_CNT - 1 557a331172bSAndrew Lunn }; 558a331172bSAndrew Lunn 5592b4a8990SMichal Kubecek /* generic netlink info */ 5602b4a8990SMichal Kubecek #define ETHTOOL_GENL_NAME "ethtool" 5612b4a8990SMichal Kubecek #define ETHTOOL_GENL_VERSION 1 5622b4a8990SMichal Kubecek 5636b08d6c1SMichal Kubecek #define ETHTOOL_MCGRP_MONITOR_NAME "monitor" 5646b08d6c1SMichal Kubecek 5652b4a8990SMichal Kubecek #endif /* _UAPI_LINUX_ETHTOOL_NETLINK_H_ */ 566