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 103 /* add new constants above here */ 104 __ETHTOOL_STATS_CNT 105 }; 106 107 enum { 108 /* 30.3.2.1.5 aSymbolErrorDuringCarrier */ 109 ETHTOOL_A_STATS_ETH_PHY_5_SYM_ERR, 110 111 /* add new constants above here */ 112 __ETHTOOL_A_STATS_ETH_PHY_CNT, 113 ETHTOOL_A_STATS_ETH_PHY_MAX = (__ETHTOOL_A_STATS_ETH_PHY_CNT - 1) 114 }; 115 116 enum { 117 /* 30.3.1.1.2 aFramesTransmittedOK */ 118 ETHTOOL_A_STATS_ETH_MAC_2_TX_PKT, 119 /* 30.3.1.1.3 aSingleCollisionFrames */ 120 ETHTOOL_A_STATS_ETH_MAC_3_SINGLE_COL, 121 /* 30.3.1.1.4 aMultipleCollisionFrames */ 122 ETHTOOL_A_STATS_ETH_MAC_4_MULTI_COL, 123 /* 30.3.1.1.5 aFramesReceivedOK */ 124 ETHTOOL_A_STATS_ETH_MAC_5_RX_PKT, 125 /* 30.3.1.1.6 aFrameCheckSequenceErrors */ 126 ETHTOOL_A_STATS_ETH_MAC_6_FCS_ERR, 127 /* 30.3.1.1.7 aAlignmentErrors */ 128 ETHTOOL_A_STATS_ETH_MAC_7_ALIGN_ERR, 129 /* 30.3.1.1.8 aOctetsTransmittedOK */ 130 ETHTOOL_A_STATS_ETH_MAC_8_TX_BYTES, 131 /* 30.3.1.1.9 aFramesWithDeferredXmissions */ 132 ETHTOOL_A_STATS_ETH_MAC_9_TX_DEFER, 133 /* 30.3.1.1.10 aLateCollisions */ 134 ETHTOOL_A_STATS_ETH_MAC_10_LATE_COL, 135 /* 30.3.1.1.11 aFramesAbortedDueToXSColls */ 136 ETHTOOL_A_STATS_ETH_MAC_11_XS_COL, 137 /* 30.3.1.1.12 aFramesLostDueToIntMACXmitError */ 138 ETHTOOL_A_STATS_ETH_MAC_12_TX_INT_ERR, 139 /* 30.3.1.1.13 aCarrierSenseErrors */ 140 ETHTOOL_A_STATS_ETH_MAC_13_CS_ERR, 141 /* 30.3.1.1.14 aOctetsReceivedOK */ 142 ETHTOOL_A_STATS_ETH_MAC_14_RX_BYTES, 143 /* 30.3.1.1.15 aFramesLostDueToIntMACRcvError */ 144 ETHTOOL_A_STATS_ETH_MAC_15_RX_INT_ERR, 145 146 /* 30.3.1.1.18 aMulticastFramesXmittedOK */ 147 ETHTOOL_A_STATS_ETH_MAC_18_TX_MCAST, 148 /* 30.3.1.1.19 aBroadcastFramesXmittedOK */ 149 ETHTOOL_A_STATS_ETH_MAC_19_TX_BCAST, 150 /* 30.3.1.1.20 aFramesWithExcessiveDeferral */ 151 ETHTOOL_A_STATS_ETH_MAC_20_XS_DEFER, 152 /* 30.3.1.1.21 aMulticastFramesReceivedOK */ 153 ETHTOOL_A_STATS_ETH_MAC_21_RX_MCAST, 154 /* 30.3.1.1.22 aBroadcastFramesReceivedOK */ 155 ETHTOOL_A_STATS_ETH_MAC_22_RX_BCAST, 156 /* 30.3.1.1.23 aInRangeLengthErrors */ 157 ETHTOOL_A_STATS_ETH_MAC_23_IR_LEN_ERR, 158 /* 30.3.1.1.24 aOutOfRangeLengthField */ 159 ETHTOOL_A_STATS_ETH_MAC_24_OOR_LEN, 160 /* 30.3.1.1.25 aFrameTooLongErrors */ 161 ETHTOOL_A_STATS_ETH_MAC_25_TOO_LONG_ERR, 162 163 /* add new constants above here */ 164 __ETHTOOL_A_STATS_ETH_MAC_CNT, 165 ETHTOOL_A_STATS_ETH_MAC_MAX = (__ETHTOOL_A_STATS_ETH_MAC_CNT - 1) 166 }; 167 168 enum { 169 /* 30.3.3.3 aMACControlFramesTransmitted */ 170 ETHTOOL_A_STATS_ETH_CTRL_3_TX, 171 /* 30.3.3.4 aMACControlFramesReceived */ 172 ETHTOOL_A_STATS_ETH_CTRL_4_RX, 173 /* 30.3.3.5 aUnsupportedOpcodesReceived */ 174 ETHTOOL_A_STATS_ETH_CTRL_5_RX_UNSUP, 175 176 /* add new constants above here */ 177 __ETHTOOL_A_STATS_ETH_CTRL_CNT, 178 ETHTOOL_A_STATS_ETH_CTRL_MAX = (__ETHTOOL_A_STATS_ETH_CTRL_CNT - 1) 179 }; 180 181 enum { 182 /* etherStatsUndersizePkts */ 183 ETHTOOL_A_STATS_RMON_UNDERSIZE, 184 /* etherStatsOversizePkts */ 185 ETHTOOL_A_STATS_RMON_OVERSIZE, 186 /* etherStatsFragments */ 187 ETHTOOL_A_STATS_RMON_FRAG, 188 /* etherStatsJabbers */ 189 ETHTOOL_A_STATS_RMON_JABBER, 190 191 /* add new constants above here */ 192 __ETHTOOL_A_STATS_RMON_CNT, 193 ETHTOOL_A_STATS_RMON_MAX = (__ETHTOOL_A_STATS_RMON_CNT - 1) 194 }; 195 196 197 /* generic netlink info */ 198 #define ETHTOOL_GENL_NAME "ethtool" 199 #define ETHTOOL_GENL_VERSION 1 200 201 #define ETHTOOL_MCGRP_MONITOR_NAME "monitor" 202 203 #endif /* _UAPI_LINUX_ETHTOOL_NETLINK_H_ */ 204