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