• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * desc-ethtool.c - ethtool netlink format descriptions
3  *
4  * Descriptions of ethtool netlink messages and attributes for pretty print.
5  */
6 
7 #include "../internal.h"
8 #include <linux/ethtool_netlink.h>
9 
10 #include "prettymsg.h"
11 
12 static const struct pretty_nla_desc __header_desc[] = {
13 	NLATTR_DESC_INVALID(ETHTOOL_A_HEADER_UNSPEC),
14 	NLATTR_DESC_U32(ETHTOOL_A_HEADER_DEV_INDEX),
15 	NLATTR_DESC_STRING(ETHTOOL_A_HEADER_DEV_NAME),
16 	NLATTR_DESC_X32(ETHTOOL_A_HEADER_FLAGS),
17 };
18 
19 static const struct pretty_nla_desc __bitset_bit_desc[] = {
20 	NLATTR_DESC_INVALID(ETHTOOL_A_BITSET_BIT_UNSPEC),
21 	NLATTR_DESC_U32(ETHTOOL_A_BITSET_BIT_INDEX),
22 	NLATTR_DESC_STRING(ETHTOOL_A_BITSET_BIT_NAME),
23 	NLATTR_DESC_FLAG(ETHTOOL_A_BITSET_BIT_VALUE),
24 };
25 
26 static const struct pretty_nla_desc __bitset_bits_desc[] = {
27 	NLATTR_DESC_INVALID(ETHTOOL_A_BITSET_BITS_UNSPEC),
28 	NLATTR_DESC_NESTED(ETHTOOL_A_BITSET_BITS_BIT, bitset_bit),
29 };
30 
31 static const struct pretty_nla_desc __bitset_desc[] = {
32 	NLATTR_DESC_INVALID(ETHTOOL_A_BITSET_UNSPEC),
33 	NLATTR_DESC_FLAG(ETHTOOL_A_BITSET_NOMASK),
34 	NLATTR_DESC_U32(ETHTOOL_A_BITSET_SIZE),
35 	NLATTR_DESC_NESTED(ETHTOOL_A_BITSET_BITS, bitset_bits),
36 	NLATTR_DESC_BINARY(ETHTOOL_A_BITSET_VALUE),
37 	NLATTR_DESC_BINARY(ETHTOOL_A_BITSET_MASK),
38 };
39 
40 static const struct pretty_nla_desc __string_desc[] = {
41 	NLATTR_DESC_INVALID(ETHTOOL_A_STRING_UNSPEC),
42 	NLATTR_DESC_U32(ETHTOOL_A_STRING_INDEX),
43 	NLATTR_DESC_STRING(ETHTOOL_A_STRING_VALUE),
44 };
45 
46 static const struct pretty_nla_desc __strings_desc[] = {
47 	NLATTR_DESC_INVALID(ETHTOOL_A_STRINGS_UNSPEC),
48 	NLATTR_DESC_NESTED(ETHTOOL_A_STRINGS_STRING, string),
49 };
50 
51 static const struct pretty_nla_desc __stringset_desc[] = {
52 	NLATTR_DESC_INVALID(ETHTOOL_A_STRINGSET_UNSPEC),
53 	NLATTR_DESC_U32(ETHTOOL_A_STRINGSET_ID),
54 	NLATTR_DESC_U32(ETHTOOL_A_STRINGSET_COUNT),
55 	NLATTR_DESC_NESTED(ETHTOOL_A_STRINGSET_STRINGS, strings),
56 };
57 
58 static const struct pretty_nla_desc __stringsets_desc[] = {
59 	NLATTR_DESC_INVALID(ETHTOOL_A_STRINGSETS_UNSPEC),
60 	NLATTR_DESC_NESTED(ETHTOOL_A_STRINGSETS_STRINGSET, stringset),
61 };
62 
63 static const struct pretty_nla_desc __strset_desc[] = {
64 	NLATTR_DESC_INVALID(ETHTOOL_A_STRSET_UNSPEC),
65 	NLATTR_DESC_NESTED(ETHTOOL_A_STRSET_HEADER, header),
66 	NLATTR_DESC_NESTED(ETHTOOL_A_STRSET_STRINGSETS, stringsets),
67 	NLATTR_DESC_FLAG(ETHTOOL_A_STRSET_COUNTS_ONLY),
68 };
69 
70 static const struct pretty_nla_desc __linkinfo_desc[] = {
71 	NLATTR_DESC_INVALID(ETHTOOL_A_LINKINFO_UNSPEC),
72 	NLATTR_DESC_NESTED(ETHTOOL_A_LINKINFO_HEADER, header),
73 	NLATTR_DESC_U8(ETHTOOL_A_LINKINFO_PORT),
74 	NLATTR_DESC_U8(ETHTOOL_A_LINKINFO_PHYADDR),
75 	NLATTR_DESC_U8(ETHTOOL_A_LINKINFO_TP_MDIX),
76 	NLATTR_DESC_U8(ETHTOOL_A_LINKINFO_TP_MDIX_CTRL),
77 	NLATTR_DESC_U8(ETHTOOL_A_LINKINFO_TRANSCEIVER),
78 };
79 
80 static const char *__linkmodes_rate_matching_names[] = {
81 	[RATE_MATCH_NONE]	= "RATE_MATCH_NONE",
82 	[RATE_MATCH_PAUSE]	= "RATE_MATCH_PAUSE",
83 	[RATE_MATCH_CRS]	= "RATE_MATCH_CRS",
84 	[RATE_MATCH_OPEN_LOOP]	= "RATE_MATCH_OPEN_LOOP",
85 };
86 
87 static const struct pretty_nla_desc __linkmodes_desc[] = {
88 	NLATTR_DESC_INVALID(ETHTOOL_A_LINKMODES_UNSPEC),
89 	NLATTR_DESC_NESTED(ETHTOOL_A_LINKMODES_HEADER, header),
90 	NLATTR_DESC_BOOL(ETHTOOL_A_LINKMODES_AUTONEG),
91 	NLATTR_DESC_NESTED(ETHTOOL_A_LINKMODES_OURS, bitset),
92 	NLATTR_DESC_NESTED(ETHTOOL_A_LINKMODES_PEER, bitset),
93 	NLATTR_DESC_U32(ETHTOOL_A_LINKMODES_SPEED),
94 	NLATTR_DESC_U8(ETHTOOL_A_LINKMODES_DUPLEX),
95 	NLATTR_DESC_U8(ETHTOOL_A_LINKMODES_MASTER_SLAVE_CFG),
96 	NLATTR_DESC_U8(ETHTOOL_A_LINKMODES_MASTER_SLAVE_STATE),
97 	NLATTR_DESC_U32(ETHTOOL_A_LINKMODES_LANES),
98 	NLATTR_DESC_U8_ENUM(ETHTOOL_A_LINKMODES_RATE_MATCHING,
99 			    linkmodes_rate_matching),
100 };
101 
102 static const struct pretty_nla_desc __linkstate_desc[] = {
103 	NLATTR_DESC_INVALID(ETHTOOL_A_LINKSTATE_UNSPEC),
104 	NLATTR_DESC_NESTED(ETHTOOL_A_LINKSTATE_HEADER, header),
105 	NLATTR_DESC_BOOL(ETHTOOL_A_LINKSTATE_LINK),
106 	NLATTR_DESC_U32(ETHTOOL_A_LINKSTATE_SQI),
107 	NLATTR_DESC_U32(ETHTOOL_A_LINKSTATE_SQI_MAX),
108 	NLATTR_DESC_U8(ETHTOOL_A_LINKSTATE_EXT_STATE),
109 	NLATTR_DESC_U8(ETHTOOL_A_LINKSTATE_EXT_SUBSTATE),
110 };
111 
112 static const struct pretty_nla_desc __debug_desc[] = {
113 	NLATTR_DESC_INVALID(ETHTOOL_A_DEBUG_UNSPEC),
114 	NLATTR_DESC_NESTED(ETHTOOL_A_DEBUG_HEADER, header),
115 	NLATTR_DESC_NESTED(ETHTOOL_A_DEBUG_MSGMASK, bitset),
116 };
117 
118 static const struct pretty_nla_desc __wol_desc[] = {
119 	NLATTR_DESC_INVALID(ETHTOOL_A_WOL_UNSPEC),
120 	NLATTR_DESC_NESTED(ETHTOOL_A_WOL_HEADER, header),
121 	NLATTR_DESC_NESTED(ETHTOOL_A_WOL_MODES, bitset),
122 	NLATTR_DESC_BINARY(ETHTOOL_A_WOL_SOPASS),
123 };
124 
125 static const struct pretty_nla_desc __features_desc[] = {
126 	NLATTR_DESC_INVALID(ETHTOOL_A_FEATURES_UNSPEC),
127 	NLATTR_DESC_NESTED(ETHTOOL_A_FEATURES_HEADER, header),
128 	NLATTR_DESC_NESTED(ETHTOOL_A_FEATURES_HW, bitset),
129 	NLATTR_DESC_NESTED(ETHTOOL_A_FEATURES_WANTED, bitset),
130 	NLATTR_DESC_NESTED(ETHTOOL_A_FEATURES_ACTIVE, bitset),
131 	NLATTR_DESC_NESTED(ETHTOOL_A_FEATURES_NOCHANGE, bitset),
132 };
133 
134 static const struct pretty_nla_desc __privflags_desc[] = {
135 	NLATTR_DESC_INVALID(ETHTOOL_A_PRIVFLAGS_UNSPEC),
136 	NLATTR_DESC_NESTED(ETHTOOL_A_PRIVFLAGS_HEADER, header),
137 	NLATTR_DESC_NESTED(ETHTOOL_A_PRIVFLAGS_FLAGS, bitset),
138 };
139 
140 static const char *__rings_tcp_data_split_names[] = {
141 	[ETHTOOL_TCP_DATA_SPLIT_UNKNOWN]	= "ETHTOOL_TCP_DATA_SPLIT_UNKNOWN",
142 	[ETHTOOL_TCP_DATA_SPLIT_DISABLED]	= "ETHTOOL_TCP_DATA_SPLIT_DISABLED",
143 	[ETHTOOL_TCP_DATA_SPLIT_ENABLED]	= "ETHTOOL_TCP_DATA_SPLIT_ENABLED",
144 };
145 
146 static const struct pretty_nla_desc __rings_desc[] = {
147 	NLATTR_DESC_INVALID(ETHTOOL_A_RINGS_UNSPEC),
148 	NLATTR_DESC_NESTED(ETHTOOL_A_RINGS_HEADER, header),
149 	NLATTR_DESC_U32(ETHTOOL_A_RINGS_RX_MAX),
150 	NLATTR_DESC_U32(ETHTOOL_A_RINGS_RX_MINI_MAX),
151 	NLATTR_DESC_U32(ETHTOOL_A_RINGS_RX_JUMBO_MAX),
152 	NLATTR_DESC_U32(ETHTOOL_A_RINGS_TX_MAX),
153 	NLATTR_DESC_U32(ETHTOOL_A_RINGS_RX),
154 	NLATTR_DESC_U32(ETHTOOL_A_RINGS_RX_MINI),
155 	NLATTR_DESC_U32(ETHTOOL_A_RINGS_RX_JUMBO),
156 	NLATTR_DESC_U32(ETHTOOL_A_RINGS_TX),
157 	NLATTR_DESC_U32(ETHTOOL_A_RINGS_RX_BUF_LEN),
158 	NLATTR_DESC_U8_ENUM(ETHTOOL_A_RINGS_TCP_DATA_SPLIT, rings_tcp_data_split),
159 	NLATTR_DESC_U32(ETHTOOL_A_RINGS_CQE_SIZE),
160 	NLATTR_DESC_BOOL(ETHTOOL_A_RINGS_TX_PUSH),
161 	NLATTR_DESC_BOOL(ETHTOOL_A_RINGS_RX_PUSH),
162 	NLATTR_DESC_U32(ETHTOOL_A_RINGS_TX_PUSH_BUF_LEN),
163 	NLATTR_DESC_U32(ETHTOOL_A_RINGS_TX_PUSH_BUF_LEN_MAX),
164 };
165 
166 static const struct pretty_nla_desc __channels_desc[] = {
167 	NLATTR_DESC_INVALID(ETHTOOL_A_CHANNELS_UNSPEC),
168 	NLATTR_DESC_NESTED(ETHTOOL_A_CHANNELS_HEADER, header),
169 	NLATTR_DESC_U32(ETHTOOL_A_CHANNELS_RX_MAX),
170 	NLATTR_DESC_U32(ETHTOOL_A_CHANNELS_TX_MAX),
171 	NLATTR_DESC_U32(ETHTOOL_A_CHANNELS_OTHER_MAX),
172 	NLATTR_DESC_U32(ETHTOOL_A_CHANNELS_COMBINED_MAX),
173 	NLATTR_DESC_U32(ETHTOOL_A_CHANNELS_RX_COUNT),
174 	NLATTR_DESC_U32(ETHTOOL_A_CHANNELS_TX_COUNT),
175 	NLATTR_DESC_U32(ETHTOOL_A_CHANNELS_OTHER_COUNT),
176 	NLATTR_DESC_U32(ETHTOOL_A_CHANNELS_COMBINED_COUNT),
177 };
178 
179 static const struct pretty_nla_desc __coalesce_desc[] = {
180 	NLATTR_DESC_INVALID(ETHTOOL_A_COALESCE_UNSPEC),
181 	NLATTR_DESC_NESTED(ETHTOOL_A_COALESCE_HEADER, header),
182 	NLATTR_DESC_U32(ETHTOOL_A_COALESCE_RX_USECS),
183 	NLATTR_DESC_U32(ETHTOOL_A_COALESCE_RX_MAX_FRAMES),
184 	NLATTR_DESC_U32(ETHTOOL_A_COALESCE_RX_USECS_IRQ),
185 	NLATTR_DESC_U32(ETHTOOL_A_COALESCE_RX_MAX_FRAMES_IRQ),
186 	NLATTR_DESC_U32(ETHTOOL_A_COALESCE_TX_USECS),
187 	NLATTR_DESC_U32(ETHTOOL_A_COALESCE_TX_MAX_FRAMES),
188 	NLATTR_DESC_U32(ETHTOOL_A_COALESCE_TX_USECS_IRQ),
189 	NLATTR_DESC_U32(ETHTOOL_A_COALESCE_TX_MAX_FRAMES_IRQ),
190 	NLATTR_DESC_U32(ETHTOOL_A_COALESCE_STATS_BLOCK_USECS),
191 	NLATTR_DESC_BOOL(ETHTOOL_A_COALESCE_USE_ADAPTIVE_RX),
192 	NLATTR_DESC_BOOL(ETHTOOL_A_COALESCE_USE_ADAPTIVE_TX),
193 	NLATTR_DESC_U32(ETHTOOL_A_COALESCE_PKT_RATE_LOW),
194 	NLATTR_DESC_U32(ETHTOOL_A_COALESCE_RX_USECS_LOW),
195 	NLATTR_DESC_U32(ETHTOOL_A_COALESCE_RX_MAX_FRAMES_LOW),
196 	NLATTR_DESC_U32(ETHTOOL_A_COALESCE_TX_USECS_LOW),
197 	NLATTR_DESC_U32(ETHTOOL_A_COALESCE_TX_MAX_FRAMES_LOW),
198 	NLATTR_DESC_U32(ETHTOOL_A_COALESCE_PKT_RATE_HIGH),
199 	NLATTR_DESC_U32(ETHTOOL_A_COALESCE_RX_USECS_HIGH),
200 	NLATTR_DESC_U32(ETHTOOL_A_COALESCE_RX_MAX_FRAMES_HIGH),
201 	NLATTR_DESC_U32(ETHTOOL_A_COALESCE_TX_USECS_HIGH),
202 	NLATTR_DESC_U32(ETHTOOL_A_COALESCE_TX_MAX_FRAMES_HIGH),
203 	NLATTR_DESC_U32(ETHTOOL_A_COALESCE_RATE_SAMPLE_INTERVAL),
204 	NLATTR_DESC_BOOL(ETHTOOL_A_COALESCE_USE_CQE_MODE_TX),
205 	NLATTR_DESC_BOOL(ETHTOOL_A_COALESCE_USE_CQE_MODE_RX),
206 	NLATTR_DESC_U32(ETHTOOL_A_COALESCE_TX_AGGR_MAX_BYTES),
207 	NLATTR_DESC_U32(ETHTOOL_A_COALESCE_TX_AGGR_MAX_FRAMES),
208 	NLATTR_DESC_U32(ETHTOOL_A_COALESCE_TX_AGGR_TIME_USECS),
209 };
210 
211 static const struct pretty_nla_desc __pause_stats_desc[] = {
212 	NLATTR_DESC_BINARY(ETHTOOL_A_PAUSE_STAT_PAD),
213 	NLATTR_DESC_U64(ETHTOOL_A_PAUSE_STAT_TX_FRAMES),
214 	NLATTR_DESC_U64(ETHTOOL_A_PAUSE_STAT_RX_FRAMES),
215 };
216 
217 static const struct pretty_nla_desc __pause_desc[] = {
218 	NLATTR_DESC_INVALID(ETHTOOL_A_PAUSE_UNSPEC),
219 	NLATTR_DESC_NESTED(ETHTOOL_A_PAUSE_HEADER, header),
220 	NLATTR_DESC_BOOL(ETHTOOL_A_PAUSE_AUTONEG),
221 	NLATTR_DESC_BOOL(ETHTOOL_A_PAUSE_RX),
222 	NLATTR_DESC_BOOL(ETHTOOL_A_PAUSE_TX),
223 	NLATTR_DESC_NESTED(ETHTOOL_A_PAUSE_STATS, pause_stats),
224 };
225 
226 static const struct pretty_nla_desc __eee_desc[] = {
227 	NLATTR_DESC_INVALID(ETHTOOL_A_EEE_UNSPEC),
228 	NLATTR_DESC_NESTED(ETHTOOL_A_EEE_HEADER, header),
229 	NLATTR_DESC_NESTED(ETHTOOL_A_EEE_MODES_OURS, bitset),
230 	NLATTR_DESC_NESTED(ETHTOOL_A_EEE_MODES_PEER, bitset),
231 	NLATTR_DESC_BOOL(ETHTOOL_A_EEE_ACTIVE),
232 	NLATTR_DESC_BOOL(ETHTOOL_A_EEE_ENABLED),
233 	NLATTR_DESC_BOOL(ETHTOOL_A_EEE_TX_LPI_ENABLED),
234 	NLATTR_DESC_U32(ETHTOOL_A_EEE_TX_LPI_TIMER),
235 };
236 
237 static const struct pretty_nla_desc __tsinfo_desc[] = {
238 	NLATTR_DESC_INVALID(ETHTOOL_A_TSINFO_UNSPEC),
239 	NLATTR_DESC_NESTED(ETHTOOL_A_TSINFO_HEADER, header),
240 	NLATTR_DESC_NESTED(ETHTOOL_A_TSINFO_TIMESTAMPING, bitset),
241 	NLATTR_DESC_NESTED(ETHTOOL_A_TSINFO_TX_TYPES, bitset),
242 	NLATTR_DESC_NESTED(ETHTOOL_A_TSINFO_RX_FILTERS, bitset),
243 	NLATTR_DESC_U32(ETHTOOL_A_TSINFO_PHC_INDEX),
244 };
245 
246 static const struct pretty_nla_desc __cable_test_desc[] = {
247 	NLATTR_DESC_INVALID(ETHTOOL_A_CABLE_TEST_UNSPEC),
248 	NLATTR_DESC_NESTED(ETHTOOL_A_CABLE_TEST_HEADER, header),
249 };
250 
251 static const struct pretty_nla_desc __cable_test_result_desc[] = {
252 	NLATTR_DESC_INVALID(ETHTOOL_A_CABLE_RESULT_UNSPEC),
253 	NLATTR_DESC_U8(ETHTOOL_A_CABLE_RESULT_PAIR),
254 	NLATTR_DESC_U8(ETHTOOL_A_CABLE_RESULT_CODE),
255 	NLATTR_DESC_U32(ETHTOOL_A_CABLE_RESULT_SRC),
256 };
257 
258 static const struct pretty_nla_desc __cable_test_flength_desc[] = {
259 	NLATTR_DESC_INVALID(ETHTOOL_A_CABLE_FAULT_LENGTH_UNSPEC),
260 	NLATTR_DESC_U8(ETHTOOL_A_CABLE_FAULT_LENGTH_PAIR),
261 	NLATTR_DESC_U32(ETHTOOL_A_CABLE_FAULT_LENGTH_CM),
262 	NLATTR_DESC_U32(ETHTOOL_A_CABLE_FAULT_LENGTH_SRC),
263 };
264 
265 static const struct pretty_nla_desc __cable_nest_desc[] = {
266 	NLATTR_DESC_INVALID(ETHTOOL_A_CABLE_NEST_UNSPEC),
267 	NLATTR_DESC_NESTED(ETHTOOL_A_CABLE_NEST_RESULT, cable_test_result),
268 	NLATTR_DESC_NESTED(ETHTOOL_A_CABLE_NEST_FAULT_LENGTH,
269 			   cable_test_flength),
270 };
271 
272 static const struct pretty_nla_desc __cable_test_ntf_desc[] = {
273 	NLATTR_DESC_INVALID(ETHTOOL_A_CABLE_TEST_NTF_UNSPEC),
274 	NLATTR_DESC_NESTED(ETHTOOL_A_CABLE_TEST_NTF_HEADER, header),
275 	NLATTR_DESC_U8(ETHTOOL_A_CABLE_TEST_NTF_STATUS),
276 	NLATTR_DESC_NESTED(ETHTOOL_A_CABLE_TEST_NTF_NEST, cable_nest),
277 };
278 
279 static const struct pretty_nla_desc __cable_test_tdr_cfg_desc[] = {
280 	NLATTR_DESC_INVALID(ETHTOOL_A_CABLE_TEST_TDR_CFG_UNSPEC),
281 	NLATTR_DESC_U32(ETHTOOL_A_CABLE_TEST_TDR_CFG_FIRST),
282 	NLATTR_DESC_U32(ETHTOOL_A_CABLE_TEST_TDR_CFG_LAST),
283 	NLATTR_DESC_U32(ETHTOOL_A_CABLE_TEST_TDR_CFG_STEP),
284 	NLATTR_DESC_U8(ETHTOOL_A_CABLE_TEST_TDR_CFG_PAIR),
285 };
286 
287 static const struct pretty_nla_desc __cable_test_tdr_desc[] = {
288 	NLATTR_DESC_INVALID(ETHTOOL_A_CABLE_TEST_TDR_UNSPEC),
289 	NLATTR_DESC_NESTED(ETHTOOL_A_CABLE_TEST_TDR_HEADER, header),
290 	NLATTR_DESC_NESTED(ETHTOOL_A_CABLE_TEST_TDR_CFG, cable_test_tdr_cfg),
291 };
292 
293 static const struct pretty_nla_desc __cable_step_desc[] = {
294 	NLATTR_DESC_INVALID(ETHTOOL_A_CABLE_STEP_UNSPEC),
295 	NLATTR_DESC_U32(ETHTOOL_A_CABLE_STEP_FIRST_DISTANCE),
296 	NLATTR_DESC_U32(ETHTOOL_A_CABLE_STEP_LAST_DISTANCE),
297 	NLATTR_DESC_U32(ETHTOOL_A_CABLE_STEP_STEP_DISTANCE),
298 };
299 
300 static const struct pretty_nla_desc __cable_amplitude_desc[] = {
301 	NLATTR_DESC_INVALID(ETHTOOL_A_CABLE_AMPLITUDE_UNSPEC),
302 	NLATTR_DESC_U8(ETHTOOL_A_CABLE_AMPLITUDE_PAIR),
303 	NLATTR_DESC_S16(ETHTOOL_A_CABLE_AMPLITUDE_mV),
304 };
305 
306 static const struct pretty_nla_desc __cable_pulse_desc[] = {
307 	NLATTR_DESC_INVALID(ETHTOOL_A_CABLE_PULSE_UNSPEC),
308 	NLATTR_DESC_S16(ETHTOOL_A_CABLE_PULSE_mV),
309 };
310 
311 static const struct pretty_nla_desc __cable_test_tdr_nest_desc[] = {
312 	NLATTR_DESC_INVALID(ETHTOOL_A_CABLE_TDR_NEST_UNSPEC),
313 	NLATTR_DESC_NESTED(ETHTOOL_A_CABLE_TDR_NEST_STEP, cable_step),
314 	NLATTR_DESC_NESTED(ETHTOOL_A_CABLE_TDR_NEST_AMPLITUDE, cable_amplitude),
315 	NLATTR_DESC_NESTED(ETHTOOL_A_CABLE_TDR_NEST_PULSE, cable_pulse),
316 };
317 
318 static const struct pretty_nla_desc __cable_test_tdr_ntf_desc[] = {
319 	NLATTR_DESC_INVALID(ETHTOOL_A_CABLE_TEST_TDR_UNSPEC),
320 	NLATTR_DESC_NESTED(ETHTOOL_A_CABLE_TEST_TDR_NTF_HEADER, header),
321 	NLATTR_DESC_U8(ETHTOOL_A_CABLE_TEST_TDR_NTF_STATUS),
322 	NLATTR_DESC_NESTED(ETHTOOL_A_CABLE_TEST_TDR_NTF_NEST,
323 			   cable_test_tdr_nest),
324 };
325 
326 const struct pretty_nla_desc __tunnel_udp_entry_desc[] = {
327 	NLATTR_DESC_INVALID(ETHTOOL_A_TUNNEL_UDP_ENTRY_UNSPEC),
328 	NLATTR_DESC_U16(ETHTOOL_A_TUNNEL_UDP_ENTRY_PORT),
329 	NLATTR_DESC_U32(ETHTOOL_A_TUNNEL_UDP_ENTRY_TYPE),
330 };
331 
332 const struct pretty_nla_desc __tunnel_udp_table_desc[] = {
333 	NLATTR_DESC_INVALID(ETHTOOL_A_TUNNEL_UDP_TABLE_UNSPEC),
334 	NLATTR_DESC_U32(ETHTOOL_A_TUNNEL_UDP_TABLE_SIZE),
335 	NLATTR_DESC_NESTED(ETHTOOL_A_TUNNEL_UDP_TABLE_TYPES, bitset),
336 	NLATTR_DESC_NESTED(ETHTOOL_A_TUNNEL_UDP_TABLE_ENTRY, tunnel_udp_entry),
337 };
338 
339 const struct pretty_nla_desc __tunnel_udp_desc[] = {
340 	NLATTR_DESC_INVALID(ETHTOOL_A_TUNNEL_UDP_UNSPEC),
341 	NLATTR_DESC_NESTED(ETHTOOL_A_TUNNEL_UDP_TABLE, tunnel_udp_table),
342 };
343 
344 const struct pretty_nla_desc __tunnel_info_desc[] = {
345 	NLATTR_DESC_INVALID(ETHTOOL_A_TUNNEL_INFO_UNSPEC),
346 	NLATTR_DESC_NESTED(ETHTOOL_A_TUNNEL_INFO_HEADER, header),
347 	NLATTR_DESC_NESTED(ETHTOOL_A_TUNNEL_INFO_UDP_PORTS, tunnel_udp),
348 };
349 
350 const struct pretty_nla_desc __fec_stats_desc[] = {
351 	NLATTR_DESC_INVALID(ETHTOOL_A_FEC_STAT_UNSPEC),
352 	NLATTR_DESC_BINARY(ETHTOOL_A_FEC_STAT_PAD),
353 	NLATTR_DESC_U64(ETHTOOL_A_FEC_STAT_CORRECTED),
354 	NLATTR_DESC_U64(ETHTOOL_A_FEC_STAT_UNCORR),
355 	NLATTR_DESC_U64(ETHTOOL_A_FEC_STAT_CORR_BITS),
356 };
357 
358 static const struct pretty_nla_desc __fec_desc[] = {
359 	NLATTR_DESC_INVALID(ETHTOOL_A_FEC_UNSPEC),
360 	NLATTR_DESC_NESTED(ETHTOOL_A_FEC_HEADER, header),
361 	NLATTR_DESC_NESTED(ETHTOOL_A_FEC_MODES, bitset),
362 	NLATTR_DESC_BOOL(ETHTOOL_A_FEC_AUTO),
363 	NLATTR_DESC_U32(ETHTOOL_A_FEC_ACTIVE),
364 	NLATTR_DESC_NESTED(ETHTOOL_A_FEC_STATS, fec_stats),
365 };
366 
367 const struct pretty_nla_desc __module_eeprom_desc[] = {
368 	NLATTR_DESC_INVALID(ETHTOOL_A_MODULE_EEPROM_UNSPEC),
369 	NLATTR_DESC_NESTED(ETHTOOL_A_MODULE_EEPROM_HEADER, header),
370 	NLATTR_DESC_U32(ETHTOOL_A_MODULE_EEPROM_OFFSET),
371 	NLATTR_DESC_U32(ETHTOOL_A_MODULE_EEPROM_LENGTH),
372 	NLATTR_DESC_U8(ETHTOOL_A_MODULE_EEPROM_PAGE),
373 	NLATTR_DESC_U8(ETHTOOL_A_MODULE_EEPROM_BANK),
374 	NLATTR_DESC_U8(ETHTOOL_A_MODULE_EEPROM_I2C_ADDRESS),
375 	NLATTR_DESC_BINARY(ETHTOOL_A_MODULE_EEPROM_DATA)
376 };
377 
378 static const struct pretty_nla_desc __stats_grp_stat_desc[] = {
379 	NLATTR_DESC_U64(0),  NLATTR_DESC_U64(1),  NLATTR_DESC_U64(2),
380 	NLATTR_DESC_U64(3),  NLATTR_DESC_U64(4),  NLATTR_DESC_U64(5),
381 	NLATTR_DESC_U64(6),  NLATTR_DESC_U64(7),  NLATTR_DESC_U64(8),
382 	NLATTR_DESC_U64(9),  NLATTR_DESC_U64(10), NLATTR_DESC_U64(11),
383 	NLATTR_DESC_U64(12), NLATTR_DESC_U64(13), NLATTR_DESC_U64(14),
384 	NLATTR_DESC_U64(15), NLATTR_DESC_U64(16), NLATTR_DESC_U64(17),
385 	NLATTR_DESC_U64(18), NLATTR_DESC_U64(19), NLATTR_DESC_U64(20),
386 	NLATTR_DESC_U64(21), NLATTR_DESC_U64(22), NLATTR_DESC_U64(23),
387 	NLATTR_DESC_U64(24), NLATTR_DESC_U64(25), NLATTR_DESC_U64(26),
388 	NLATTR_DESC_U64(27), NLATTR_DESC_U64(28), NLATTR_DESC_U64(29),
389 };
390 
391 static const struct pretty_nla_desc __stats_grp_hist_desc[] = {
392 	NLATTR_DESC_U32(ETHTOOL_A_STATS_GRP_HIST_BKT_LOW),
393 	NLATTR_DESC_U32(ETHTOOL_A_STATS_GRP_HIST_BKT_HI),
394 	NLATTR_DESC_U64(ETHTOOL_A_STATS_GRP_HIST_VAL),
395 };
396 
397 static const struct pretty_nla_desc __stats_grp_desc[] = {
398 	NLATTR_DESC_INVALID(ETHTOOL_A_STATS_GRP_UNSPEC),
399 	NLATTR_DESC_INVALID(ETHTOOL_A_STATS_GRP_PAD),
400 	NLATTR_DESC_U32(ETHTOOL_A_STATS_GRP_ID),
401 	NLATTR_DESC_U32(ETHTOOL_A_STATS_GRP_SS_ID),
402 	NLATTR_DESC_NESTED(ETHTOOL_A_STATS_GRP_STAT, stats_grp_stat),
403 	NLATTR_DESC_NESTED(ETHTOOL_A_STATS_GRP_HIST_RX, stats_grp_hist),
404 	NLATTR_DESC_NESTED(ETHTOOL_A_STATS_GRP_HIST_TX, stats_grp_hist),
405 };
406 
407 static const struct pretty_nla_desc __stats_desc[] = {
408 	NLATTR_DESC_INVALID(ETHTOOL_A_STATS_UNSPEC),
409 	NLATTR_DESC_INVALID(ETHTOOL_A_STATS_PAD),
410 	NLATTR_DESC_NESTED(ETHTOOL_A_STATS_HEADER, header),
411 	NLATTR_DESC_NESTED(ETHTOOL_A_STATS_GROUPS, bitset),
412 	NLATTR_DESC_NESTED(ETHTOOL_A_STATS_GRP, stats_grp),
413 };
414 
415 static const struct pretty_nla_desc __phc_vclocks_desc[] = {
416 	NLATTR_DESC_INVALID(ETHTOOL_A_PHC_VCLOCKS_UNSPEC),
417 	NLATTR_DESC_NESTED(ETHTOOL_A_PHC_VCLOCKS_HEADER, header),
418 	NLATTR_DESC_U32(ETHTOOL_A_PHC_VCLOCKS_NUM),
419 	NLATTR_DESC_BINARY(ETHTOOL_A_PHC_VCLOCKS_INDEX),
420 };
421 
422 static const struct pretty_nla_desc __module_desc[] = {
423 	NLATTR_DESC_INVALID(ETHTOOL_A_MODULE_UNSPEC),
424 	NLATTR_DESC_NESTED(ETHTOOL_A_MODULE_HEADER, header),
425 	NLATTR_DESC_U8(ETHTOOL_A_MODULE_POWER_MODE_POLICY),
426 	NLATTR_DESC_U8(ETHTOOL_A_MODULE_POWER_MODE),
427 };
428 
429 static const char *__pse_admin_state_names[] = {
430 	[ETHTOOL_PODL_PSE_ADMIN_STATE_UNKNOWN]	= "ETHTOOL_PODL_PSE_ADMIN_STATE_UNKNOWN",
431 	[ETHTOOL_PODL_PSE_ADMIN_STATE_DISABLED]	= "ETHTOOL_PODL_PSE_ADMIN_STATE_DISABLED",
432 	[ETHTOOL_PODL_PSE_ADMIN_STATE_ENABLED]	= "ETHTOOL_PODL_PSE_ADMIN_STATE_ENABLED",
433 };
434 
435 static const char *__pse_pw_d_status_names[] = {
436 	[ETHTOOL_PODL_PSE_PW_D_STATUS_UNKNOWN]		= "ETHTOOL_PODL_PSE_PW_D_STATUS_UNKNOWN",
437 	[ETHTOOL_PODL_PSE_PW_D_STATUS_DISABLED]		= "ETHTOOL_PODL_PSE_PW_D_STATUS_DISABLED",
438 	[ETHTOOL_PODL_PSE_PW_D_STATUS_SEARCHING]	= "ETHTOOL_PODL_PSE_PW_D_STATUS_SEARCHING",
439 	[ETHTOOL_PODL_PSE_PW_D_STATUS_DELIVERING]	= "ETHTOOL_PODL_PSE_PW_D_STATUS_DELIVERING",
440 	[ETHTOOL_PODL_PSE_PW_D_STATUS_SLEEP]		= "ETHTOOL_PODL_PSE_PW_D_STATUS_SLEEP",
441 	[ETHTOOL_PODL_PSE_PW_D_STATUS_IDLE]		= "ETHTOOL_PODL_PSE_PW_D_STATUS_IDLE",
442 	[ETHTOOL_PODL_PSE_PW_D_STATUS_ERROR]		= "ETHTOOL_PODL_PSE_PW_D_STATUS_ERROR",
443 };
444 
445 static const struct pretty_nla_desc __pse_desc[] = {
446 	NLATTR_DESC_INVALID(ETHTOOL_A_PSE_UNSPEC),
447 	NLATTR_DESC_NESTED(ETHTOOL_A_PSE_HEADER, header),
448 	NLATTR_DESC_U32_ENUM(ETHTOOL_A_PODL_PSE_ADMIN_STATE, pse_admin_state),
449 	NLATTR_DESC_U32_ENUM(ETHTOOL_A_PODL_PSE_ADMIN_CONTROL, pse_admin_state),
450 	NLATTR_DESC_U32_ENUM(ETHTOOL_A_PODL_PSE_PW_D_STATUS, pse_pw_d_status),
451 };
452 
453 static const struct pretty_nla_desc __rss_desc[] = {
454 	NLATTR_DESC_INVALID(ETHTOOL_A_RSS_UNSPEC),
455 	NLATTR_DESC_NESTED(ETHTOOL_A_RSS_HEADER, header),
456 	NLATTR_DESC_U32(ETHTOOL_A_RSS_CONTEXT),
457 	NLATTR_DESC_U32(ETHTOOL_A_RSS_HFUNC),
458 	NLATTR_DESC_BINARY(ETHTOOL_A_RSS_INDIR),
459 	NLATTR_DESC_BINARY(ETHTOOL_A_RSS_HKEY),
460 };
461 
462 static const struct pretty_nla_desc __plca_desc[] = {
463 	NLATTR_DESC_INVALID(ETHTOOL_A_PLCA_UNSPEC),
464 	NLATTR_DESC_NESTED(ETHTOOL_A_PLCA_HEADER, header),
465 	NLATTR_DESC_U16(ETHTOOL_A_PLCA_VERSION),
466 	NLATTR_DESC_U8(ETHTOOL_A_PLCA_ENABLED),
467 	NLATTR_DESC_U8(ETHTOOL_A_PLCA_STATUS),
468 	NLATTR_DESC_U32(ETHTOOL_A_PLCA_NODE_CNT),
469 	NLATTR_DESC_U32(ETHTOOL_A_PLCA_NODE_ID),
470 	NLATTR_DESC_U32(ETHTOOL_A_PLCA_TO_TMR),
471 	NLATTR_DESC_U32(ETHTOOL_A_PLCA_BURST_CNT),
472 	NLATTR_DESC_U32(ETHTOOL_A_PLCA_BURST_TMR),
473 };
474 
475 static const struct pretty_nla_desc __mm_stat_desc[] = {
476 	NLATTR_DESC_INVALID(ETHTOOL_A_MM_STAT_UNSPEC),
477 	NLATTR_DESC_BINARY(ETHTOOL_A_MM_STAT_PAD),
478 	NLATTR_DESC_U64(ETHTOOL_A_MM_STAT_REASSEMBLY_ERRORS),
479 	NLATTR_DESC_U64(ETHTOOL_A_MM_STAT_SMD_ERRORS),
480 	NLATTR_DESC_U64(ETHTOOL_A_MM_STAT_REASSEMBLY_OK),
481 	NLATTR_DESC_U64(ETHTOOL_A_MM_STAT_RX_FRAG_COUNT),
482 	NLATTR_DESC_U64(ETHTOOL_A_MM_STAT_TX_FRAG_COUNT),
483 	NLATTR_DESC_U64(ETHTOOL_A_MM_STAT_HOLD_COUNT),
484 };
485 
486 static const struct pretty_nla_desc __mm_desc[] = {
487 	NLATTR_DESC_INVALID(ETHTOOL_A_MM_UNSPEC),
488 	NLATTR_DESC_NESTED(ETHTOOL_A_MM_HEADER, header),
489 	NLATTR_DESC_U8(ETHTOOL_A_MM_PMAC_ENABLED),
490 	NLATTR_DESC_U8(ETHTOOL_A_MM_TX_ENABLED),
491 	NLATTR_DESC_U8(ETHTOOL_A_MM_TX_ACTIVE),
492 	NLATTR_DESC_U32(ETHTOOL_A_MM_TX_MIN_FRAG_SIZE),
493 	NLATTR_DESC_U32(ETHTOOL_A_MM_RX_MIN_FRAG_SIZE),
494 	NLATTR_DESC_U8(ETHTOOL_A_MM_VERIFY_ENABLED),
495 	NLATTR_DESC_U8(ETHTOOL_A_MM_VERIFY_STATUS),
496 	NLATTR_DESC_U32(ETHTOOL_A_MM_VERIFY_TIME),
497 	NLATTR_DESC_U32(ETHTOOL_A_MM_MAX_VERIFY_TIME),
498 	NLATTR_DESC_NESTED(ETHTOOL_A_MM_STATS, mm_stat),
499 };
500 
501 static const struct pretty_nla_desc __module_fw_flash_desc[] = {
502 	NLATTR_DESC_INVALID(ETHTOOL_A_MODULE_FW_FLASH_UNSPEC),
503 	NLATTR_DESC_NESTED(ETHTOOL_A_MODULE_FW_FLASH_HEADER, header),
504 	NLATTR_DESC_STRING(ETHTOOL_A_MODULE_FW_FLASH_FILE_NAME),
505 	NLATTR_DESC_U32(ETHTOOL_A_MODULE_FW_FLASH_PASSWORD),
506 	NLATTR_DESC_U32(ETHTOOL_A_MODULE_FW_FLASH_STATUS),
507 	NLATTR_DESC_STRING(ETHTOOL_A_MODULE_FW_FLASH_STATUS_MSG),
508 	NLATTR_DESC_UINT(ETHTOOL_A_MODULE_FW_FLASH_DONE),
509 	NLATTR_DESC_UINT(ETHTOOL_A_MODULE_FW_FLASH_TOTAL),
510 };
511 
512 const struct pretty_nlmsg_desc ethnl_umsg_desc[] = {
513 	NLMSG_DESC_INVALID(ETHTOOL_MSG_USER_NONE),
514 	NLMSG_DESC(ETHTOOL_MSG_STRSET_GET, strset),
515 	NLMSG_DESC(ETHTOOL_MSG_LINKINFO_GET, linkinfo),
516 	NLMSG_DESC(ETHTOOL_MSG_LINKINFO_SET, linkinfo),
517 	NLMSG_DESC(ETHTOOL_MSG_LINKMODES_GET, linkmodes),
518 	NLMSG_DESC(ETHTOOL_MSG_LINKMODES_SET, linkmodes),
519 	NLMSG_DESC(ETHTOOL_MSG_LINKSTATE_GET, linkstate),
520 	NLMSG_DESC(ETHTOOL_MSG_DEBUG_GET, debug),
521 	NLMSG_DESC(ETHTOOL_MSG_DEBUG_SET, debug),
522 	NLMSG_DESC(ETHTOOL_MSG_WOL_GET, wol),
523 	NLMSG_DESC(ETHTOOL_MSG_WOL_SET, wol),
524 	NLMSG_DESC(ETHTOOL_MSG_FEATURES_GET, features),
525 	NLMSG_DESC(ETHTOOL_MSG_FEATURES_SET, features),
526 	NLMSG_DESC(ETHTOOL_MSG_PRIVFLAGS_GET, privflags),
527 	NLMSG_DESC(ETHTOOL_MSG_PRIVFLAGS_SET, privflags),
528 	NLMSG_DESC(ETHTOOL_MSG_RINGS_GET, rings),
529 	NLMSG_DESC(ETHTOOL_MSG_RINGS_SET, rings),
530 	NLMSG_DESC(ETHTOOL_MSG_CHANNELS_GET, channels),
531 	NLMSG_DESC(ETHTOOL_MSG_CHANNELS_SET, channels),
532 	NLMSG_DESC(ETHTOOL_MSG_COALESCE_GET, coalesce),
533 	NLMSG_DESC(ETHTOOL_MSG_COALESCE_SET, coalesce),
534 	NLMSG_DESC(ETHTOOL_MSG_PAUSE_GET, pause),
535 	NLMSG_DESC(ETHTOOL_MSG_PAUSE_SET, pause),
536 	NLMSG_DESC(ETHTOOL_MSG_EEE_GET, eee),
537 	NLMSG_DESC(ETHTOOL_MSG_EEE_SET, eee),
538 	NLMSG_DESC(ETHTOOL_MSG_TSINFO_GET, tsinfo),
539 	NLMSG_DESC(ETHTOOL_MSG_CABLE_TEST_ACT, cable_test),
540 	NLMSG_DESC(ETHTOOL_MSG_CABLE_TEST_TDR_ACT, cable_test_tdr),
541 	NLMSG_DESC(ETHTOOL_MSG_TUNNEL_INFO_GET, tunnel_info),
542 	NLMSG_DESC(ETHTOOL_MSG_FEC_GET, fec),
543 	NLMSG_DESC(ETHTOOL_MSG_FEC_SET, fec),
544 	NLMSG_DESC(ETHTOOL_MSG_MODULE_EEPROM_GET, module_eeprom),
545 	NLMSG_DESC(ETHTOOL_MSG_STATS_GET, stats),
546 	NLMSG_DESC(ETHTOOL_MSG_PHC_VCLOCKS_GET, phc_vclocks),
547 	NLMSG_DESC(ETHTOOL_MSG_MODULE_GET, module),
548 	NLMSG_DESC(ETHTOOL_MSG_MODULE_SET, module),
549 	NLMSG_DESC(ETHTOOL_MSG_PSE_GET, pse),
550 	NLMSG_DESC(ETHTOOL_MSG_PSE_SET, pse),
551 	NLMSG_DESC(ETHTOOL_MSG_RSS_GET, rss),
552 	NLMSG_DESC(ETHTOOL_MSG_PLCA_GET_CFG, plca),
553 	NLMSG_DESC(ETHTOOL_MSG_PLCA_SET_CFG, plca),
554 	NLMSG_DESC(ETHTOOL_MSG_PLCA_GET_STATUS, plca),
555 	NLMSG_DESC(ETHTOOL_MSG_MM_GET, mm),
556 	NLMSG_DESC(ETHTOOL_MSG_MM_SET, mm),
557 	NLMSG_DESC(ETHTOOL_MSG_MODULE_FW_FLASH_ACT, module_fw_flash),
558 };
559 
560 const unsigned int ethnl_umsg_n_desc = ARRAY_SIZE(ethnl_umsg_desc);
561 
562 const struct pretty_nlmsg_desc ethnl_kmsg_desc[] = {
563 	NLMSG_DESC_INVALID(ETHTOOL_MSG_KERNEL_NONE),
564 	NLMSG_DESC(ETHTOOL_MSG_STRSET_GET_REPLY, strset),
565 	NLMSG_DESC(ETHTOOL_MSG_LINKINFO_GET_REPLY, linkinfo),
566 	NLMSG_DESC(ETHTOOL_MSG_LINKINFO_NTF, linkinfo),
567 	NLMSG_DESC(ETHTOOL_MSG_LINKMODES_GET_REPLY, linkmodes),
568 	NLMSG_DESC(ETHTOOL_MSG_LINKMODES_NTF, linkmodes),
569 	NLMSG_DESC(ETHTOOL_MSG_LINKSTATE_GET_REPLY, linkstate),
570 	NLMSG_DESC(ETHTOOL_MSG_DEBUG_GET_REPLY, debug),
571 	NLMSG_DESC(ETHTOOL_MSG_DEBUG_NTF, debug),
572 	NLMSG_DESC(ETHTOOL_MSG_WOL_GET_REPLY, wol),
573 	NLMSG_DESC(ETHTOOL_MSG_WOL_NTF, wol),
574 	NLMSG_DESC(ETHTOOL_MSG_FEATURES_GET_REPLY, features),
575 	NLMSG_DESC(ETHTOOL_MSG_FEATURES_SET_REPLY, features),
576 	NLMSG_DESC(ETHTOOL_MSG_FEATURES_NTF, features),
577 	NLMSG_DESC(ETHTOOL_MSG_PRIVFLAGS_GET_REPLY, privflags),
578 	NLMSG_DESC(ETHTOOL_MSG_PRIVFLAGS_NTF, privflags),
579 	NLMSG_DESC(ETHTOOL_MSG_RINGS_GET_REPLY, rings),
580 	NLMSG_DESC(ETHTOOL_MSG_RINGS_NTF, rings),
581 	NLMSG_DESC(ETHTOOL_MSG_CHANNELS_GET_REPLY, channels),
582 	NLMSG_DESC(ETHTOOL_MSG_CHANNELS_NTF, channels),
583 	NLMSG_DESC(ETHTOOL_MSG_COALESCE_GET_REPLY, coalesce),
584 	NLMSG_DESC(ETHTOOL_MSG_COALESCE_NTF, coalesce),
585 	NLMSG_DESC(ETHTOOL_MSG_PAUSE_GET_REPLY, pause),
586 	NLMSG_DESC(ETHTOOL_MSG_PAUSE_NTF, pause),
587 	NLMSG_DESC(ETHTOOL_MSG_EEE_GET_REPLY, eee),
588 	NLMSG_DESC(ETHTOOL_MSG_EEE_NTF, eee),
589 	NLMSG_DESC(ETHTOOL_MSG_TSINFO_GET_REPLY, tsinfo),
590 	NLMSG_DESC(ETHTOOL_MSG_CABLE_TEST_NTF, cable_test_ntf),
591 	NLMSG_DESC(ETHTOOL_MSG_CABLE_TEST_TDR_NTF, cable_test_tdr_ntf),
592 	NLMSG_DESC(ETHTOOL_MSG_TUNNEL_INFO_GET_REPLY, tunnel_info),
593 	NLMSG_DESC(ETHTOOL_MSG_FEC_GET_REPLY, fec),
594 	NLMSG_DESC(ETHTOOL_MSG_FEC_NTF, fec),
595 	NLMSG_DESC(ETHTOOL_MSG_MODULE_EEPROM_GET_REPLY, module_eeprom),
596 	NLMSG_DESC(ETHTOOL_MSG_STATS_GET_REPLY, stats),
597 	NLMSG_DESC(ETHTOOL_MSG_PHC_VCLOCKS_GET_REPLY, phc_vclocks),
598 	NLMSG_DESC(ETHTOOL_MSG_MODULE_GET_REPLY, module),
599 	NLMSG_DESC(ETHTOOL_MSG_MODULE_NTF, module),
600 	NLMSG_DESC(ETHTOOL_MSG_PSE_GET_REPLY, pse),
601 	NLMSG_DESC(ETHTOOL_MSG_RSS_GET_REPLY, rss),
602 	NLMSG_DESC(ETHTOOL_MSG_PLCA_GET_CFG_REPLY, plca),
603 	NLMSG_DESC(ETHTOOL_MSG_PLCA_GET_STATUS_REPLY, plca),
604 	NLMSG_DESC(ETHTOOL_MSG_PLCA_NTF, plca),
605 	NLMSG_DESC(ETHTOOL_MSG_MM_GET_REPLY, mm),
606 	NLMSG_DESC(ETHTOOL_MSG_MM_NTF, mm),
607 	NLMSG_DESC(ETHTOOL_MSG_MODULE_FW_FLASH_NTF, module_fw_flash),
608 };
609 
610 const unsigned int ethnl_kmsg_n_desc = ARRAY_SIZE(ethnl_kmsg_desc);
611