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