master
  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 _LINUX_ETHTOOL_NETLINK_H_
 10#define _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 */
 20enum {
 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
 36enum {
 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. */
 44enum {
 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
 52enum {
 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
 60enum {
 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
 69enum {
 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
 77enum {
 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
 87enum {
 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
 97enum {
 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
108enum {
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
117enum {
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
169enum {
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
182enum {
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
197enum {
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#endif /* _LINUX_ETHTOOL_NETLINK_H_ */