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, 202b4a8990SMichal Kubecek 212b4a8990SMichal Kubecek /* add new constants above here */ 222b4a8990SMichal Kubecek __ETHTOOL_MSG_USER_CNT, 232b4a8990SMichal Kubecek ETHTOOL_MSG_USER_MAX = __ETHTOOL_MSG_USER_CNT - 1 242b4a8990SMichal Kubecek }; 252b4a8990SMichal Kubecek 262b4a8990SMichal Kubecek /* message types - kernel to userspace */ 272b4a8990SMichal Kubecek enum { 282b4a8990SMichal Kubecek ETHTOOL_MSG_KERNEL_NONE, 2971921690SMichal Kubecek ETHTOOL_MSG_STRSET_GET_REPLY, 30459e0b81SMichal Kubecek ETHTOOL_MSG_LINKINFO_GET_REPLY, 31*73286734SMichal Kubecek ETHTOOL_MSG_LINKINFO_NTF, 322b4a8990SMichal Kubecek 332b4a8990SMichal Kubecek /* add new constants above here */ 342b4a8990SMichal Kubecek __ETHTOOL_MSG_KERNEL_CNT, 352b4a8990SMichal Kubecek ETHTOOL_MSG_KERNEL_MAX = __ETHTOOL_MSG_KERNEL_CNT - 1 362b4a8990SMichal Kubecek }; 372b4a8990SMichal Kubecek 38041b1c5dSMichal Kubecek /* request header */ 39041b1c5dSMichal Kubecek 40041b1c5dSMichal Kubecek /* use compact bitsets in reply */ 41041b1c5dSMichal Kubecek #define ETHTOOL_FLAG_COMPACT_BITSETS (1 << 0) 42041b1c5dSMichal Kubecek /* provide optional reply for SET or ACT requests */ 43041b1c5dSMichal Kubecek #define ETHTOOL_FLAG_OMIT_REPLY (1 << 1) 44041b1c5dSMichal Kubecek 45041b1c5dSMichal Kubecek #define ETHTOOL_FLAG_ALL (ETHTOOL_FLAG_COMPACT_BITSETS | \ 46041b1c5dSMichal Kubecek ETHTOOL_FLAG_OMIT_REPLY) 47041b1c5dSMichal Kubecek 48041b1c5dSMichal Kubecek enum { 49041b1c5dSMichal Kubecek ETHTOOL_A_HEADER_UNSPEC, 50041b1c5dSMichal Kubecek ETHTOOL_A_HEADER_DEV_INDEX, /* u32 */ 51041b1c5dSMichal Kubecek ETHTOOL_A_HEADER_DEV_NAME, /* string */ 52041b1c5dSMichal Kubecek ETHTOOL_A_HEADER_FLAGS, /* u32 - ETHTOOL_FLAG_* */ 53041b1c5dSMichal Kubecek 54041b1c5dSMichal Kubecek /* add new constants above here */ 55041b1c5dSMichal Kubecek __ETHTOOL_A_HEADER_CNT, 56041b1c5dSMichal Kubecek ETHTOOL_A_HEADER_MAX = __ETHTOOL_A_HEADER_CNT - 1 57041b1c5dSMichal Kubecek }; 58041b1c5dSMichal Kubecek 5910b518d4SMichal Kubecek /* bit sets */ 6010b518d4SMichal Kubecek 6110b518d4SMichal Kubecek enum { 6210b518d4SMichal Kubecek ETHTOOL_A_BITSET_BIT_UNSPEC, 6310b518d4SMichal Kubecek ETHTOOL_A_BITSET_BIT_INDEX, /* u32 */ 6410b518d4SMichal Kubecek ETHTOOL_A_BITSET_BIT_NAME, /* string */ 6510b518d4SMichal Kubecek ETHTOOL_A_BITSET_BIT_VALUE, /* flag */ 6610b518d4SMichal Kubecek 6710b518d4SMichal Kubecek /* add new constants above here */ 6810b518d4SMichal Kubecek __ETHTOOL_A_BITSET_BIT_CNT, 6910b518d4SMichal Kubecek ETHTOOL_A_BITSET_BIT_MAX = __ETHTOOL_A_BITSET_BIT_CNT - 1 7010b518d4SMichal Kubecek }; 7110b518d4SMichal Kubecek 7210b518d4SMichal Kubecek enum { 7310b518d4SMichal Kubecek ETHTOOL_A_BITSET_BITS_UNSPEC, 7410b518d4SMichal Kubecek ETHTOOL_A_BITSET_BITS_BIT, /* nest - _A_BITSET_BIT_* */ 7510b518d4SMichal Kubecek 7610b518d4SMichal Kubecek /* add new constants above here */ 7710b518d4SMichal Kubecek __ETHTOOL_A_BITSET_BITS_CNT, 7810b518d4SMichal Kubecek ETHTOOL_A_BITSET_BITS_MAX = __ETHTOOL_A_BITSET_BITS_CNT - 1 7910b518d4SMichal Kubecek }; 8010b518d4SMichal Kubecek 8110b518d4SMichal Kubecek enum { 8210b518d4SMichal Kubecek ETHTOOL_A_BITSET_UNSPEC, 8310b518d4SMichal Kubecek ETHTOOL_A_BITSET_NOMASK, /* flag */ 8410b518d4SMichal Kubecek ETHTOOL_A_BITSET_SIZE, /* u32 */ 8510b518d4SMichal Kubecek ETHTOOL_A_BITSET_BITS, /* nest - _A_BITSET_BITS_* */ 8610b518d4SMichal Kubecek ETHTOOL_A_BITSET_VALUE, /* binary */ 8710b518d4SMichal Kubecek ETHTOOL_A_BITSET_MASK, /* binary */ 8810b518d4SMichal Kubecek 8910b518d4SMichal Kubecek /* add new constants above here */ 9010b518d4SMichal Kubecek __ETHTOOL_A_BITSET_CNT, 9110b518d4SMichal Kubecek ETHTOOL_A_BITSET_MAX = __ETHTOOL_A_BITSET_CNT - 1 9210b518d4SMichal Kubecek }; 9310b518d4SMichal Kubecek 9471921690SMichal Kubecek /* string sets */ 9571921690SMichal Kubecek 9671921690SMichal Kubecek enum { 9771921690SMichal Kubecek ETHTOOL_A_STRING_UNSPEC, 9871921690SMichal Kubecek ETHTOOL_A_STRING_INDEX, /* u32 */ 9971921690SMichal Kubecek ETHTOOL_A_STRING_VALUE, /* string */ 10071921690SMichal Kubecek 10171921690SMichal Kubecek /* add new constants above here */ 10271921690SMichal Kubecek __ETHTOOL_A_STRING_CNT, 10371921690SMichal Kubecek ETHTOOL_A_STRING_MAX = __ETHTOOL_A_STRING_CNT - 1 10471921690SMichal Kubecek }; 10571921690SMichal Kubecek 10671921690SMichal Kubecek enum { 10771921690SMichal Kubecek ETHTOOL_A_STRINGS_UNSPEC, 10871921690SMichal Kubecek ETHTOOL_A_STRINGS_STRING, /* nest - _A_STRINGS_* */ 10971921690SMichal Kubecek 11071921690SMichal Kubecek /* add new constants above here */ 11171921690SMichal Kubecek __ETHTOOL_A_STRINGS_CNT, 11271921690SMichal Kubecek ETHTOOL_A_STRINGS_MAX = __ETHTOOL_A_STRINGS_CNT - 1 11371921690SMichal Kubecek }; 11471921690SMichal Kubecek 11571921690SMichal Kubecek enum { 11671921690SMichal Kubecek ETHTOOL_A_STRINGSET_UNSPEC, 11771921690SMichal Kubecek ETHTOOL_A_STRINGSET_ID, /* u32 */ 11871921690SMichal Kubecek ETHTOOL_A_STRINGSET_COUNT, /* u32 */ 11971921690SMichal Kubecek ETHTOOL_A_STRINGSET_STRINGS, /* nest - _A_STRINGS_* */ 12071921690SMichal Kubecek 12171921690SMichal Kubecek /* add new constants above here */ 12271921690SMichal Kubecek __ETHTOOL_A_STRINGSET_CNT, 12371921690SMichal Kubecek ETHTOOL_A_STRINGSET_MAX = __ETHTOOL_A_STRINGSET_CNT - 1 12471921690SMichal Kubecek }; 12571921690SMichal Kubecek 12671921690SMichal Kubecek enum { 12771921690SMichal Kubecek ETHTOOL_A_STRINGSETS_UNSPEC, 12871921690SMichal Kubecek ETHTOOL_A_STRINGSETS_STRINGSET, /* nest - _A_STRINGSET_* */ 12971921690SMichal Kubecek 13071921690SMichal Kubecek /* add new constants above here */ 13171921690SMichal Kubecek __ETHTOOL_A_STRINGSETS_CNT, 13271921690SMichal Kubecek ETHTOOL_A_STRINGSETS_MAX = __ETHTOOL_A_STRINGSETS_CNT - 1 13371921690SMichal Kubecek }; 13471921690SMichal Kubecek 13571921690SMichal Kubecek /* STRSET */ 13671921690SMichal Kubecek 13771921690SMichal Kubecek enum { 13871921690SMichal Kubecek ETHTOOL_A_STRSET_UNSPEC, 13971921690SMichal Kubecek ETHTOOL_A_STRSET_HEADER, /* nest - _A_HEADER_* */ 14071921690SMichal Kubecek ETHTOOL_A_STRSET_STRINGSETS, /* nest - _A_STRINGSETS_* */ 14171921690SMichal Kubecek ETHTOOL_A_STRSET_COUNTS_ONLY, /* flag */ 14271921690SMichal Kubecek 14371921690SMichal Kubecek /* add new constants above here */ 14471921690SMichal Kubecek __ETHTOOL_A_STRSET_CNT, 14571921690SMichal Kubecek ETHTOOL_A_STRSET_MAX = __ETHTOOL_A_STRSET_CNT - 1 14671921690SMichal Kubecek }; 14771921690SMichal Kubecek 148459e0b81SMichal Kubecek /* LINKINFO */ 149459e0b81SMichal Kubecek 150459e0b81SMichal Kubecek enum { 151459e0b81SMichal Kubecek ETHTOOL_A_LINKINFO_UNSPEC, 152459e0b81SMichal Kubecek ETHTOOL_A_LINKINFO_HEADER, /* nest - _A_HEADER_* */ 153459e0b81SMichal Kubecek ETHTOOL_A_LINKINFO_PORT, /* u8 */ 154459e0b81SMichal Kubecek ETHTOOL_A_LINKINFO_PHYADDR, /* u8 */ 155459e0b81SMichal Kubecek ETHTOOL_A_LINKINFO_TP_MDIX, /* u8 */ 156459e0b81SMichal Kubecek ETHTOOL_A_LINKINFO_TP_MDIX_CTRL, /* u8 */ 157459e0b81SMichal Kubecek ETHTOOL_A_LINKINFO_TRANSCEIVER, /* u8 */ 158459e0b81SMichal Kubecek 159459e0b81SMichal Kubecek /* add new constants above here */ 160459e0b81SMichal Kubecek __ETHTOOL_A_LINKINFO_CNT, 161459e0b81SMichal Kubecek ETHTOOL_A_LINKINFO_MAX = __ETHTOOL_A_LINKINFO_CNT - 1 162459e0b81SMichal Kubecek }; 163459e0b81SMichal Kubecek 1642b4a8990SMichal Kubecek /* generic netlink info */ 1652b4a8990SMichal Kubecek #define ETHTOOL_GENL_NAME "ethtool" 1662b4a8990SMichal Kubecek #define ETHTOOL_GENL_VERSION 1 1672b4a8990SMichal Kubecek 1686b08d6c1SMichal Kubecek #define ETHTOOL_MCGRP_MONITOR_NAME "monitor" 1696b08d6c1SMichal Kubecek 1702b4a8990SMichal Kubecek #endif /* _UAPI_LINUX_ETHTOOL_NETLINK_H_ */ 171