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, 222b4a8990SMichal Kubecek 232b4a8990SMichal Kubecek /* add new constants above here */ 242b4a8990SMichal Kubecek __ETHTOOL_MSG_USER_CNT, 252b4a8990SMichal Kubecek ETHTOOL_MSG_USER_MAX = __ETHTOOL_MSG_USER_CNT - 1 262b4a8990SMichal Kubecek }; 272b4a8990SMichal Kubecek 282b4a8990SMichal Kubecek /* message types - kernel to userspace */ 292b4a8990SMichal Kubecek enum { 302b4a8990SMichal Kubecek ETHTOOL_MSG_KERNEL_NONE, 3171921690SMichal Kubecek ETHTOOL_MSG_STRSET_GET_REPLY, 32459e0b81SMichal Kubecek ETHTOOL_MSG_LINKINFO_GET_REPLY, 3373286734SMichal Kubecek ETHTOOL_MSG_LINKINFO_NTF, 34f625aa9bSMichal Kubecek ETHTOOL_MSG_LINKMODES_GET_REPLY, 352b4a8990SMichal Kubecek 362b4a8990SMichal Kubecek /* add new constants above here */ 372b4a8990SMichal Kubecek __ETHTOOL_MSG_KERNEL_CNT, 382b4a8990SMichal Kubecek ETHTOOL_MSG_KERNEL_MAX = __ETHTOOL_MSG_KERNEL_CNT - 1 392b4a8990SMichal Kubecek }; 402b4a8990SMichal Kubecek 41041b1c5dSMichal Kubecek /* request header */ 42041b1c5dSMichal Kubecek 43041b1c5dSMichal Kubecek /* use compact bitsets in reply */ 44041b1c5dSMichal Kubecek #define ETHTOOL_FLAG_COMPACT_BITSETS (1 << 0) 45041b1c5dSMichal Kubecek /* provide optional reply for SET or ACT requests */ 46041b1c5dSMichal Kubecek #define ETHTOOL_FLAG_OMIT_REPLY (1 << 1) 47041b1c5dSMichal Kubecek 48041b1c5dSMichal Kubecek #define ETHTOOL_FLAG_ALL (ETHTOOL_FLAG_COMPACT_BITSETS | \ 49041b1c5dSMichal Kubecek ETHTOOL_FLAG_OMIT_REPLY) 50041b1c5dSMichal Kubecek 51041b1c5dSMichal Kubecek enum { 52041b1c5dSMichal Kubecek ETHTOOL_A_HEADER_UNSPEC, 53041b1c5dSMichal Kubecek ETHTOOL_A_HEADER_DEV_INDEX, /* u32 */ 54041b1c5dSMichal Kubecek ETHTOOL_A_HEADER_DEV_NAME, /* string */ 55041b1c5dSMichal Kubecek ETHTOOL_A_HEADER_FLAGS, /* u32 - ETHTOOL_FLAG_* */ 56041b1c5dSMichal Kubecek 57041b1c5dSMichal Kubecek /* add new constants above here */ 58041b1c5dSMichal Kubecek __ETHTOOL_A_HEADER_CNT, 59041b1c5dSMichal Kubecek ETHTOOL_A_HEADER_MAX = __ETHTOOL_A_HEADER_CNT - 1 60041b1c5dSMichal Kubecek }; 61041b1c5dSMichal Kubecek 6210b518d4SMichal Kubecek /* bit sets */ 6310b518d4SMichal Kubecek 6410b518d4SMichal Kubecek enum { 6510b518d4SMichal Kubecek ETHTOOL_A_BITSET_BIT_UNSPEC, 6610b518d4SMichal Kubecek ETHTOOL_A_BITSET_BIT_INDEX, /* u32 */ 6710b518d4SMichal Kubecek ETHTOOL_A_BITSET_BIT_NAME, /* string */ 6810b518d4SMichal Kubecek ETHTOOL_A_BITSET_BIT_VALUE, /* flag */ 6910b518d4SMichal Kubecek 7010b518d4SMichal Kubecek /* add new constants above here */ 7110b518d4SMichal Kubecek __ETHTOOL_A_BITSET_BIT_CNT, 7210b518d4SMichal Kubecek ETHTOOL_A_BITSET_BIT_MAX = __ETHTOOL_A_BITSET_BIT_CNT - 1 7310b518d4SMichal Kubecek }; 7410b518d4SMichal Kubecek 7510b518d4SMichal Kubecek enum { 7610b518d4SMichal Kubecek ETHTOOL_A_BITSET_BITS_UNSPEC, 7710b518d4SMichal Kubecek ETHTOOL_A_BITSET_BITS_BIT, /* nest - _A_BITSET_BIT_* */ 7810b518d4SMichal Kubecek 7910b518d4SMichal Kubecek /* add new constants above here */ 8010b518d4SMichal Kubecek __ETHTOOL_A_BITSET_BITS_CNT, 8110b518d4SMichal Kubecek ETHTOOL_A_BITSET_BITS_MAX = __ETHTOOL_A_BITSET_BITS_CNT - 1 8210b518d4SMichal Kubecek }; 8310b518d4SMichal Kubecek 8410b518d4SMichal Kubecek enum { 8510b518d4SMichal Kubecek ETHTOOL_A_BITSET_UNSPEC, 8610b518d4SMichal Kubecek ETHTOOL_A_BITSET_NOMASK, /* flag */ 8710b518d4SMichal Kubecek ETHTOOL_A_BITSET_SIZE, /* u32 */ 8810b518d4SMichal Kubecek ETHTOOL_A_BITSET_BITS, /* nest - _A_BITSET_BITS_* */ 8910b518d4SMichal Kubecek ETHTOOL_A_BITSET_VALUE, /* binary */ 9010b518d4SMichal Kubecek ETHTOOL_A_BITSET_MASK, /* binary */ 9110b518d4SMichal Kubecek 9210b518d4SMichal Kubecek /* add new constants above here */ 9310b518d4SMichal Kubecek __ETHTOOL_A_BITSET_CNT, 9410b518d4SMichal Kubecek ETHTOOL_A_BITSET_MAX = __ETHTOOL_A_BITSET_CNT - 1 9510b518d4SMichal Kubecek }; 9610b518d4SMichal Kubecek 9771921690SMichal Kubecek /* string sets */ 9871921690SMichal Kubecek 9971921690SMichal Kubecek enum { 10071921690SMichal Kubecek ETHTOOL_A_STRING_UNSPEC, 10171921690SMichal Kubecek ETHTOOL_A_STRING_INDEX, /* u32 */ 10271921690SMichal Kubecek ETHTOOL_A_STRING_VALUE, /* string */ 10371921690SMichal Kubecek 10471921690SMichal Kubecek /* add new constants above here */ 10571921690SMichal Kubecek __ETHTOOL_A_STRING_CNT, 10671921690SMichal Kubecek ETHTOOL_A_STRING_MAX = __ETHTOOL_A_STRING_CNT - 1 10771921690SMichal Kubecek }; 10871921690SMichal Kubecek 10971921690SMichal Kubecek enum { 11071921690SMichal Kubecek ETHTOOL_A_STRINGS_UNSPEC, 11171921690SMichal Kubecek ETHTOOL_A_STRINGS_STRING, /* nest - _A_STRINGS_* */ 11271921690SMichal Kubecek 11371921690SMichal Kubecek /* add new constants above here */ 11471921690SMichal Kubecek __ETHTOOL_A_STRINGS_CNT, 11571921690SMichal Kubecek ETHTOOL_A_STRINGS_MAX = __ETHTOOL_A_STRINGS_CNT - 1 11671921690SMichal Kubecek }; 11771921690SMichal Kubecek 11871921690SMichal Kubecek enum { 11971921690SMichal Kubecek ETHTOOL_A_STRINGSET_UNSPEC, 12071921690SMichal Kubecek ETHTOOL_A_STRINGSET_ID, /* u32 */ 12171921690SMichal Kubecek ETHTOOL_A_STRINGSET_COUNT, /* u32 */ 12271921690SMichal Kubecek ETHTOOL_A_STRINGSET_STRINGS, /* nest - _A_STRINGS_* */ 12371921690SMichal Kubecek 12471921690SMichal Kubecek /* add new constants above here */ 12571921690SMichal Kubecek __ETHTOOL_A_STRINGSET_CNT, 12671921690SMichal Kubecek ETHTOOL_A_STRINGSET_MAX = __ETHTOOL_A_STRINGSET_CNT - 1 12771921690SMichal Kubecek }; 12871921690SMichal Kubecek 12971921690SMichal Kubecek enum { 13071921690SMichal Kubecek ETHTOOL_A_STRINGSETS_UNSPEC, 13171921690SMichal Kubecek ETHTOOL_A_STRINGSETS_STRINGSET, /* nest - _A_STRINGSET_* */ 13271921690SMichal Kubecek 13371921690SMichal Kubecek /* add new constants above here */ 13471921690SMichal Kubecek __ETHTOOL_A_STRINGSETS_CNT, 13571921690SMichal Kubecek ETHTOOL_A_STRINGSETS_MAX = __ETHTOOL_A_STRINGSETS_CNT - 1 13671921690SMichal Kubecek }; 13771921690SMichal Kubecek 13871921690SMichal Kubecek /* STRSET */ 13971921690SMichal Kubecek 14071921690SMichal Kubecek enum { 14171921690SMichal Kubecek ETHTOOL_A_STRSET_UNSPEC, 14271921690SMichal Kubecek ETHTOOL_A_STRSET_HEADER, /* nest - _A_HEADER_* */ 14371921690SMichal Kubecek ETHTOOL_A_STRSET_STRINGSETS, /* nest - _A_STRINGSETS_* */ 14471921690SMichal Kubecek ETHTOOL_A_STRSET_COUNTS_ONLY, /* flag */ 14571921690SMichal Kubecek 14671921690SMichal Kubecek /* add new constants above here */ 14771921690SMichal Kubecek __ETHTOOL_A_STRSET_CNT, 14871921690SMichal Kubecek ETHTOOL_A_STRSET_MAX = __ETHTOOL_A_STRSET_CNT - 1 14971921690SMichal Kubecek }; 15071921690SMichal Kubecek 151459e0b81SMichal Kubecek /* LINKINFO */ 152459e0b81SMichal Kubecek 153459e0b81SMichal Kubecek enum { 154459e0b81SMichal Kubecek ETHTOOL_A_LINKINFO_UNSPEC, 155459e0b81SMichal Kubecek ETHTOOL_A_LINKINFO_HEADER, /* nest - _A_HEADER_* */ 156459e0b81SMichal Kubecek ETHTOOL_A_LINKINFO_PORT, /* u8 */ 157459e0b81SMichal Kubecek ETHTOOL_A_LINKINFO_PHYADDR, /* u8 */ 158459e0b81SMichal Kubecek ETHTOOL_A_LINKINFO_TP_MDIX, /* u8 */ 159459e0b81SMichal Kubecek ETHTOOL_A_LINKINFO_TP_MDIX_CTRL, /* u8 */ 160459e0b81SMichal Kubecek ETHTOOL_A_LINKINFO_TRANSCEIVER, /* u8 */ 161459e0b81SMichal Kubecek 162459e0b81SMichal Kubecek /* add new constants above here */ 163459e0b81SMichal Kubecek __ETHTOOL_A_LINKINFO_CNT, 164459e0b81SMichal Kubecek ETHTOOL_A_LINKINFO_MAX = __ETHTOOL_A_LINKINFO_CNT - 1 165459e0b81SMichal Kubecek }; 166459e0b81SMichal Kubecek 167f625aa9bSMichal Kubecek /* LINKMODES */ 168f625aa9bSMichal Kubecek 169f625aa9bSMichal Kubecek enum { 170f625aa9bSMichal Kubecek ETHTOOL_A_LINKMODES_UNSPEC, 171f625aa9bSMichal Kubecek ETHTOOL_A_LINKMODES_HEADER, /* nest - _A_HEADER_* */ 172f625aa9bSMichal Kubecek ETHTOOL_A_LINKMODES_AUTONEG, /* u8 */ 173f625aa9bSMichal Kubecek ETHTOOL_A_LINKMODES_OURS, /* bitset */ 174f625aa9bSMichal Kubecek ETHTOOL_A_LINKMODES_PEER, /* bitset */ 175f625aa9bSMichal Kubecek ETHTOOL_A_LINKMODES_SPEED, /* u32 */ 176f625aa9bSMichal Kubecek ETHTOOL_A_LINKMODES_DUPLEX, /* u8 */ 177f625aa9bSMichal Kubecek 178f625aa9bSMichal Kubecek /* add new constants above here */ 179f625aa9bSMichal Kubecek __ETHTOOL_A_LINKMODES_CNT, 180f625aa9bSMichal Kubecek ETHTOOL_A_LINKMODES_MAX = __ETHTOOL_A_LINKMODES_CNT - 1 181f625aa9bSMichal Kubecek }; 182f625aa9bSMichal Kubecek 1832b4a8990SMichal Kubecek /* generic netlink info */ 1842b4a8990SMichal Kubecek #define ETHTOOL_GENL_NAME "ethtool" 1852b4a8990SMichal Kubecek #define ETHTOOL_GENL_VERSION 1 1862b4a8990SMichal Kubecek 1876b08d6c1SMichal Kubecek #define ETHTOOL_MCGRP_MONITOR_NAME "monitor" 1886b08d6c1SMichal Kubecek 1892b4a8990SMichal Kubecek #endif /* _UAPI_LINUX_ETHTOOL_NETLINK_H_ */ 190