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 * 52b4a8990SMichal Kubecek * See Documentation/networking/ethtool-netlink.txt 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, 28*0980bfcdSMichal Kubecek ETHTOOL_MSG_FEATURES_SET, 292b4a8990SMichal Kubecek 302b4a8990SMichal Kubecek /* add new constants above here */ 312b4a8990SMichal Kubecek __ETHTOOL_MSG_USER_CNT, 322b4a8990SMichal Kubecek ETHTOOL_MSG_USER_MAX = __ETHTOOL_MSG_USER_CNT - 1 332b4a8990SMichal Kubecek }; 342b4a8990SMichal Kubecek 352b4a8990SMichal Kubecek /* message types - kernel to userspace */ 362b4a8990SMichal Kubecek enum { 372b4a8990SMichal Kubecek ETHTOOL_MSG_KERNEL_NONE, 3871921690SMichal Kubecek ETHTOOL_MSG_STRSET_GET_REPLY, 39459e0b81SMichal Kubecek ETHTOOL_MSG_LINKINFO_GET_REPLY, 4073286734SMichal Kubecek ETHTOOL_MSG_LINKINFO_NTF, 41f625aa9bSMichal Kubecek ETHTOOL_MSG_LINKMODES_GET_REPLY, 421b1b1847SMichal Kubecek ETHTOOL_MSG_LINKMODES_NTF, 433d2b847fSMichal Kubecek ETHTOOL_MSG_LINKSTATE_GET_REPLY, 446a94b8ccSMichal Kubecek ETHTOOL_MSG_DEBUG_GET_REPLY, 450bda7af3SMichal Kubecek ETHTOOL_MSG_DEBUG_NTF, 4651ea22b0SMichal Kubecek ETHTOOL_MSG_WOL_GET_REPLY, 4767bffa79SMichal Kubecek ETHTOOL_MSG_WOL_NTF, 480524399dSMichal Kubecek ETHTOOL_MSG_FEATURES_GET_REPLY, 49*0980bfcdSMichal Kubecek ETHTOOL_MSG_FEATURES_SET_REPLY, 502b4a8990SMichal Kubecek 512b4a8990SMichal Kubecek /* add new constants above here */ 522b4a8990SMichal Kubecek __ETHTOOL_MSG_KERNEL_CNT, 532b4a8990SMichal Kubecek ETHTOOL_MSG_KERNEL_MAX = __ETHTOOL_MSG_KERNEL_CNT - 1 542b4a8990SMichal Kubecek }; 552b4a8990SMichal Kubecek 56041b1c5dSMichal Kubecek /* request header */ 57041b1c5dSMichal Kubecek 58041b1c5dSMichal Kubecek /* use compact bitsets in reply */ 59041b1c5dSMichal Kubecek #define ETHTOOL_FLAG_COMPACT_BITSETS (1 << 0) 60041b1c5dSMichal Kubecek /* provide optional reply for SET or ACT requests */ 61041b1c5dSMichal Kubecek #define ETHTOOL_FLAG_OMIT_REPLY (1 << 1) 62041b1c5dSMichal Kubecek 63041b1c5dSMichal Kubecek #define ETHTOOL_FLAG_ALL (ETHTOOL_FLAG_COMPACT_BITSETS | \ 64041b1c5dSMichal Kubecek ETHTOOL_FLAG_OMIT_REPLY) 65041b1c5dSMichal Kubecek 66041b1c5dSMichal Kubecek enum { 67041b1c5dSMichal Kubecek ETHTOOL_A_HEADER_UNSPEC, 68041b1c5dSMichal Kubecek ETHTOOL_A_HEADER_DEV_INDEX, /* u32 */ 69041b1c5dSMichal Kubecek ETHTOOL_A_HEADER_DEV_NAME, /* string */ 70041b1c5dSMichal Kubecek ETHTOOL_A_HEADER_FLAGS, /* u32 - ETHTOOL_FLAG_* */ 71041b1c5dSMichal Kubecek 72041b1c5dSMichal Kubecek /* add new constants above here */ 73041b1c5dSMichal Kubecek __ETHTOOL_A_HEADER_CNT, 74041b1c5dSMichal Kubecek ETHTOOL_A_HEADER_MAX = __ETHTOOL_A_HEADER_CNT - 1 75041b1c5dSMichal Kubecek }; 76041b1c5dSMichal Kubecek 7710b518d4SMichal Kubecek /* bit sets */ 7810b518d4SMichal Kubecek 7910b518d4SMichal Kubecek enum { 8010b518d4SMichal Kubecek ETHTOOL_A_BITSET_BIT_UNSPEC, 8110b518d4SMichal Kubecek ETHTOOL_A_BITSET_BIT_INDEX, /* u32 */ 8210b518d4SMichal Kubecek ETHTOOL_A_BITSET_BIT_NAME, /* string */ 8310b518d4SMichal Kubecek ETHTOOL_A_BITSET_BIT_VALUE, /* flag */ 8410b518d4SMichal Kubecek 8510b518d4SMichal Kubecek /* add new constants above here */ 8610b518d4SMichal Kubecek __ETHTOOL_A_BITSET_BIT_CNT, 8710b518d4SMichal Kubecek ETHTOOL_A_BITSET_BIT_MAX = __ETHTOOL_A_BITSET_BIT_CNT - 1 8810b518d4SMichal Kubecek }; 8910b518d4SMichal Kubecek 9010b518d4SMichal Kubecek enum { 9110b518d4SMichal Kubecek ETHTOOL_A_BITSET_BITS_UNSPEC, 9210b518d4SMichal Kubecek ETHTOOL_A_BITSET_BITS_BIT, /* nest - _A_BITSET_BIT_* */ 9310b518d4SMichal Kubecek 9410b518d4SMichal Kubecek /* add new constants above here */ 9510b518d4SMichal Kubecek __ETHTOOL_A_BITSET_BITS_CNT, 9610b518d4SMichal Kubecek ETHTOOL_A_BITSET_BITS_MAX = __ETHTOOL_A_BITSET_BITS_CNT - 1 9710b518d4SMichal Kubecek }; 9810b518d4SMichal Kubecek 9910b518d4SMichal Kubecek enum { 10010b518d4SMichal Kubecek ETHTOOL_A_BITSET_UNSPEC, 10110b518d4SMichal Kubecek ETHTOOL_A_BITSET_NOMASK, /* flag */ 10210b518d4SMichal Kubecek ETHTOOL_A_BITSET_SIZE, /* u32 */ 10310b518d4SMichal Kubecek ETHTOOL_A_BITSET_BITS, /* nest - _A_BITSET_BITS_* */ 10410b518d4SMichal Kubecek ETHTOOL_A_BITSET_VALUE, /* binary */ 10510b518d4SMichal Kubecek ETHTOOL_A_BITSET_MASK, /* binary */ 10610b518d4SMichal Kubecek 10710b518d4SMichal Kubecek /* add new constants above here */ 10810b518d4SMichal Kubecek __ETHTOOL_A_BITSET_CNT, 10910b518d4SMichal Kubecek ETHTOOL_A_BITSET_MAX = __ETHTOOL_A_BITSET_CNT - 1 11010b518d4SMichal Kubecek }; 11110b518d4SMichal Kubecek 11271921690SMichal Kubecek /* string sets */ 11371921690SMichal Kubecek 11471921690SMichal Kubecek enum { 11571921690SMichal Kubecek ETHTOOL_A_STRING_UNSPEC, 11671921690SMichal Kubecek ETHTOOL_A_STRING_INDEX, /* u32 */ 11771921690SMichal Kubecek ETHTOOL_A_STRING_VALUE, /* string */ 11871921690SMichal Kubecek 11971921690SMichal Kubecek /* add new constants above here */ 12071921690SMichal Kubecek __ETHTOOL_A_STRING_CNT, 12171921690SMichal Kubecek ETHTOOL_A_STRING_MAX = __ETHTOOL_A_STRING_CNT - 1 12271921690SMichal Kubecek }; 12371921690SMichal Kubecek 12471921690SMichal Kubecek enum { 12571921690SMichal Kubecek ETHTOOL_A_STRINGS_UNSPEC, 12671921690SMichal Kubecek ETHTOOL_A_STRINGS_STRING, /* nest - _A_STRINGS_* */ 12771921690SMichal Kubecek 12871921690SMichal Kubecek /* add new constants above here */ 12971921690SMichal Kubecek __ETHTOOL_A_STRINGS_CNT, 13071921690SMichal Kubecek ETHTOOL_A_STRINGS_MAX = __ETHTOOL_A_STRINGS_CNT - 1 13171921690SMichal Kubecek }; 13271921690SMichal Kubecek 13371921690SMichal Kubecek enum { 13471921690SMichal Kubecek ETHTOOL_A_STRINGSET_UNSPEC, 13571921690SMichal Kubecek ETHTOOL_A_STRINGSET_ID, /* u32 */ 13671921690SMichal Kubecek ETHTOOL_A_STRINGSET_COUNT, /* u32 */ 13771921690SMichal Kubecek ETHTOOL_A_STRINGSET_STRINGS, /* nest - _A_STRINGS_* */ 13871921690SMichal Kubecek 13971921690SMichal Kubecek /* add new constants above here */ 14071921690SMichal Kubecek __ETHTOOL_A_STRINGSET_CNT, 14171921690SMichal Kubecek ETHTOOL_A_STRINGSET_MAX = __ETHTOOL_A_STRINGSET_CNT - 1 14271921690SMichal Kubecek }; 14371921690SMichal Kubecek 14471921690SMichal Kubecek enum { 14571921690SMichal Kubecek ETHTOOL_A_STRINGSETS_UNSPEC, 14671921690SMichal Kubecek ETHTOOL_A_STRINGSETS_STRINGSET, /* nest - _A_STRINGSET_* */ 14771921690SMichal Kubecek 14871921690SMichal Kubecek /* add new constants above here */ 14971921690SMichal Kubecek __ETHTOOL_A_STRINGSETS_CNT, 15071921690SMichal Kubecek ETHTOOL_A_STRINGSETS_MAX = __ETHTOOL_A_STRINGSETS_CNT - 1 15171921690SMichal Kubecek }; 15271921690SMichal Kubecek 15371921690SMichal Kubecek /* STRSET */ 15471921690SMichal Kubecek 15571921690SMichal Kubecek enum { 15671921690SMichal Kubecek ETHTOOL_A_STRSET_UNSPEC, 15771921690SMichal Kubecek ETHTOOL_A_STRSET_HEADER, /* nest - _A_HEADER_* */ 15871921690SMichal Kubecek ETHTOOL_A_STRSET_STRINGSETS, /* nest - _A_STRINGSETS_* */ 15971921690SMichal Kubecek ETHTOOL_A_STRSET_COUNTS_ONLY, /* flag */ 16071921690SMichal Kubecek 16171921690SMichal Kubecek /* add new constants above here */ 16271921690SMichal Kubecek __ETHTOOL_A_STRSET_CNT, 16371921690SMichal Kubecek ETHTOOL_A_STRSET_MAX = __ETHTOOL_A_STRSET_CNT - 1 16471921690SMichal Kubecek }; 16571921690SMichal Kubecek 166459e0b81SMichal Kubecek /* LINKINFO */ 167459e0b81SMichal Kubecek 168459e0b81SMichal Kubecek enum { 169459e0b81SMichal Kubecek ETHTOOL_A_LINKINFO_UNSPEC, 170459e0b81SMichal Kubecek ETHTOOL_A_LINKINFO_HEADER, /* nest - _A_HEADER_* */ 171459e0b81SMichal Kubecek ETHTOOL_A_LINKINFO_PORT, /* u8 */ 172459e0b81SMichal Kubecek ETHTOOL_A_LINKINFO_PHYADDR, /* u8 */ 173459e0b81SMichal Kubecek ETHTOOL_A_LINKINFO_TP_MDIX, /* u8 */ 174459e0b81SMichal Kubecek ETHTOOL_A_LINKINFO_TP_MDIX_CTRL, /* u8 */ 175459e0b81SMichal Kubecek ETHTOOL_A_LINKINFO_TRANSCEIVER, /* u8 */ 176459e0b81SMichal Kubecek 177459e0b81SMichal Kubecek /* add new constants above here */ 178459e0b81SMichal Kubecek __ETHTOOL_A_LINKINFO_CNT, 179459e0b81SMichal Kubecek ETHTOOL_A_LINKINFO_MAX = __ETHTOOL_A_LINKINFO_CNT - 1 180459e0b81SMichal Kubecek }; 181459e0b81SMichal Kubecek 182f625aa9bSMichal Kubecek /* LINKMODES */ 183f625aa9bSMichal Kubecek 184f625aa9bSMichal Kubecek enum { 185f625aa9bSMichal Kubecek ETHTOOL_A_LINKMODES_UNSPEC, 186f625aa9bSMichal Kubecek ETHTOOL_A_LINKMODES_HEADER, /* nest - _A_HEADER_* */ 187f625aa9bSMichal Kubecek ETHTOOL_A_LINKMODES_AUTONEG, /* u8 */ 188f625aa9bSMichal Kubecek ETHTOOL_A_LINKMODES_OURS, /* bitset */ 189f625aa9bSMichal Kubecek ETHTOOL_A_LINKMODES_PEER, /* bitset */ 190f625aa9bSMichal Kubecek ETHTOOL_A_LINKMODES_SPEED, /* u32 */ 191f625aa9bSMichal Kubecek ETHTOOL_A_LINKMODES_DUPLEX, /* u8 */ 192f625aa9bSMichal Kubecek 193f625aa9bSMichal Kubecek /* add new constants above here */ 194f625aa9bSMichal Kubecek __ETHTOOL_A_LINKMODES_CNT, 195f625aa9bSMichal Kubecek ETHTOOL_A_LINKMODES_MAX = __ETHTOOL_A_LINKMODES_CNT - 1 196f625aa9bSMichal Kubecek }; 197f625aa9bSMichal Kubecek 1983d2b847fSMichal Kubecek /* LINKSTATE */ 1993d2b847fSMichal Kubecek 2003d2b847fSMichal Kubecek enum { 2013d2b847fSMichal Kubecek ETHTOOL_A_LINKSTATE_UNSPEC, 2023d2b847fSMichal Kubecek ETHTOOL_A_LINKSTATE_HEADER, /* nest - _A_HEADER_* */ 2033d2b847fSMichal Kubecek ETHTOOL_A_LINKSTATE_LINK, /* u8 */ 2043d2b847fSMichal Kubecek 2053d2b847fSMichal Kubecek /* add new constants above here */ 2063d2b847fSMichal Kubecek __ETHTOOL_A_LINKSTATE_CNT, 2073d2b847fSMichal Kubecek ETHTOOL_A_LINKSTATE_MAX = __ETHTOOL_A_LINKSTATE_CNT - 1 2083d2b847fSMichal Kubecek }; 2093d2b847fSMichal Kubecek 2106a94b8ccSMichal Kubecek /* DEBUG */ 2116a94b8ccSMichal Kubecek 2126a94b8ccSMichal Kubecek enum { 2136a94b8ccSMichal Kubecek ETHTOOL_A_DEBUG_UNSPEC, 2146a94b8ccSMichal Kubecek ETHTOOL_A_DEBUG_HEADER, /* nest - _A_HEADER_* */ 2156a94b8ccSMichal Kubecek ETHTOOL_A_DEBUG_MSGMASK, /* bitset */ 2166a94b8ccSMichal Kubecek 2176a94b8ccSMichal Kubecek /* add new constants above here */ 2186a94b8ccSMichal Kubecek __ETHTOOL_A_DEBUG_CNT, 2196a94b8ccSMichal Kubecek ETHTOOL_A_DEBUG_MAX = __ETHTOOL_A_DEBUG_CNT - 1 2206a94b8ccSMichal Kubecek }; 2216a94b8ccSMichal Kubecek 22251ea22b0SMichal Kubecek /* WOL */ 22351ea22b0SMichal Kubecek 22451ea22b0SMichal Kubecek enum { 22551ea22b0SMichal Kubecek ETHTOOL_A_WOL_UNSPEC, 22651ea22b0SMichal Kubecek ETHTOOL_A_WOL_HEADER, /* nest - _A_HEADER_* */ 22751ea22b0SMichal Kubecek ETHTOOL_A_WOL_MODES, /* bitset */ 22851ea22b0SMichal Kubecek ETHTOOL_A_WOL_SOPASS, /* binary */ 22951ea22b0SMichal Kubecek 23051ea22b0SMichal Kubecek /* add new constants above here */ 23151ea22b0SMichal Kubecek __ETHTOOL_A_WOL_CNT, 23251ea22b0SMichal Kubecek ETHTOOL_A_WOL_MAX = __ETHTOOL_A_WOL_CNT - 1 23351ea22b0SMichal Kubecek }; 23451ea22b0SMichal Kubecek 2350524399dSMichal Kubecek /* FEATURES */ 2360524399dSMichal Kubecek 2370524399dSMichal Kubecek enum { 2380524399dSMichal Kubecek ETHTOOL_A_FEATURES_UNSPEC, 2390524399dSMichal Kubecek ETHTOOL_A_FEATURES_HEADER, /* nest - _A_HEADER_* */ 2400524399dSMichal Kubecek ETHTOOL_A_FEATURES_HW, /* bitset */ 2410524399dSMichal Kubecek ETHTOOL_A_FEATURES_WANTED, /* bitset */ 2420524399dSMichal Kubecek ETHTOOL_A_FEATURES_ACTIVE, /* bitset */ 2430524399dSMichal Kubecek ETHTOOL_A_FEATURES_NOCHANGE, /* bitset */ 2440524399dSMichal Kubecek 2450524399dSMichal Kubecek /* add new constants above here */ 2460524399dSMichal Kubecek __ETHTOOL_A_FEATURES_CNT, 2470524399dSMichal Kubecek ETHTOOL_A_FEATURES_MAX = __ETHTOOL_A_FEATURES_CNT - 1 2480524399dSMichal Kubecek }; 2490524399dSMichal Kubecek 2502b4a8990SMichal Kubecek /* generic netlink info */ 2512b4a8990SMichal Kubecek #define ETHTOOL_GENL_NAME "ethtool" 2522b4a8990SMichal Kubecek #define ETHTOOL_GENL_VERSION 1 2532b4a8990SMichal Kubecek 2546b08d6c1SMichal Kubecek #define ETHTOOL_MCGRP_MONITOR_NAME "monitor" 2556b08d6c1SMichal Kubecek 2562b4a8990SMichal Kubecek #endif /* _UAPI_LINUX_ETHTOOL_NETLINK_H_ */ 257