1
2
3
4
5
6
7
8
9
10
11
12
13 #ifndef _UAPI_LINUX_DEVLINK_H_
14 #define _UAPI_LINUX_DEVLINK_H_
15
16 #define DEVLINK_GENL_NAME "devlink"
17 #define DEVLINK_GENL_VERSION 0x1
18 #define DEVLINK_GENL_MCGRP_CONFIG_NAME "config"
19
20 enum devlink_command {
21
22 DEVLINK_CMD_UNSPEC,
23
24 DEVLINK_CMD_GET,
25 DEVLINK_CMD_SET,
26 DEVLINK_CMD_NEW,
27 DEVLINK_CMD_DEL,
28
29 DEVLINK_CMD_PORT_GET,
30 DEVLINK_CMD_PORT_SET,
31 DEVLINK_CMD_PORT_NEW,
32 DEVLINK_CMD_PORT_DEL,
33
34 DEVLINK_CMD_PORT_SPLIT,
35 DEVLINK_CMD_PORT_UNSPLIT,
36
37 DEVLINK_CMD_SB_GET,
38 DEVLINK_CMD_SB_SET,
39 DEVLINK_CMD_SB_NEW,
40 DEVLINK_CMD_SB_DEL,
41
42 DEVLINK_CMD_SB_POOL_GET,
43 DEVLINK_CMD_SB_POOL_SET,
44 DEVLINK_CMD_SB_POOL_NEW,
45 DEVLINK_CMD_SB_POOL_DEL,
46
47 DEVLINK_CMD_SB_PORT_POOL_GET,
48 DEVLINK_CMD_SB_PORT_POOL_SET,
49 DEVLINK_CMD_SB_PORT_POOL_NEW,
50 DEVLINK_CMD_SB_PORT_POOL_DEL,
51
52 DEVLINK_CMD_SB_TC_POOL_BIND_GET,
53 DEVLINK_CMD_SB_TC_POOL_BIND_SET,
54 DEVLINK_CMD_SB_TC_POOL_BIND_NEW,
55 DEVLINK_CMD_SB_TC_POOL_BIND_DEL,
56
57
58 DEVLINK_CMD_SB_OCC_SNAPSHOT,
59 DEVLINK_CMD_SB_OCC_MAX_CLEAR,
60
61 DEVLINK_CMD_ESWITCH_GET,
62 #define DEVLINK_CMD_ESWITCH_MODE_GET \
63 DEVLINK_CMD_ESWITCH_GET
64
65 DEVLINK_CMD_ESWITCH_SET,
66 #define DEVLINK_CMD_ESWITCH_MODE_SET \
67 DEVLINK_CMD_ESWITCH_SET
68
69 DEVLINK_CMD_DPIPE_TABLE_GET,
70 DEVLINK_CMD_DPIPE_ENTRIES_GET,
71 DEVLINK_CMD_DPIPE_HEADERS_GET,
72 DEVLINK_CMD_DPIPE_TABLE_COUNTERS_SET,
73 DEVLINK_CMD_RESOURCE_SET,
74 DEVLINK_CMD_RESOURCE_DUMP,
75
76
77
78
79 DEVLINK_CMD_RELOAD,
80
81 DEVLINK_CMD_PARAM_GET,
82 DEVLINK_CMD_PARAM_SET,
83 DEVLINK_CMD_PARAM_NEW,
84 DEVLINK_CMD_PARAM_DEL,
85
86 DEVLINK_CMD_REGION_GET,
87 DEVLINK_CMD_REGION_SET,
88 DEVLINK_CMD_REGION_NEW,
89 DEVLINK_CMD_REGION_DEL,
90 DEVLINK_CMD_REGION_READ,
91
92 DEVLINK_CMD_PORT_PARAM_GET,
93 DEVLINK_CMD_PORT_PARAM_SET,
94 DEVLINK_CMD_PORT_PARAM_NEW,
95 DEVLINK_CMD_PORT_PARAM_DEL,
96
97 DEVLINK_CMD_INFO_GET,
98
99 DEVLINK_CMD_HEALTH_REPORTER_GET,
100 DEVLINK_CMD_HEALTH_REPORTER_SET,
101 DEVLINK_CMD_HEALTH_REPORTER_RECOVER,
102 DEVLINK_CMD_HEALTH_REPORTER_DIAGNOSE,
103 DEVLINK_CMD_HEALTH_REPORTER_DUMP_GET,
104 DEVLINK_CMD_HEALTH_REPORTER_DUMP_CLEAR,
105
106 DEVLINK_CMD_FLASH_UPDATE,
107 DEVLINK_CMD_FLASH_UPDATE_END,
108 DEVLINK_CMD_FLASH_UPDATE_STATUS,
109
110 DEVLINK_CMD_TRAP_GET,
111 DEVLINK_CMD_TRAP_SET,
112 DEVLINK_CMD_TRAP_NEW,
113 DEVLINK_CMD_TRAP_DEL,
114
115 DEVLINK_CMD_TRAP_GROUP_GET,
116 DEVLINK_CMD_TRAP_GROUP_SET,
117 DEVLINK_CMD_TRAP_GROUP_NEW,
118 DEVLINK_CMD_TRAP_GROUP_DEL,
119
120
121 __DEVLINK_CMD_MAX,
122 DEVLINK_CMD_MAX = __DEVLINK_CMD_MAX - 1
123 };
124
125 enum devlink_port_type {
126 DEVLINK_PORT_TYPE_NOTSET,
127 DEVLINK_PORT_TYPE_AUTO,
128 DEVLINK_PORT_TYPE_ETH,
129 DEVLINK_PORT_TYPE_IB,
130 };
131
132 enum devlink_sb_pool_type {
133 DEVLINK_SB_POOL_TYPE_INGRESS,
134 DEVLINK_SB_POOL_TYPE_EGRESS,
135 };
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150 enum devlink_sb_threshold_type {
151 DEVLINK_SB_THRESHOLD_TYPE_STATIC,
152 DEVLINK_SB_THRESHOLD_TYPE_DYNAMIC,
153 };
154
155 #define DEVLINK_SB_THRESHOLD_TO_ALPHA_MAX 20
156
157 enum devlink_eswitch_mode {
158 DEVLINK_ESWITCH_MODE_LEGACY,
159 DEVLINK_ESWITCH_MODE_SWITCHDEV,
160 };
161
162 enum devlink_eswitch_inline_mode {
163 DEVLINK_ESWITCH_INLINE_MODE_NONE,
164 DEVLINK_ESWITCH_INLINE_MODE_LINK,
165 DEVLINK_ESWITCH_INLINE_MODE_NETWORK,
166 DEVLINK_ESWITCH_INLINE_MODE_TRANSPORT,
167 };
168
169 enum devlink_eswitch_encap_mode {
170 DEVLINK_ESWITCH_ENCAP_MODE_NONE,
171 DEVLINK_ESWITCH_ENCAP_MODE_BASIC,
172 };
173
174 enum devlink_port_flavour {
175 DEVLINK_PORT_FLAVOUR_PHYSICAL,
176
177
178 DEVLINK_PORT_FLAVOUR_CPU,
179 DEVLINK_PORT_FLAVOUR_DSA,
180
181
182 DEVLINK_PORT_FLAVOUR_PCI_PF,
183
184
185
186 DEVLINK_PORT_FLAVOUR_PCI_VF,
187
188
189
190 };
191
192 enum devlink_param_cmode {
193 DEVLINK_PARAM_CMODE_RUNTIME,
194 DEVLINK_PARAM_CMODE_DRIVERINIT,
195 DEVLINK_PARAM_CMODE_PERMANENT,
196
197
198 __DEVLINK_PARAM_CMODE_MAX,
199 DEVLINK_PARAM_CMODE_MAX = __DEVLINK_PARAM_CMODE_MAX - 1
200 };
201
202 enum devlink_param_fw_load_policy_value {
203 DEVLINK_PARAM_FW_LOAD_POLICY_VALUE_DRIVER,
204 DEVLINK_PARAM_FW_LOAD_POLICY_VALUE_FLASH,
205 DEVLINK_PARAM_FW_LOAD_POLICY_VALUE_DISK,
206 DEVLINK_PARAM_FW_LOAD_POLICY_VALUE_UNKNOWN,
207 };
208
209 enum devlink_param_reset_dev_on_drv_probe_value {
210 DEVLINK_PARAM_RESET_DEV_ON_DRV_PROBE_VALUE_UNKNOWN,
211 DEVLINK_PARAM_RESET_DEV_ON_DRV_PROBE_VALUE_ALWAYS,
212 DEVLINK_PARAM_RESET_DEV_ON_DRV_PROBE_VALUE_NEVER,
213 DEVLINK_PARAM_RESET_DEV_ON_DRV_PROBE_VALUE_DISK,
214 };
215
216 enum {
217 DEVLINK_ATTR_STATS_RX_PACKETS,
218 DEVLINK_ATTR_STATS_RX_BYTES,
219
220 __DEVLINK_ATTR_STATS_MAX,
221 DEVLINK_ATTR_STATS_MAX = __DEVLINK_ATTR_STATS_MAX - 1
222 };
223
224
225
226
227
228
229
230 enum devlink_trap_action {
231 DEVLINK_TRAP_ACTION_DROP,
232 DEVLINK_TRAP_ACTION_TRAP,
233 };
234
235
236
237
238
239
240
241
242
243
244
245
246
247 enum devlink_trap_type {
248 DEVLINK_TRAP_TYPE_DROP,
249 DEVLINK_TRAP_TYPE_EXCEPTION,
250 };
251
252 enum {
253
254 DEVLINK_ATTR_TRAP_METADATA_TYPE_IN_PORT,
255 };
256
257 enum devlink_attr {
258
259 DEVLINK_ATTR_UNSPEC,
260
261
262 DEVLINK_ATTR_BUS_NAME,
263 DEVLINK_ATTR_DEV_NAME,
264
265 DEVLINK_ATTR_PORT_INDEX,
266 DEVLINK_ATTR_PORT_TYPE,
267 DEVLINK_ATTR_PORT_DESIRED_TYPE,
268 DEVLINK_ATTR_PORT_NETDEV_IFINDEX,
269 DEVLINK_ATTR_PORT_NETDEV_NAME,
270 DEVLINK_ATTR_PORT_IBDEV_NAME,
271 DEVLINK_ATTR_PORT_SPLIT_COUNT,
272 DEVLINK_ATTR_PORT_SPLIT_GROUP,
273 DEVLINK_ATTR_SB_INDEX,
274 DEVLINK_ATTR_SB_SIZE,
275 DEVLINK_ATTR_SB_INGRESS_POOL_COUNT,
276 DEVLINK_ATTR_SB_EGRESS_POOL_COUNT,
277 DEVLINK_ATTR_SB_INGRESS_TC_COUNT,
278 DEVLINK_ATTR_SB_EGRESS_TC_COUNT,
279 DEVLINK_ATTR_SB_POOL_INDEX,
280 DEVLINK_ATTR_SB_POOL_TYPE,
281 DEVLINK_ATTR_SB_POOL_SIZE,
282 DEVLINK_ATTR_SB_POOL_THRESHOLD_TYPE,
283 DEVLINK_ATTR_SB_THRESHOLD,
284 DEVLINK_ATTR_SB_TC_INDEX,
285 DEVLINK_ATTR_SB_OCC_CUR,
286 DEVLINK_ATTR_SB_OCC_MAX,
287 DEVLINK_ATTR_ESWITCH_MODE,
288 DEVLINK_ATTR_ESWITCH_INLINE_MODE,
289
290 DEVLINK_ATTR_DPIPE_TABLES,
291 DEVLINK_ATTR_DPIPE_TABLE,
292 DEVLINK_ATTR_DPIPE_TABLE_NAME,
293 DEVLINK_ATTR_DPIPE_TABLE_SIZE,
294 DEVLINK_ATTR_DPIPE_TABLE_MATCHES,
295 DEVLINK_ATTR_DPIPE_TABLE_ACTIONS,
296 DEVLINK_ATTR_DPIPE_TABLE_COUNTERS_ENABLED,
297
298 DEVLINK_ATTR_DPIPE_ENTRIES,
299 DEVLINK_ATTR_DPIPE_ENTRY,
300 DEVLINK_ATTR_DPIPE_ENTRY_INDEX,
301 DEVLINK_ATTR_DPIPE_ENTRY_MATCH_VALUES,
302 DEVLINK_ATTR_DPIPE_ENTRY_ACTION_VALUES,
303 DEVLINK_ATTR_DPIPE_ENTRY_COUNTER,
304
305 DEVLINK_ATTR_DPIPE_MATCH,
306 DEVLINK_ATTR_DPIPE_MATCH_VALUE,
307 DEVLINK_ATTR_DPIPE_MATCH_TYPE,
308
309 DEVLINK_ATTR_DPIPE_ACTION,
310 DEVLINK_ATTR_DPIPE_ACTION_VALUE,
311 DEVLINK_ATTR_DPIPE_ACTION_TYPE,
312
313 DEVLINK_ATTR_DPIPE_VALUE,
314 DEVLINK_ATTR_DPIPE_VALUE_MASK,
315 DEVLINK_ATTR_DPIPE_VALUE_MAPPING,
316
317 DEVLINK_ATTR_DPIPE_HEADERS,
318 DEVLINK_ATTR_DPIPE_HEADER,
319 DEVLINK_ATTR_DPIPE_HEADER_NAME,
320 DEVLINK_ATTR_DPIPE_HEADER_ID,
321 DEVLINK_ATTR_DPIPE_HEADER_FIELDS,
322 DEVLINK_ATTR_DPIPE_HEADER_GLOBAL,
323 DEVLINK_ATTR_DPIPE_HEADER_INDEX,
324
325 DEVLINK_ATTR_DPIPE_FIELD,
326 DEVLINK_ATTR_DPIPE_FIELD_NAME,
327 DEVLINK_ATTR_DPIPE_FIELD_ID,
328 DEVLINK_ATTR_DPIPE_FIELD_BITWIDTH,
329 DEVLINK_ATTR_DPIPE_FIELD_MAPPING_TYPE,
330
331 DEVLINK_ATTR_PAD,
332
333 DEVLINK_ATTR_ESWITCH_ENCAP_MODE,
334 DEVLINK_ATTR_RESOURCE_LIST,
335 DEVLINK_ATTR_RESOURCE,
336 DEVLINK_ATTR_RESOURCE_NAME,
337 DEVLINK_ATTR_RESOURCE_ID,
338 DEVLINK_ATTR_RESOURCE_SIZE,
339 DEVLINK_ATTR_RESOURCE_SIZE_NEW,
340 DEVLINK_ATTR_RESOURCE_SIZE_VALID,
341 DEVLINK_ATTR_RESOURCE_SIZE_MIN,
342 DEVLINK_ATTR_RESOURCE_SIZE_MAX,
343 DEVLINK_ATTR_RESOURCE_SIZE_GRAN,
344 DEVLINK_ATTR_RESOURCE_UNIT,
345 DEVLINK_ATTR_RESOURCE_OCC,
346 DEVLINK_ATTR_DPIPE_TABLE_RESOURCE_ID,
347 DEVLINK_ATTR_DPIPE_TABLE_RESOURCE_UNITS,
348
349 DEVLINK_ATTR_PORT_FLAVOUR,
350 DEVLINK_ATTR_PORT_NUMBER,
351 DEVLINK_ATTR_PORT_SPLIT_SUBPORT_NUMBER,
352
353 DEVLINK_ATTR_PARAM,
354 DEVLINK_ATTR_PARAM_NAME,
355 DEVLINK_ATTR_PARAM_GENERIC,
356 DEVLINK_ATTR_PARAM_TYPE,
357 DEVLINK_ATTR_PARAM_VALUES_LIST,
358 DEVLINK_ATTR_PARAM_VALUE,
359 DEVLINK_ATTR_PARAM_VALUE_DATA,
360 DEVLINK_ATTR_PARAM_VALUE_CMODE,
361
362 DEVLINK_ATTR_REGION_NAME,
363 DEVLINK_ATTR_REGION_SIZE,
364 DEVLINK_ATTR_REGION_SNAPSHOTS,
365 DEVLINK_ATTR_REGION_SNAPSHOT,
366 DEVLINK_ATTR_REGION_SNAPSHOT_ID,
367
368 DEVLINK_ATTR_REGION_CHUNKS,
369 DEVLINK_ATTR_REGION_CHUNK,
370 DEVLINK_ATTR_REGION_CHUNK_DATA,
371 DEVLINK_ATTR_REGION_CHUNK_ADDR,
372 DEVLINK_ATTR_REGION_CHUNK_LEN,
373
374 DEVLINK_ATTR_INFO_DRIVER_NAME,
375 DEVLINK_ATTR_INFO_SERIAL_NUMBER,
376 DEVLINK_ATTR_INFO_VERSION_FIXED,
377 DEVLINK_ATTR_INFO_VERSION_RUNNING,
378 DEVLINK_ATTR_INFO_VERSION_STORED,
379 DEVLINK_ATTR_INFO_VERSION_NAME,
380 DEVLINK_ATTR_INFO_VERSION_VALUE,
381
382 DEVLINK_ATTR_SB_POOL_CELL_SIZE,
383
384 DEVLINK_ATTR_FMSG,
385 DEVLINK_ATTR_FMSG_OBJ_NEST_START,
386 DEVLINK_ATTR_FMSG_PAIR_NEST_START,
387 DEVLINK_ATTR_FMSG_ARR_NEST_START,
388 DEVLINK_ATTR_FMSG_NEST_END,
389 DEVLINK_ATTR_FMSG_OBJ_NAME,
390 DEVLINK_ATTR_FMSG_OBJ_VALUE_TYPE,
391 DEVLINK_ATTR_FMSG_OBJ_VALUE_DATA,
392
393 DEVLINK_ATTR_HEALTH_REPORTER,
394 DEVLINK_ATTR_HEALTH_REPORTER_NAME,
395 DEVLINK_ATTR_HEALTH_REPORTER_STATE,
396 DEVLINK_ATTR_HEALTH_REPORTER_ERR_COUNT,
397 DEVLINK_ATTR_HEALTH_REPORTER_RECOVER_COUNT,
398 DEVLINK_ATTR_HEALTH_REPORTER_DUMP_TS,
399 DEVLINK_ATTR_HEALTH_REPORTER_GRACEFUL_PERIOD,
400 DEVLINK_ATTR_HEALTH_REPORTER_AUTO_RECOVER,
401
402 DEVLINK_ATTR_FLASH_UPDATE_FILE_NAME,
403 DEVLINK_ATTR_FLASH_UPDATE_COMPONENT,
404 DEVLINK_ATTR_FLASH_UPDATE_STATUS_MSG,
405 DEVLINK_ATTR_FLASH_UPDATE_STATUS_DONE,
406 DEVLINK_ATTR_FLASH_UPDATE_STATUS_TOTAL,
407
408 DEVLINK_ATTR_PORT_PCI_PF_NUMBER,
409 DEVLINK_ATTR_PORT_PCI_VF_NUMBER,
410
411 DEVLINK_ATTR_STATS,
412
413 DEVLINK_ATTR_TRAP_NAME,
414
415 DEVLINK_ATTR_TRAP_ACTION,
416
417 DEVLINK_ATTR_TRAP_TYPE,
418 DEVLINK_ATTR_TRAP_GENERIC,
419 DEVLINK_ATTR_TRAP_METADATA,
420 DEVLINK_ATTR_TRAP_GROUP_NAME,
421
422 DEVLINK_ATTR_RELOAD_FAILED,
423
424 DEVLINK_ATTR_HEALTH_REPORTER_DUMP_TS_NS,
425
426
427 __DEVLINK_ATTR_MAX,
428 DEVLINK_ATTR_MAX = __DEVLINK_ATTR_MAX - 1
429 };
430
431
432
433
434 enum devlink_dpipe_field_mapping_type {
435 DEVLINK_DPIPE_FIELD_MAPPING_TYPE_NONE,
436 DEVLINK_DPIPE_FIELD_MAPPING_TYPE_IFINDEX,
437 };
438
439
440 enum devlink_dpipe_match_type {
441 DEVLINK_DPIPE_MATCH_TYPE_FIELD_EXACT,
442 };
443
444
445 enum devlink_dpipe_action_type {
446 DEVLINK_DPIPE_ACTION_TYPE_FIELD_MODIFY,
447 };
448
449 enum devlink_dpipe_field_ethernet_id {
450 DEVLINK_DPIPE_FIELD_ETHERNET_DST_MAC,
451 };
452
453 enum devlink_dpipe_field_ipv4_id {
454 DEVLINK_DPIPE_FIELD_IPV4_DST_IP,
455 };
456
457 enum devlink_dpipe_field_ipv6_id {
458 DEVLINK_DPIPE_FIELD_IPV6_DST_IP,
459 };
460
461 enum devlink_dpipe_header_id {
462 DEVLINK_DPIPE_HEADER_ETHERNET,
463 DEVLINK_DPIPE_HEADER_IPV4,
464 DEVLINK_DPIPE_HEADER_IPV6,
465 };
466
467 enum devlink_resource_unit {
468 DEVLINK_RESOURCE_UNIT_ENTRY,
469 };
470
471 #endif