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> 1349922401SStanislav Fomichev #include <linux/ethtool_netlink_generated.h> 14041b1c5dSMichal Kubecek 15041b1c5dSMichal Kubecek #define ETHTOOL_FLAG_ALL (ETHTOOL_FLAG_COMPACT_BITSETS | \ 169a27a330SJakub Kicinski ETHTOOL_FLAG_OMIT_REPLY | \ 179a27a330SJakub Kicinski ETHTOOL_FLAG_STATS) 18041b1c5dSMichal Kubecek 19b28efb93SAndrew Lunn /* CABLE TEST NOTIFY */ 20b28efb93SAndrew Lunn enum { 21b28efb93SAndrew Lunn ETHTOOL_A_CABLE_RESULT_CODE_UNSPEC, 22b28efb93SAndrew Lunn ETHTOOL_A_CABLE_RESULT_CODE_OK, 23b28efb93SAndrew Lunn ETHTOOL_A_CABLE_RESULT_CODE_OPEN, 24b28efb93SAndrew Lunn ETHTOOL_A_CABLE_RESULT_CODE_SAME_SHORT, 25b28efb93SAndrew Lunn ETHTOOL_A_CABLE_RESULT_CODE_CROSS_SHORT, 269cc8a6e6SPawel Dembicki /* detected reflection caused by the impedance discontinuity between 279cc8a6e6SPawel Dembicki * a regular 100 Ohm cable and a part with the abnormal impedance value 289cc8a6e6SPawel Dembicki */ 299cc8a6e6SPawel Dembicki ETHTOOL_A_CABLE_RESULT_CODE_IMPEDANCE_MISMATCH, 302140e63cSOleksij Rempel /* TDR not possible due to high noise level */ 312140e63cSOleksij Rempel ETHTOOL_A_CABLE_RESULT_CODE_NOISE, 322140e63cSOleksij Rempel /* TDR resolution not possible / out of distance */ 332140e63cSOleksij Rempel ETHTOOL_A_CABLE_RESULT_CODE_RESOLUTION_NOT_POSSIBLE, 34b28efb93SAndrew Lunn }; 35b28efb93SAndrew Lunn 36b28efb93SAndrew Lunn enum { 37b28efb93SAndrew Lunn ETHTOOL_A_CABLE_PAIR_A, 38b28efb93SAndrew Lunn ETHTOOL_A_CABLE_PAIR_B, 39b28efb93SAndrew Lunn ETHTOOL_A_CABLE_PAIR_C, 40b28efb93SAndrew Lunn ETHTOOL_A_CABLE_PAIR_D, 41b28efb93SAndrew Lunn }; 42b28efb93SAndrew Lunn 43abcd3026SOleksij Rempel /* Information source for specific results. */ 44abcd3026SOleksij Rempel enum { 45abcd3026SOleksij Rempel ETHTOOL_A_CABLE_INF_SRC_UNSPEC, 46abcd3026SOleksij Rempel /* Results provided by the Time Domain Reflectometry (TDR) */ 47abcd3026SOleksij Rempel ETHTOOL_A_CABLE_INF_SRC_TDR, 48abcd3026SOleksij Rempel /* Results provided by the Active Link Cable Diagnostic (ALCD) */ 49abcd3026SOleksij Rempel ETHTOOL_A_CABLE_INF_SRC_ALCD, 50abcd3026SOleksij Rempel }; 51abcd3026SOleksij Rempel 52b28efb93SAndrew Lunn enum { 53b28efb93SAndrew Lunn ETHTOOL_A_CABLE_TEST_NTF_STATUS_UNSPEC, 54b28efb93SAndrew Lunn ETHTOOL_A_CABLE_TEST_NTF_STATUS_STARTED, 55b28efb93SAndrew Lunn ETHTOOL_A_CABLE_TEST_NTF_STATUS_COMPLETED 56b28efb93SAndrew Lunn }; 57b28efb93SAndrew Lunn 58a331172bSAndrew Lunn /* CABLE TEST TDR NOTIFY */ 59a331172bSAndrew Lunn 60a331172bSAndrew Lunn enum { 61a331172bSAndrew Lunn ETHTOOL_A_CABLE_AMPLITUDE_UNSPEC, 62a331172bSAndrew Lunn ETHTOOL_A_CABLE_AMPLITUDE_PAIR, /* u8 */ 63a331172bSAndrew Lunn ETHTOOL_A_CABLE_AMPLITUDE_mV, /* s16 */ 64a331172bSAndrew Lunn 65a331172bSAndrew Lunn __ETHTOOL_A_CABLE_AMPLITUDE_CNT, 66a331172bSAndrew Lunn ETHTOOL_A_CABLE_AMPLITUDE_MAX = (__ETHTOOL_A_CABLE_AMPLITUDE_CNT - 1) 67a331172bSAndrew Lunn }; 68a331172bSAndrew Lunn 69a331172bSAndrew Lunn enum { 70a331172bSAndrew Lunn ETHTOOL_A_CABLE_PULSE_UNSPEC, 71a331172bSAndrew Lunn ETHTOOL_A_CABLE_PULSE_mV, /* s16 */ 72a331172bSAndrew Lunn 73a331172bSAndrew Lunn __ETHTOOL_A_CABLE_PULSE_CNT, 74a331172bSAndrew Lunn ETHTOOL_A_CABLE_PULSE_MAX = (__ETHTOOL_A_CABLE_PULSE_CNT - 1) 75a331172bSAndrew Lunn }; 76a331172bSAndrew Lunn 77a331172bSAndrew Lunn enum { 78a331172bSAndrew Lunn ETHTOOL_A_CABLE_STEP_UNSPEC, 79a331172bSAndrew Lunn ETHTOOL_A_CABLE_STEP_FIRST_DISTANCE, /* u32 */ 80a331172bSAndrew Lunn ETHTOOL_A_CABLE_STEP_LAST_DISTANCE, /* u32 */ 81a331172bSAndrew Lunn ETHTOOL_A_CABLE_STEP_STEP_DISTANCE, /* u32 */ 82a331172bSAndrew Lunn 83a331172bSAndrew Lunn __ETHTOOL_A_CABLE_STEP_CNT, 84a331172bSAndrew Lunn ETHTOOL_A_CABLE_STEP_MAX = (__ETHTOOL_A_CABLE_STEP_CNT - 1) 85a331172bSAndrew Lunn }; 86a331172bSAndrew Lunn 87a331172bSAndrew Lunn enum { 88a331172bSAndrew Lunn ETHTOOL_A_CABLE_TDR_NEST_UNSPEC, 89a331172bSAndrew Lunn ETHTOOL_A_CABLE_TDR_NEST_STEP, /* nest - ETHTTOOL_A_CABLE_STEP */ 90a331172bSAndrew Lunn ETHTOOL_A_CABLE_TDR_NEST_AMPLITUDE, /* nest - ETHTOOL_A_CABLE_AMPLITUDE */ 91a331172bSAndrew Lunn ETHTOOL_A_CABLE_TDR_NEST_PULSE, /* nest - ETHTOOL_A_CABLE_PULSE */ 92a331172bSAndrew Lunn 93a331172bSAndrew Lunn __ETHTOOL_A_CABLE_TDR_NEST_CNT, 94a331172bSAndrew Lunn ETHTOOL_A_CABLE_TDR_NEST_MAX = (__ETHTOOL_A_CABLE_TDR_NEST_CNT - 1) 95a331172bSAndrew Lunn }; 96a331172bSAndrew Lunn 97a331172bSAndrew Lunn enum { 98f09ea6fbSJakub Kicinski ETHTOOL_STATS_ETH_PHY, 99ca224454SJakub Kicinski ETHTOOL_STATS_ETH_MAC, 100bfad2b97SJakub Kicinski ETHTOOL_STATS_ETH_CTRL, 101a8b06e9dSJakub Kicinski ETHTOOL_STATS_RMON, 102*6167c0b6SJakub Kicinski ETHTOOL_STATS_PHY, 103f09ea6fbSJakub Kicinski 104f09ea6fbSJakub Kicinski /* add new constants above here */ 105f09ea6fbSJakub Kicinski __ETHTOOL_STATS_CNT 106f09ea6fbSJakub Kicinski }; 107f09ea6fbSJakub Kicinski 108f09ea6fbSJakub Kicinski enum { 109f09ea6fbSJakub Kicinski /* 30.3.2.1.5 aSymbolErrorDuringCarrier */ 110f09ea6fbSJakub Kicinski ETHTOOL_A_STATS_ETH_PHY_5_SYM_ERR, 111f09ea6fbSJakub Kicinski 112f09ea6fbSJakub Kicinski /* add new constants above here */ 113f09ea6fbSJakub Kicinski __ETHTOOL_A_STATS_ETH_PHY_CNT, 114f09ea6fbSJakub Kicinski ETHTOOL_A_STATS_ETH_PHY_MAX = (__ETHTOOL_A_STATS_ETH_PHY_CNT - 1) 115f09ea6fbSJakub Kicinski }; 116f09ea6fbSJakub Kicinski 117ca224454SJakub Kicinski enum { 118ca224454SJakub Kicinski /* 30.3.1.1.2 aFramesTransmittedOK */ 119ca224454SJakub Kicinski ETHTOOL_A_STATS_ETH_MAC_2_TX_PKT, 120ca224454SJakub Kicinski /* 30.3.1.1.3 aSingleCollisionFrames */ 121ca224454SJakub Kicinski ETHTOOL_A_STATS_ETH_MAC_3_SINGLE_COL, 122ca224454SJakub Kicinski /* 30.3.1.1.4 aMultipleCollisionFrames */ 123ca224454SJakub Kicinski ETHTOOL_A_STATS_ETH_MAC_4_MULTI_COL, 124ca224454SJakub Kicinski /* 30.3.1.1.5 aFramesReceivedOK */ 125ca224454SJakub Kicinski ETHTOOL_A_STATS_ETH_MAC_5_RX_PKT, 126ca224454SJakub Kicinski /* 30.3.1.1.6 aFrameCheckSequenceErrors */ 127ca224454SJakub Kicinski ETHTOOL_A_STATS_ETH_MAC_6_FCS_ERR, 128ca224454SJakub Kicinski /* 30.3.1.1.7 aAlignmentErrors */ 129ca224454SJakub Kicinski ETHTOOL_A_STATS_ETH_MAC_7_ALIGN_ERR, 130ca224454SJakub Kicinski /* 30.3.1.1.8 aOctetsTransmittedOK */ 131ca224454SJakub Kicinski ETHTOOL_A_STATS_ETH_MAC_8_TX_BYTES, 132ca224454SJakub Kicinski /* 30.3.1.1.9 aFramesWithDeferredXmissions */ 133ca224454SJakub Kicinski ETHTOOL_A_STATS_ETH_MAC_9_TX_DEFER, 134ca224454SJakub Kicinski /* 30.3.1.1.10 aLateCollisions */ 135ca224454SJakub Kicinski ETHTOOL_A_STATS_ETH_MAC_10_LATE_COL, 136ca224454SJakub Kicinski /* 30.3.1.1.11 aFramesAbortedDueToXSColls */ 137ca224454SJakub Kicinski ETHTOOL_A_STATS_ETH_MAC_11_XS_COL, 138ca224454SJakub Kicinski /* 30.3.1.1.12 aFramesLostDueToIntMACXmitError */ 139ca224454SJakub Kicinski ETHTOOL_A_STATS_ETH_MAC_12_TX_INT_ERR, 140ca224454SJakub Kicinski /* 30.3.1.1.13 aCarrierSenseErrors */ 141ca224454SJakub Kicinski ETHTOOL_A_STATS_ETH_MAC_13_CS_ERR, 142ca224454SJakub Kicinski /* 30.3.1.1.14 aOctetsReceivedOK */ 143ca224454SJakub Kicinski ETHTOOL_A_STATS_ETH_MAC_14_RX_BYTES, 144ca224454SJakub Kicinski /* 30.3.1.1.15 aFramesLostDueToIntMACRcvError */ 145ca224454SJakub Kicinski ETHTOOL_A_STATS_ETH_MAC_15_RX_INT_ERR, 146ca224454SJakub Kicinski 147ca224454SJakub Kicinski /* 30.3.1.1.18 aMulticastFramesXmittedOK */ 148ca224454SJakub Kicinski ETHTOOL_A_STATS_ETH_MAC_18_TX_MCAST, 149ca224454SJakub Kicinski /* 30.3.1.1.19 aBroadcastFramesXmittedOK */ 150ca224454SJakub Kicinski ETHTOOL_A_STATS_ETH_MAC_19_TX_BCAST, 151ca224454SJakub Kicinski /* 30.3.1.1.20 aFramesWithExcessiveDeferral */ 152ca224454SJakub Kicinski ETHTOOL_A_STATS_ETH_MAC_20_XS_DEFER, 153ca224454SJakub Kicinski /* 30.3.1.1.21 aMulticastFramesReceivedOK */ 154ca224454SJakub Kicinski ETHTOOL_A_STATS_ETH_MAC_21_RX_MCAST, 155ca224454SJakub Kicinski /* 30.3.1.1.22 aBroadcastFramesReceivedOK */ 156ca224454SJakub Kicinski ETHTOOL_A_STATS_ETH_MAC_22_RX_BCAST, 157ca224454SJakub Kicinski /* 30.3.1.1.23 aInRangeLengthErrors */ 158ca224454SJakub Kicinski ETHTOOL_A_STATS_ETH_MAC_23_IR_LEN_ERR, 159ca224454SJakub Kicinski /* 30.3.1.1.24 aOutOfRangeLengthField */ 160ca224454SJakub Kicinski ETHTOOL_A_STATS_ETH_MAC_24_OOR_LEN, 161ca224454SJakub Kicinski /* 30.3.1.1.25 aFrameTooLongErrors */ 162ca224454SJakub Kicinski ETHTOOL_A_STATS_ETH_MAC_25_TOO_LONG_ERR, 163ca224454SJakub Kicinski 164ca224454SJakub Kicinski /* add new constants above here */ 165ca224454SJakub Kicinski __ETHTOOL_A_STATS_ETH_MAC_CNT, 166ca224454SJakub Kicinski ETHTOOL_A_STATS_ETH_MAC_MAX = (__ETHTOOL_A_STATS_ETH_MAC_CNT - 1) 167ca224454SJakub Kicinski }; 168ca224454SJakub Kicinski 169bfad2b97SJakub Kicinski enum { 170bfad2b97SJakub Kicinski /* 30.3.3.3 aMACControlFramesTransmitted */ 171bfad2b97SJakub Kicinski ETHTOOL_A_STATS_ETH_CTRL_3_TX, 172bfad2b97SJakub Kicinski /* 30.3.3.4 aMACControlFramesReceived */ 173bfad2b97SJakub Kicinski ETHTOOL_A_STATS_ETH_CTRL_4_RX, 174bfad2b97SJakub Kicinski /* 30.3.3.5 aUnsupportedOpcodesReceived */ 175bfad2b97SJakub Kicinski ETHTOOL_A_STATS_ETH_CTRL_5_RX_UNSUP, 176bfad2b97SJakub Kicinski 177bfad2b97SJakub Kicinski /* add new constants above here */ 178bfad2b97SJakub Kicinski __ETHTOOL_A_STATS_ETH_CTRL_CNT, 179bfad2b97SJakub Kicinski ETHTOOL_A_STATS_ETH_CTRL_MAX = (__ETHTOOL_A_STATS_ETH_CTRL_CNT - 1) 180bfad2b97SJakub Kicinski }; 181bfad2b97SJakub Kicinski 182a8b06e9dSJakub Kicinski enum { 183a8b06e9dSJakub Kicinski /* etherStatsUndersizePkts */ 184a8b06e9dSJakub Kicinski ETHTOOL_A_STATS_RMON_UNDERSIZE, 185a8b06e9dSJakub Kicinski /* etherStatsOversizePkts */ 186a8b06e9dSJakub Kicinski ETHTOOL_A_STATS_RMON_OVERSIZE, 187a8b06e9dSJakub Kicinski /* etherStatsFragments */ 188a8b06e9dSJakub Kicinski ETHTOOL_A_STATS_RMON_FRAG, 189a8b06e9dSJakub Kicinski /* etherStatsJabbers */ 190a8b06e9dSJakub Kicinski ETHTOOL_A_STATS_RMON_JABBER, 191a8b06e9dSJakub Kicinski 192a8b06e9dSJakub Kicinski /* add new constants above here */ 193a8b06e9dSJakub Kicinski __ETHTOOL_A_STATS_RMON_CNT, 194a8b06e9dSJakub Kicinski ETHTOOL_A_STATS_RMON_MAX = (__ETHTOOL_A_STATS_RMON_CNT - 1) 195a8b06e9dSJakub Kicinski }; 196a8b06e9dSJakub Kicinski 197*6167c0b6SJakub Kicinski enum { 198*6167c0b6SJakub Kicinski /* Basic packet counters if PHY has separate counters from the MAC */ 199*6167c0b6SJakub Kicinski ETHTOOL_A_STATS_PHY_RX_PKTS, 200*6167c0b6SJakub Kicinski ETHTOOL_A_STATS_PHY_RX_BYTES, 201*6167c0b6SJakub Kicinski ETHTOOL_A_STATS_PHY_RX_ERRORS, 202*6167c0b6SJakub Kicinski ETHTOOL_A_STATS_PHY_TX_PKTS, 203*6167c0b6SJakub Kicinski ETHTOOL_A_STATS_PHY_TX_BYTES, 204*6167c0b6SJakub Kicinski ETHTOOL_A_STATS_PHY_TX_ERRORS, 205*6167c0b6SJakub Kicinski 206*6167c0b6SJakub Kicinski /* add new constants above here */ 207*6167c0b6SJakub Kicinski __ETHTOOL_A_STATS_PHY_CNT, 208*6167c0b6SJakub Kicinski ETHTOOL_A_STATS_PHY_MAX = (__ETHTOOL_A_STATS_PHY_CNT - 1) 209*6167c0b6SJakub Kicinski }; 21017194be4SMaxime Chevallier 2112b4a8990SMichal Kubecek /* generic netlink info */ 2122b4a8990SMichal Kubecek #define ETHTOOL_GENL_NAME "ethtool" 2132b4a8990SMichal Kubecek #define ETHTOOL_GENL_VERSION 1 2142b4a8990SMichal Kubecek 2156b08d6c1SMichal Kubecek #define ETHTOOL_MCGRP_MONITOR_NAME "monitor" 2166b08d6c1SMichal Kubecek 2172b4a8990SMichal Kubecek #endif /* _UAPI_LINUX_ETHTOOL_NETLINK_H_ */ 218