1 /* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
3 * include/uapi/linux/devlink.h - Network physical device Netlink interface
4 * Copyright (c) 2016 Mellanox Technologies. All rights reserved.
5 * Copyright (c) 2016 Jiri Pirko <jiri@mellanox.com>
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
13 #ifndef _UAPI_LINUX_DEVLINK_H_
14 #define _UAPI_LINUX_DEVLINK_H_
16 #include <linux/const.h>
18 #define DEVLINK_GENL_NAME "devlink"
19 #define DEVLINK_GENL_VERSION 0x1
20 #define DEVLINK_GENL_MCGRP_CONFIG_NAME "config"
22 enum devlink_command
{
23 /* don't change the order or add anything between, this is ABI! */
26 DEVLINK_CMD_GET
, /* can dump */
31 DEVLINK_CMD_PORT_GET
, /* can dump */
36 DEVLINK_CMD_PORT_SPLIT
,
37 DEVLINK_CMD_PORT_UNSPLIT
,
39 DEVLINK_CMD_SB_GET
, /* can dump */
44 DEVLINK_CMD_SB_POOL_GET
, /* can dump */
45 DEVLINK_CMD_SB_POOL_SET
,
46 DEVLINK_CMD_SB_POOL_NEW
,
47 DEVLINK_CMD_SB_POOL_DEL
,
49 DEVLINK_CMD_SB_PORT_POOL_GET
, /* can dump */
50 DEVLINK_CMD_SB_PORT_POOL_SET
,
51 DEVLINK_CMD_SB_PORT_POOL_NEW
,
52 DEVLINK_CMD_SB_PORT_POOL_DEL
,
54 DEVLINK_CMD_SB_TC_POOL_BIND_GET
, /* can dump */
55 DEVLINK_CMD_SB_TC_POOL_BIND_SET
,
56 DEVLINK_CMD_SB_TC_POOL_BIND_NEW
,
57 DEVLINK_CMD_SB_TC_POOL_BIND_DEL
,
59 /* Shared buffer occupancy monitoring commands */
60 DEVLINK_CMD_SB_OCC_SNAPSHOT
,
61 DEVLINK_CMD_SB_OCC_MAX_CLEAR
,
63 DEVLINK_CMD_ESWITCH_GET
,
64 #define DEVLINK_CMD_ESWITCH_MODE_GET /* obsolete, never use this! */ \
65 DEVLINK_CMD_ESWITCH_GET
67 DEVLINK_CMD_ESWITCH_SET
,
68 #define DEVLINK_CMD_ESWITCH_MODE_SET /* obsolete, never use this! */ \
69 DEVLINK_CMD_ESWITCH_SET
71 DEVLINK_CMD_DPIPE_TABLE_GET
,
72 DEVLINK_CMD_DPIPE_ENTRIES_GET
,
73 DEVLINK_CMD_DPIPE_HEADERS_GET
,
74 DEVLINK_CMD_DPIPE_TABLE_COUNTERS_SET
,
75 DEVLINK_CMD_RESOURCE_SET
,
76 DEVLINK_CMD_RESOURCE_DUMP
,
78 /* Hot driver reload, makes configuration changes take place. The
79 * devlink instance is not released during the process.
83 DEVLINK_CMD_PARAM_GET
, /* can dump */
84 DEVLINK_CMD_PARAM_SET
,
85 DEVLINK_CMD_PARAM_NEW
,
86 DEVLINK_CMD_PARAM_DEL
,
88 DEVLINK_CMD_REGION_GET
,
89 DEVLINK_CMD_REGION_SET
,
90 DEVLINK_CMD_REGION_NEW
,
91 DEVLINK_CMD_REGION_DEL
,
92 DEVLINK_CMD_REGION_READ
,
94 DEVLINK_CMD_PORT_PARAM_GET
, /* can dump */
95 DEVLINK_CMD_PORT_PARAM_SET
,
96 DEVLINK_CMD_PORT_PARAM_NEW
,
97 DEVLINK_CMD_PORT_PARAM_DEL
,
99 DEVLINK_CMD_INFO_GET
, /* can dump */
101 DEVLINK_CMD_HEALTH_REPORTER_GET
,
102 DEVLINK_CMD_HEALTH_REPORTER_SET
,
103 DEVLINK_CMD_HEALTH_REPORTER_RECOVER
,
104 DEVLINK_CMD_HEALTH_REPORTER_DIAGNOSE
,
105 DEVLINK_CMD_HEALTH_REPORTER_DUMP_GET
,
106 DEVLINK_CMD_HEALTH_REPORTER_DUMP_CLEAR
,
108 DEVLINK_CMD_FLASH_UPDATE
,
109 DEVLINK_CMD_FLASH_UPDATE_END
, /* notification only */
110 DEVLINK_CMD_FLASH_UPDATE_STATUS
, /* notification only */
112 DEVLINK_CMD_TRAP_GET
, /* can dump */
113 DEVLINK_CMD_TRAP_SET
,
114 DEVLINK_CMD_TRAP_NEW
,
115 DEVLINK_CMD_TRAP_DEL
,
117 DEVLINK_CMD_TRAP_GROUP_GET
, /* can dump */
118 DEVLINK_CMD_TRAP_GROUP_SET
,
119 DEVLINK_CMD_TRAP_GROUP_NEW
,
120 DEVLINK_CMD_TRAP_GROUP_DEL
,
122 DEVLINK_CMD_TRAP_POLICER_GET
, /* can dump */
123 DEVLINK_CMD_TRAP_POLICER_SET
,
124 DEVLINK_CMD_TRAP_POLICER_NEW
,
125 DEVLINK_CMD_TRAP_POLICER_DEL
,
127 DEVLINK_CMD_HEALTH_REPORTER_TEST
,
129 DEVLINK_CMD_RATE_GET
, /* can dump */
130 DEVLINK_CMD_RATE_SET
,
131 DEVLINK_CMD_RATE_NEW
,
132 DEVLINK_CMD_RATE_DEL
,
134 DEVLINK_CMD_LINECARD_GET
, /* can dump */
135 DEVLINK_CMD_LINECARD_SET
,
136 DEVLINK_CMD_LINECARD_NEW
,
137 DEVLINK_CMD_LINECARD_DEL
,
139 DEVLINK_CMD_SELFTESTS_GET
, /* can dump */
140 DEVLINK_CMD_SELFTESTS_RUN
,
142 DEVLINK_CMD_NOTIFY_FILTER_SET
,
144 /* add new commands above here */
146 DEVLINK_CMD_MAX
= __DEVLINK_CMD_MAX
- 1
149 enum devlink_port_type
{
150 DEVLINK_PORT_TYPE_NOTSET
,
151 DEVLINK_PORT_TYPE_AUTO
,
152 DEVLINK_PORT_TYPE_ETH
,
153 DEVLINK_PORT_TYPE_IB
,
156 enum devlink_sb_pool_type
{
157 DEVLINK_SB_POOL_TYPE_INGRESS
,
158 DEVLINK_SB_POOL_TYPE_EGRESS
,
161 /* static threshold - limiting the maximum number of bytes.
162 * dynamic threshold - limiting the maximum number of bytes
163 * based on the currently available free space in the shared buffer pool.
164 * In this mode, the maximum quota is calculated based
165 * on the following formula:
166 * max_quota = alpha / (1 + alpha) * Free_Buffer
167 * While Free_Buffer is the amount of none-occupied buffer associated to
169 * The value range which can be passed is 0-20 and serves
170 * for computation of alpha by following formula:
171 * alpha = 2 ^ (passed_value - 10)
174 enum devlink_sb_threshold_type
{
175 DEVLINK_SB_THRESHOLD_TYPE_STATIC
,
176 DEVLINK_SB_THRESHOLD_TYPE_DYNAMIC
,
179 #define DEVLINK_SB_THRESHOLD_TO_ALPHA_MAX 20
181 enum devlink_eswitch_mode
{
182 DEVLINK_ESWITCH_MODE_LEGACY
,
183 DEVLINK_ESWITCH_MODE_SWITCHDEV
,
186 enum devlink_eswitch_inline_mode
{
187 DEVLINK_ESWITCH_INLINE_MODE_NONE
,
188 DEVLINK_ESWITCH_INLINE_MODE_LINK
,
189 DEVLINK_ESWITCH_INLINE_MODE_NETWORK
,
190 DEVLINK_ESWITCH_INLINE_MODE_TRANSPORT
,
193 enum devlink_eswitch_encap_mode
{
194 DEVLINK_ESWITCH_ENCAP_MODE_NONE
,
195 DEVLINK_ESWITCH_ENCAP_MODE_BASIC
,
198 enum devlink_port_flavour
{
199 DEVLINK_PORT_FLAVOUR_PHYSICAL
, /* Any kind of a port physically
202 DEVLINK_PORT_FLAVOUR_CPU
, /* CPU port */
203 DEVLINK_PORT_FLAVOUR_DSA
, /* Distributed switch architecture
206 DEVLINK_PORT_FLAVOUR_PCI_PF
, /* Represents eswitch port for
207 * the PCI PF. It is an internal
208 * port that faces the PCI PF.
210 DEVLINK_PORT_FLAVOUR_PCI_VF
, /* Represents eswitch port
211 * for the PCI VF. It is an internal
212 * port that faces the PCI VF.
214 DEVLINK_PORT_FLAVOUR_VIRTUAL
, /* Any virtual port facing the user. */
215 DEVLINK_PORT_FLAVOUR_UNUSED
, /* Port which exists in the switch, but
216 * is not used in any way.
218 DEVLINK_PORT_FLAVOUR_PCI_SF
, /* Represents eswitch port
219 * for the PCI SF. It is an internal
220 * port that faces the PCI SF.
224 enum devlink_rate_type
{
225 DEVLINK_RATE_TYPE_LEAF
,
226 DEVLINK_RATE_TYPE_NODE
,
229 enum devlink_param_cmode
{
230 DEVLINK_PARAM_CMODE_RUNTIME
,
231 DEVLINK_PARAM_CMODE_DRIVERINIT
,
232 DEVLINK_PARAM_CMODE_PERMANENT
,
234 /* Add new configuration modes above */
235 __DEVLINK_PARAM_CMODE_MAX
,
236 DEVLINK_PARAM_CMODE_MAX
= __DEVLINK_PARAM_CMODE_MAX
- 1
239 enum devlink_param_fw_load_policy_value
{
240 DEVLINK_PARAM_FW_LOAD_POLICY_VALUE_DRIVER
,
241 DEVLINK_PARAM_FW_LOAD_POLICY_VALUE_FLASH
,
242 DEVLINK_PARAM_FW_LOAD_POLICY_VALUE_DISK
,
243 DEVLINK_PARAM_FW_LOAD_POLICY_VALUE_UNKNOWN
,
246 enum devlink_param_reset_dev_on_drv_probe_value
{
247 DEVLINK_PARAM_RESET_DEV_ON_DRV_PROBE_VALUE_UNKNOWN
,
248 DEVLINK_PARAM_RESET_DEV_ON_DRV_PROBE_VALUE_ALWAYS
,
249 DEVLINK_PARAM_RESET_DEV_ON_DRV_PROBE_VALUE_NEVER
,
250 DEVLINK_PARAM_RESET_DEV_ON_DRV_PROBE_VALUE_DISK
,
254 DEVLINK_ATTR_STATS_RX_PACKETS
, /* u64 */
255 DEVLINK_ATTR_STATS_RX_BYTES
, /* u64 */
256 DEVLINK_ATTR_STATS_RX_DROPPED
, /* u64 */
258 __DEVLINK_ATTR_STATS_MAX
,
259 DEVLINK_ATTR_STATS_MAX
= __DEVLINK_ATTR_STATS_MAX
- 1
262 /* Specify what sections of a flash component can be overwritten when
263 * performing an update. Overwriting of firmware binary sections is always
264 * implicitly assumed to be allowed.
266 * Each section must be documented in
267 * Documentation/networking/devlink/devlink-flash.rst
270 enum devlink_flash_overwrite
{
271 DEVLINK_FLASH_OVERWRITE_SETTINGS_BIT
,
272 DEVLINK_FLASH_OVERWRITE_IDENTIFIERS_BIT
,
274 __DEVLINK_FLASH_OVERWRITE_MAX_BIT
,
275 DEVLINK_FLASH_OVERWRITE_MAX_BIT
= __DEVLINK_FLASH_OVERWRITE_MAX_BIT
- 1
278 #define DEVLINK_FLASH_OVERWRITE_SETTINGS _BITUL(DEVLINK_FLASH_OVERWRITE_SETTINGS_BIT)
279 #define DEVLINK_FLASH_OVERWRITE_IDENTIFIERS _BITUL(DEVLINK_FLASH_OVERWRITE_IDENTIFIERS_BIT)
281 #define DEVLINK_SUPPORTED_FLASH_OVERWRITE_SECTIONS \
282 (_BITUL(__DEVLINK_FLASH_OVERWRITE_MAX_BIT) - 1)
284 enum devlink_attr_selftest_id
{
285 DEVLINK_ATTR_SELFTEST_ID_UNSPEC
,
286 DEVLINK_ATTR_SELFTEST_ID_FLASH
, /* flag */
288 __DEVLINK_ATTR_SELFTEST_ID_MAX
,
289 DEVLINK_ATTR_SELFTEST_ID_MAX
= __DEVLINK_ATTR_SELFTEST_ID_MAX
- 1
292 enum devlink_selftest_status
{
293 DEVLINK_SELFTEST_STATUS_SKIP
,
294 DEVLINK_SELFTEST_STATUS_PASS
,
295 DEVLINK_SELFTEST_STATUS_FAIL
298 enum devlink_attr_selftest_result
{
299 DEVLINK_ATTR_SELFTEST_RESULT_UNSPEC
,
300 DEVLINK_ATTR_SELFTEST_RESULT
, /* nested */
301 DEVLINK_ATTR_SELFTEST_RESULT_ID
, /* u32, enum devlink_attr_selftest_id */
302 DEVLINK_ATTR_SELFTEST_RESULT_STATUS
, /* u8, enum devlink_selftest_status */
304 __DEVLINK_ATTR_SELFTEST_RESULT_MAX
,
305 DEVLINK_ATTR_SELFTEST_RESULT_MAX
= __DEVLINK_ATTR_SELFTEST_RESULT_MAX
- 1
309 * enum devlink_trap_action - Packet trap action.
310 * @DEVLINK_TRAP_ACTION_DROP: Packet is dropped by the device and a copy is not
312 * @DEVLINK_TRAP_ACTION_TRAP: The sole copy of the packet is sent to the CPU.
313 * @DEVLINK_TRAP_ACTION_MIRROR: Packet is forwarded by the device and a copy is
316 enum devlink_trap_action
{
317 DEVLINK_TRAP_ACTION_DROP
,
318 DEVLINK_TRAP_ACTION_TRAP
,
319 DEVLINK_TRAP_ACTION_MIRROR
,
323 * enum devlink_trap_type - Packet trap type.
324 * @DEVLINK_TRAP_TYPE_DROP: Trap reason is a drop. Trapped packets are only
325 * processed by devlink and not injected to the
327 * @DEVLINK_TRAP_TYPE_EXCEPTION: Trap reason is an exception. Packet was not
328 * forwarded as intended due to an exception
329 * (e.g., missing neighbour entry) and trapped to
330 * control plane for resolution. Trapped packets
331 * are processed by devlink and injected to
332 * the kernel's Rx path.
333 * @DEVLINK_TRAP_TYPE_CONTROL: Packet was trapped because it is required for
334 * the correct functioning of the control plane.
335 * For example, an ARP request packet. Trapped
336 * packets are injected to the kernel's Rx path,
337 * but not reported to drop monitor.
339 enum devlink_trap_type
{
340 DEVLINK_TRAP_TYPE_DROP
,
341 DEVLINK_TRAP_TYPE_EXCEPTION
,
342 DEVLINK_TRAP_TYPE_CONTROL
,
346 /* Trap can report input port as metadata */
347 DEVLINK_ATTR_TRAP_METADATA_TYPE_IN_PORT
,
348 /* Trap can report flow action cookie as metadata */
349 DEVLINK_ATTR_TRAP_METADATA_TYPE_FA_COOKIE
,
352 enum devlink_reload_action
{
353 DEVLINK_RELOAD_ACTION_UNSPEC
,
354 DEVLINK_RELOAD_ACTION_DRIVER_REINIT
, /* Driver entities re-instantiation */
355 DEVLINK_RELOAD_ACTION_FW_ACTIVATE
, /* FW activate */
357 /* Add new reload actions above */
358 __DEVLINK_RELOAD_ACTION_MAX
,
359 DEVLINK_RELOAD_ACTION_MAX
= __DEVLINK_RELOAD_ACTION_MAX
- 1
362 enum devlink_reload_limit
{
363 DEVLINK_RELOAD_LIMIT_UNSPEC
, /* unspecified, no constraints */
364 DEVLINK_RELOAD_LIMIT_NO_RESET
, /* No reset allowed, no down time allowed,
365 * no link flap and no configuration is lost.
368 /* Add new reload limit above */
369 __DEVLINK_RELOAD_LIMIT_MAX
,
370 DEVLINK_RELOAD_LIMIT_MAX
= __DEVLINK_RELOAD_LIMIT_MAX
- 1
373 #define DEVLINK_RELOAD_LIMITS_VALID_MASK (_BITUL(__DEVLINK_RELOAD_LIMIT_MAX) - 1)
375 enum devlink_linecard_state
{
376 DEVLINK_LINECARD_STATE_UNSPEC
,
377 DEVLINK_LINECARD_STATE_UNPROVISIONED
,
378 DEVLINK_LINECARD_STATE_UNPROVISIONING
,
379 DEVLINK_LINECARD_STATE_PROVISIONING
,
380 DEVLINK_LINECARD_STATE_PROVISIONING_FAILED
,
381 DEVLINK_LINECARD_STATE_PROVISIONED
,
382 DEVLINK_LINECARD_STATE_ACTIVE
,
384 __DEVLINK_LINECARD_STATE_MAX
,
385 DEVLINK_LINECARD_STATE_MAX
= __DEVLINK_LINECARD_STATE_MAX
- 1
389 /* don't change the order or add anything between, this is ABI! */
392 /* bus name + dev name together are a handle for devlink entity */
393 DEVLINK_ATTR_BUS_NAME
, /* string */
394 DEVLINK_ATTR_DEV_NAME
, /* string */
396 DEVLINK_ATTR_PORT_INDEX
, /* u32 */
397 DEVLINK_ATTR_PORT_TYPE
, /* u16 */
398 DEVLINK_ATTR_PORT_DESIRED_TYPE
, /* u16 */
399 DEVLINK_ATTR_PORT_NETDEV_IFINDEX
, /* u32 */
400 DEVLINK_ATTR_PORT_NETDEV_NAME
, /* string */
401 DEVLINK_ATTR_PORT_IBDEV_NAME
, /* string */
402 DEVLINK_ATTR_PORT_SPLIT_COUNT
, /* u32 */
403 DEVLINK_ATTR_PORT_SPLIT_GROUP
, /* u32 */
404 DEVLINK_ATTR_SB_INDEX
, /* u32 */
405 DEVLINK_ATTR_SB_SIZE
, /* u32 */
406 DEVLINK_ATTR_SB_INGRESS_POOL_COUNT
, /* u16 */
407 DEVLINK_ATTR_SB_EGRESS_POOL_COUNT
, /* u16 */
408 DEVLINK_ATTR_SB_INGRESS_TC_COUNT
, /* u16 */
409 DEVLINK_ATTR_SB_EGRESS_TC_COUNT
, /* u16 */
410 DEVLINK_ATTR_SB_POOL_INDEX
, /* u16 */
411 DEVLINK_ATTR_SB_POOL_TYPE
, /* u8 */
412 DEVLINK_ATTR_SB_POOL_SIZE
, /* u32 */
413 DEVLINK_ATTR_SB_POOL_THRESHOLD_TYPE
, /* u8 */
414 DEVLINK_ATTR_SB_THRESHOLD
, /* u32 */
415 DEVLINK_ATTR_SB_TC_INDEX
, /* u16 */
416 DEVLINK_ATTR_SB_OCC_CUR
, /* u32 */
417 DEVLINK_ATTR_SB_OCC_MAX
, /* u32 */
418 DEVLINK_ATTR_ESWITCH_MODE
, /* u16 */
419 DEVLINK_ATTR_ESWITCH_INLINE_MODE
, /* u8 */
421 DEVLINK_ATTR_DPIPE_TABLES
, /* nested */
422 DEVLINK_ATTR_DPIPE_TABLE
, /* nested */
423 DEVLINK_ATTR_DPIPE_TABLE_NAME
, /* string */
424 DEVLINK_ATTR_DPIPE_TABLE_SIZE
, /* u64 */
425 DEVLINK_ATTR_DPIPE_TABLE_MATCHES
, /* nested */
426 DEVLINK_ATTR_DPIPE_TABLE_ACTIONS
, /* nested */
427 DEVLINK_ATTR_DPIPE_TABLE_COUNTERS_ENABLED
, /* u8 */
429 DEVLINK_ATTR_DPIPE_ENTRIES
, /* nested */
430 DEVLINK_ATTR_DPIPE_ENTRY
, /* nested */
431 DEVLINK_ATTR_DPIPE_ENTRY_INDEX
, /* u64 */
432 DEVLINK_ATTR_DPIPE_ENTRY_MATCH_VALUES
, /* nested */
433 DEVLINK_ATTR_DPIPE_ENTRY_ACTION_VALUES
, /* nested */
434 DEVLINK_ATTR_DPIPE_ENTRY_COUNTER
, /* u64 */
436 DEVLINK_ATTR_DPIPE_MATCH
, /* nested */
437 DEVLINK_ATTR_DPIPE_MATCH_VALUE
, /* nested */
438 DEVLINK_ATTR_DPIPE_MATCH_TYPE
, /* u32 */
440 DEVLINK_ATTR_DPIPE_ACTION
, /* nested */
441 DEVLINK_ATTR_DPIPE_ACTION_VALUE
, /* nested */
442 DEVLINK_ATTR_DPIPE_ACTION_TYPE
, /* u32 */
444 DEVLINK_ATTR_DPIPE_VALUE
,
445 DEVLINK_ATTR_DPIPE_VALUE_MASK
,
446 DEVLINK_ATTR_DPIPE_VALUE_MAPPING
, /* u32 */
448 DEVLINK_ATTR_DPIPE_HEADERS
, /* nested */
449 DEVLINK_ATTR_DPIPE_HEADER
, /* nested */
450 DEVLINK_ATTR_DPIPE_HEADER_NAME
, /* string */
451 DEVLINK_ATTR_DPIPE_HEADER_ID
, /* u32 */
452 DEVLINK_ATTR_DPIPE_HEADER_FIELDS
, /* nested */
453 DEVLINK_ATTR_DPIPE_HEADER_GLOBAL
, /* u8 */
454 DEVLINK_ATTR_DPIPE_HEADER_INDEX
, /* u32 */
456 DEVLINK_ATTR_DPIPE_FIELD
, /* nested */
457 DEVLINK_ATTR_DPIPE_FIELD_NAME
, /* string */
458 DEVLINK_ATTR_DPIPE_FIELD_ID
, /* u32 */
459 DEVLINK_ATTR_DPIPE_FIELD_BITWIDTH
, /* u32 */
460 DEVLINK_ATTR_DPIPE_FIELD_MAPPING_TYPE
, /* u32 */
464 DEVLINK_ATTR_ESWITCH_ENCAP_MODE
, /* u8 */
465 DEVLINK_ATTR_RESOURCE_LIST
, /* nested */
466 DEVLINK_ATTR_RESOURCE
, /* nested */
467 DEVLINK_ATTR_RESOURCE_NAME
, /* string */
468 DEVLINK_ATTR_RESOURCE_ID
, /* u64 */
469 DEVLINK_ATTR_RESOURCE_SIZE
, /* u64 */
470 DEVLINK_ATTR_RESOURCE_SIZE_NEW
, /* u64 */
471 DEVLINK_ATTR_RESOURCE_SIZE_VALID
, /* u8 */
472 DEVLINK_ATTR_RESOURCE_SIZE_MIN
, /* u64 */
473 DEVLINK_ATTR_RESOURCE_SIZE_MAX
, /* u64 */
474 DEVLINK_ATTR_RESOURCE_SIZE_GRAN
, /* u64 */
475 DEVLINK_ATTR_RESOURCE_UNIT
, /* u8 */
476 DEVLINK_ATTR_RESOURCE_OCC
, /* u64 */
477 DEVLINK_ATTR_DPIPE_TABLE_RESOURCE_ID
, /* u64 */
478 DEVLINK_ATTR_DPIPE_TABLE_RESOURCE_UNITS
,/* u64 */
480 DEVLINK_ATTR_PORT_FLAVOUR
, /* u16 */
481 DEVLINK_ATTR_PORT_NUMBER
, /* u32 */
482 DEVLINK_ATTR_PORT_SPLIT_SUBPORT_NUMBER
, /* u32 */
484 DEVLINK_ATTR_PARAM
, /* nested */
485 DEVLINK_ATTR_PARAM_NAME
, /* string */
486 DEVLINK_ATTR_PARAM_GENERIC
, /* flag */
487 DEVLINK_ATTR_PARAM_TYPE
, /* u8 */
488 DEVLINK_ATTR_PARAM_VALUES_LIST
, /* nested */
489 DEVLINK_ATTR_PARAM_VALUE
, /* nested */
490 DEVLINK_ATTR_PARAM_VALUE_DATA
, /* dynamic */
491 DEVLINK_ATTR_PARAM_VALUE_CMODE
, /* u8 */
493 DEVLINK_ATTR_REGION_NAME
, /* string */
494 DEVLINK_ATTR_REGION_SIZE
, /* u64 */
495 DEVLINK_ATTR_REGION_SNAPSHOTS
, /* nested */
496 DEVLINK_ATTR_REGION_SNAPSHOT
, /* nested */
497 DEVLINK_ATTR_REGION_SNAPSHOT_ID
, /* u32 */
499 DEVLINK_ATTR_REGION_CHUNKS
, /* nested */
500 DEVLINK_ATTR_REGION_CHUNK
, /* nested */
501 DEVLINK_ATTR_REGION_CHUNK_DATA
, /* binary */
502 DEVLINK_ATTR_REGION_CHUNK_ADDR
, /* u64 */
503 DEVLINK_ATTR_REGION_CHUNK_LEN
, /* u64 */
505 DEVLINK_ATTR_INFO_DRIVER_NAME
, /* string */
506 DEVLINK_ATTR_INFO_SERIAL_NUMBER
, /* string */
507 DEVLINK_ATTR_INFO_VERSION_FIXED
, /* nested */
508 DEVLINK_ATTR_INFO_VERSION_RUNNING
, /* nested */
509 DEVLINK_ATTR_INFO_VERSION_STORED
, /* nested */
510 DEVLINK_ATTR_INFO_VERSION_NAME
, /* string */
511 DEVLINK_ATTR_INFO_VERSION_VALUE
, /* string */
513 DEVLINK_ATTR_SB_POOL_CELL_SIZE
, /* u32 */
515 DEVLINK_ATTR_FMSG
, /* nested */
516 DEVLINK_ATTR_FMSG_OBJ_NEST_START
, /* flag */
517 DEVLINK_ATTR_FMSG_PAIR_NEST_START
, /* flag */
518 DEVLINK_ATTR_FMSG_ARR_NEST_START
, /* flag */
519 DEVLINK_ATTR_FMSG_NEST_END
, /* flag */
520 DEVLINK_ATTR_FMSG_OBJ_NAME
, /* string */
521 DEVLINK_ATTR_FMSG_OBJ_VALUE_TYPE
, /* u8 */
522 DEVLINK_ATTR_FMSG_OBJ_VALUE_DATA
, /* dynamic */
524 DEVLINK_ATTR_HEALTH_REPORTER
, /* nested */
525 DEVLINK_ATTR_HEALTH_REPORTER_NAME
, /* string */
526 DEVLINK_ATTR_HEALTH_REPORTER_STATE
, /* u8 */
527 DEVLINK_ATTR_HEALTH_REPORTER_ERR_COUNT
, /* u64 */
528 DEVLINK_ATTR_HEALTH_REPORTER_RECOVER_COUNT
, /* u64 */
529 DEVLINK_ATTR_HEALTH_REPORTER_DUMP_TS
, /* u64 */
530 DEVLINK_ATTR_HEALTH_REPORTER_GRACEFUL_PERIOD
, /* u64 */
531 DEVLINK_ATTR_HEALTH_REPORTER_AUTO_RECOVER
, /* u8 */
533 DEVLINK_ATTR_FLASH_UPDATE_FILE_NAME
, /* string */
534 DEVLINK_ATTR_FLASH_UPDATE_COMPONENT
, /* string */
535 DEVLINK_ATTR_FLASH_UPDATE_STATUS_MSG
, /* string */
536 DEVLINK_ATTR_FLASH_UPDATE_STATUS_DONE
, /* u64 */
537 DEVLINK_ATTR_FLASH_UPDATE_STATUS_TOTAL
, /* u64 */
539 DEVLINK_ATTR_PORT_PCI_PF_NUMBER
, /* u16 */
540 DEVLINK_ATTR_PORT_PCI_VF_NUMBER
, /* u16 */
542 DEVLINK_ATTR_STATS
, /* nested */
544 DEVLINK_ATTR_TRAP_NAME
, /* string */
545 /* enum devlink_trap_action */
546 DEVLINK_ATTR_TRAP_ACTION
, /* u8 */
547 /* enum devlink_trap_type */
548 DEVLINK_ATTR_TRAP_TYPE
, /* u8 */
549 DEVLINK_ATTR_TRAP_GENERIC
, /* flag */
550 DEVLINK_ATTR_TRAP_METADATA
, /* nested */
551 DEVLINK_ATTR_TRAP_GROUP_NAME
, /* string */
553 DEVLINK_ATTR_RELOAD_FAILED
, /* u8 0 or 1 */
555 DEVLINK_ATTR_HEALTH_REPORTER_DUMP_TS_NS
, /* u64 */
557 DEVLINK_ATTR_NETNS_FD
, /* u32 */
558 DEVLINK_ATTR_NETNS_PID
, /* u32 */
559 DEVLINK_ATTR_NETNS_ID
, /* u32 */
561 DEVLINK_ATTR_HEALTH_REPORTER_AUTO_DUMP
, /* u8 */
563 DEVLINK_ATTR_TRAP_POLICER_ID
, /* u32 */
564 DEVLINK_ATTR_TRAP_POLICER_RATE
, /* u64 */
565 DEVLINK_ATTR_TRAP_POLICER_BURST
, /* u64 */
567 DEVLINK_ATTR_PORT_FUNCTION
, /* nested */
569 DEVLINK_ATTR_INFO_BOARD_SERIAL_NUMBER
, /* string */
571 DEVLINK_ATTR_PORT_LANES
, /* u32 */
572 DEVLINK_ATTR_PORT_SPLITTABLE
, /* u8 */
574 DEVLINK_ATTR_PORT_EXTERNAL
, /* u8 */
575 DEVLINK_ATTR_PORT_CONTROLLER_NUMBER
, /* u32 */
577 DEVLINK_ATTR_FLASH_UPDATE_STATUS_TIMEOUT
, /* u64 */
578 DEVLINK_ATTR_FLASH_UPDATE_OVERWRITE_MASK
, /* bitfield32 */
580 DEVLINK_ATTR_RELOAD_ACTION
, /* u8 */
581 DEVLINK_ATTR_RELOAD_ACTIONS_PERFORMED
, /* bitfield32 */
582 DEVLINK_ATTR_RELOAD_LIMITS
, /* bitfield32 */
584 DEVLINK_ATTR_DEV_STATS
, /* nested */
585 DEVLINK_ATTR_RELOAD_STATS
, /* nested */
586 DEVLINK_ATTR_RELOAD_STATS_ENTRY
, /* nested */
587 DEVLINK_ATTR_RELOAD_STATS_LIMIT
, /* u8 */
588 DEVLINK_ATTR_RELOAD_STATS_VALUE
, /* u32 */
589 DEVLINK_ATTR_REMOTE_RELOAD_STATS
, /* nested */
590 DEVLINK_ATTR_RELOAD_ACTION_INFO
, /* nested */
591 DEVLINK_ATTR_RELOAD_ACTION_STATS
, /* nested */
593 DEVLINK_ATTR_PORT_PCI_SF_NUMBER
, /* u32 */
595 DEVLINK_ATTR_RATE_TYPE
, /* u16 */
596 DEVLINK_ATTR_RATE_TX_SHARE
, /* u64 */
597 DEVLINK_ATTR_RATE_TX_MAX
, /* u64 */
598 DEVLINK_ATTR_RATE_NODE_NAME
, /* string */
599 DEVLINK_ATTR_RATE_PARENT_NODE_NAME
, /* string */
601 DEVLINK_ATTR_REGION_MAX_SNAPSHOTS
, /* u32 */
603 DEVLINK_ATTR_LINECARD_INDEX
, /* u32 */
604 DEVLINK_ATTR_LINECARD_STATE
, /* u8 */
605 DEVLINK_ATTR_LINECARD_TYPE
, /* string */
606 DEVLINK_ATTR_LINECARD_SUPPORTED_TYPES
, /* nested */
608 DEVLINK_ATTR_NESTED_DEVLINK
, /* nested */
610 DEVLINK_ATTR_SELFTESTS
, /* nested */
612 DEVLINK_ATTR_RATE_TX_PRIORITY
, /* u32 */
613 DEVLINK_ATTR_RATE_TX_WEIGHT
, /* u32 */
615 DEVLINK_ATTR_REGION_DIRECT
, /* flag */
617 /* Add new attributes above here, update the spec in
618 * Documentation/netlink/specs/devlink.yaml and re-generate
619 * net/devlink/netlink_gen.c.
623 DEVLINK_ATTR_MAX
= __DEVLINK_ATTR_MAX
- 1
626 /* Mapping between internal resource described by the field and system
629 enum devlink_dpipe_field_mapping_type
{
630 DEVLINK_DPIPE_FIELD_MAPPING_TYPE_NONE
,
631 DEVLINK_DPIPE_FIELD_MAPPING_TYPE_IFINDEX
,
634 /* Match type - specify the type of the match */
635 enum devlink_dpipe_match_type
{
636 DEVLINK_DPIPE_MATCH_TYPE_FIELD_EXACT
,
639 /* Action type - specify the action type */
640 enum devlink_dpipe_action_type
{
641 DEVLINK_DPIPE_ACTION_TYPE_FIELD_MODIFY
,
644 enum devlink_dpipe_field_ethernet_id
{
645 DEVLINK_DPIPE_FIELD_ETHERNET_DST_MAC
,
648 enum devlink_dpipe_field_ipv4_id
{
649 DEVLINK_DPIPE_FIELD_IPV4_DST_IP
,
652 enum devlink_dpipe_field_ipv6_id
{
653 DEVLINK_DPIPE_FIELD_IPV6_DST_IP
,
656 enum devlink_dpipe_header_id
{
657 DEVLINK_DPIPE_HEADER_ETHERNET
,
658 DEVLINK_DPIPE_HEADER_IPV4
,
659 DEVLINK_DPIPE_HEADER_IPV6
,
662 enum devlink_resource_unit
{
663 DEVLINK_RESOURCE_UNIT_ENTRY
,
666 enum devlink_port_fn_attr_cap
{
667 DEVLINK_PORT_FN_ATTR_CAP_ROCE_BIT
,
668 DEVLINK_PORT_FN_ATTR_CAP_MIGRATABLE_BIT
,
669 DEVLINK_PORT_FN_ATTR_CAP_IPSEC_CRYPTO_BIT
,
670 DEVLINK_PORT_FN_ATTR_CAP_IPSEC_PACKET_BIT
,
672 /* Add new caps above */
673 __DEVLINK_PORT_FN_ATTR_CAPS_MAX
,
676 #define DEVLINK_PORT_FN_CAP_ROCE _BITUL(DEVLINK_PORT_FN_ATTR_CAP_ROCE_BIT)
677 #define DEVLINK_PORT_FN_CAP_MIGRATABLE \
678 _BITUL(DEVLINK_PORT_FN_ATTR_CAP_MIGRATABLE_BIT)
679 #define DEVLINK_PORT_FN_CAP_IPSEC_CRYPTO _BITUL(DEVLINK_PORT_FN_ATTR_CAP_IPSEC_CRYPTO_BIT)
680 #define DEVLINK_PORT_FN_CAP_IPSEC_PACKET _BITUL(DEVLINK_PORT_FN_ATTR_CAP_IPSEC_PACKET_BIT)
682 enum devlink_port_function_attr
{
683 DEVLINK_PORT_FUNCTION_ATTR_UNSPEC
,
684 DEVLINK_PORT_FUNCTION_ATTR_HW_ADDR
, /* binary */
685 DEVLINK_PORT_FN_ATTR_STATE
, /* u8 */
686 DEVLINK_PORT_FN_ATTR_OPSTATE
, /* u8 */
687 DEVLINK_PORT_FN_ATTR_CAPS
, /* bitfield32 */
688 DEVLINK_PORT_FN_ATTR_DEVLINK
, /* nested */
689 DEVLINK_PORT_FN_ATTR_MAX_IO_EQS
, /* u32 */
691 __DEVLINK_PORT_FUNCTION_ATTR_MAX
,
692 DEVLINK_PORT_FUNCTION_ATTR_MAX
= __DEVLINK_PORT_FUNCTION_ATTR_MAX
- 1
695 enum devlink_port_fn_state
{
696 DEVLINK_PORT_FN_STATE_INACTIVE
,
697 DEVLINK_PORT_FN_STATE_ACTIVE
,
701 * enum devlink_port_fn_opstate - indicates operational state of the function
702 * @DEVLINK_PORT_FN_OPSTATE_ATTACHED: Driver is attached to the function.
703 * For graceful tear down of the function, after inactivation of the
704 * function, user should wait for operational state to turn DETACHED.
705 * @DEVLINK_PORT_FN_OPSTATE_DETACHED: Driver is detached from the function.
706 * It is safe to delete the port.
708 enum devlink_port_fn_opstate
{
709 DEVLINK_PORT_FN_OPSTATE_DETACHED
,
710 DEVLINK_PORT_FN_OPSTATE_ATTACHED
,
713 #endif /* _UAPI_LINUX_DEVLINK_H_ */