linux-stable/Documentation/netlink/specs/devlink.yaml

2268 lines
48 KiB
YAML
Raw Normal View History

# SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause)
name: devlink
protocol: genetlink-legacy
doc: Partial family for Devlink.
definitions:
-
type: enum
name: sb-pool-type
entries:
-
name: ingress
-
name: egress
-
type: enum
name: port-type
entries:
-
name: notset
-
name: auto
-
name: eth
-
name: ib
-
type: enum
name: port-flavour
entries:
-
name: physical
-
name: cpu
-
name: dsa
-
name: pci_pf
-
name: pci_vf
-
name: virtual
-
name: unused
-
name: pci_sf
-
type: enum
name: port-fn-state
entries:
-
name: inactive
-
name: active
-
type: enum
name: port-fn-opstate
entries:
-
name: detached
-
name: attached
-
type: enum
name: port-fn-attr-cap
entries:
-
name: roce-bit
-
name: migratable-bit
-
name: ipsec-crypto-bit
-
name: ipsec-packet-bit
-
type: enum
name: rate-type
entries:
-
name: leaf
-
name: node
-
type: enum
name: sb-threshold-type
entries:
-
name: static
-
name: dynamic
-
type: enum
name: eswitch-mode
entries:
-
name: legacy
-
name: switchdev
-
type: enum
name: eswitch-inline-mode
entries:
-
name: none
-
name: link
-
name: network
-
name: transport
-
type: enum
name: eswitch-encap-mode
entries:
-
name: none
-
name: basic
-
type: enum
name: dpipe-header-id
entries:
-
name: ethernet
-
name: ipv4
-
name: ipv6
-
type: enum
name: dpipe-match-type
entries:
-
name: field-exact
-
type: enum
name: dpipe-action-type
entries:
-
name: field-modify
-
type: enum
name: dpipe-field-mapping-type
entries:
-
name: none
-
name: ifindex
-
type: enum
name: resource-unit
entries:
-
name: entry
-
type: enum
name: reload-action
entries:
-
name: driver-reinit
value: 1
-
name: fw-activate
-
type: enum
name: param-cmode
entries:
-
name: runtime
-
name: driverinit
-
name: permanent
-
type: enum
name: flash-overwrite
entries:
-
name: settings-bit
-
name: identifiers-bit
-
type: enum
name: trap-action
entries:
-
name: drop
-
name: trap
-
name: mirror
-
type: enum
name: trap-type
entries:
-
name: drop
-
name: exception
-
name: control
attribute-sets:
-
name: devlink
name-prefix: devlink-attr-
attributes:
-
name: bus-name
type: string
value: 1
-
name: dev-name
type: string
-
name: port-index
type: u32
-
name: port-type
type: u16
enum: port-type
-
name: port-desired-type
type: u16
-
name: port-netdev-ifindex
type: u32
-
name: port-netdev-name
type: string
-
name: port-ibdev-name
type: string
-
name: port-split-count
type: u32
-
name: port-split-group
type: u32
-
name: sb-index
type: u32
-
name: sb-size
type: u32
-
name: sb-ingress-pool-count
type: u16
-
name: sb-egress-pool-count
type: u16
-
name: sb-ingress-tc-count
type: u16
-
name: sb-egress-tc-count
type: u16
-
name: sb-pool-index
type: u16
-
name: sb-pool-type
type: u8
enum: sb-pool-type
-
name: sb-pool-size
type: u32
-
name: sb-pool-threshold-type
type: u8
enum: sb-threshold-type
-
name: sb-threshold
type: u32
-
name: sb-tc-index
type: u16
-
name: sb-occ-cur
type: u32
-
name: sb-occ-max
type: u32
-
name: eswitch-mode
type: u16
enum: eswitch-mode
-
name: eswitch-inline-mode
type: u8
enum: eswitch-inline-mode
-
name: dpipe-tables
type: nest
nested-attributes: dl-dpipe-tables
-
name: dpipe-table
type: nest
multi-attr: true
nested-attributes: dl-dpipe-table
-
name: dpipe-table-name
type: string
-
name: dpipe-table-size
type: u64
-
name: dpipe-table-matches
type: nest
nested-attributes: dl-dpipe-table-matches
-
name: dpipe-table-actions
type: nest
nested-attributes: dl-dpipe-table-actions
-
name: dpipe-table-counters-enabled
type: u8
-
name: dpipe-entries
type: nest
nested-attributes: dl-dpipe-entries
-
name: dpipe-entry
type: nest
multi-attr: true
nested-attributes: dl-dpipe-entry
-
name: dpipe-entry-index
type: u64
-
name: dpipe-entry-match-values
type: nest
nested-attributes: dl-dpipe-entry-match-values
-
name: dpipe-entry-action-values
type: nest
nested-attributes: dl-dpipe-entry-action-values
-
name: dpipe-entry-counter
type: u64
-
name: dpipe-match
type: nest
multi-attr: true
nested-attributes: dl-dpipe-match
-
name: dpipe-match-value
type: nest
multi-attr: true
nested-attributes: dl-dpipe-match-value
-
name: dpipe-match-type
type: u32
enum: dpipe-match-type
-
name: dpipe-action
type: nest
multi-attr: true
nested-attributes: dl-dpipe-action
-
name: dpipe-action-value
type: nest
multi-attr: true
nested-attributes: dl-dpipe-action-value
-
name: dpipe-action-type
type: u32
enum: dpipe-action-type
-
name: dpipe-value
type: binary
-
name: dpipe-value-mask
type: binary
-
name: dpipe-value-mapping
type: u32
-
name: dpipe-headers
type: nest
nested-attributes: dl-dpipe-headers
-
name: dpipe-header
type: nest
multi-attr: true
nested-attributes: dl-dpipe-header
-
name: dpipe-header-name
type: string
-
name: dpipe-header-id
type: u32
enum: dpipe-header-id
-
name: dpipe-header-fields
type: nest
nested-attributes: dl-dpipe-header-fields
-
name: dpipe-header-global
type: u8
-
name: dpipe-header-index
type: u32
-
name: dpipe-field
type: nest
multi-attr: true
nested-attributes: dl-dpipe-field
-
name: dpipe-field-name
type: string
-
name: dpipe-field-id
type: u32
-
name: dpipe-field-bitwidth
type: u32
-
name: dpipe-field-mapping-type
type: u32
enum: dpipe-field-mapping-type
-
name: pad
type: pad
-
name: eswitch-encap-mode
type: u8
enum: eswitch-encap-mode
-
name: resource-list
type: nest
nested-attributes: dl-resource-list
-
name: resource
type: nest
multi-attr: true
nested-attributes: dl-resource
-
name: resource-name
type: string
-
name: resource-id
type: u64
-
name: resource-size
type: u64
-
name: resource-size-new
type: u64
-
name: resource-size-valid
type: u8
-
name: resource-size-min
type: u64
-
name: resource-size-max
type: u64
-
name: resource-size-gran
type: u64
-
name: resource-unit
type: u8
enum: resource-unit
-
name: resource-occ
type: u64
-
name: dpipe-table-resource-id
type: u64
-
name: dpipe-table-resource-units
type: u64
-
name: port-flavour
type: u16
enum: port-flavour
-
name: port-number
type: u32
-
name: port-split-subport-number
type: u32
-
name: param
type: nest
nested-attributes: dl-param
-
name: param-name
type: string
-
name: param-generic
type: flag
-
name: param-type
type: u8
# TODO: fill in the attributes in between
-
name: param-value-cmode
type: u8
enum: param-cmode
value: 87
-
name: region-name
type: string
-
name: region-size
type: u64
-
name: region-snapshots
type: nest
nested-attributes: dl-region-snapshots
-
name: region-snapshot
type: nest
nested-attributes: dl-region-snapshot
-
name: region-snapshot-id
type: u32
-
name: region-chunks
type: nest
nested-attributes: dl-region-chunks
-
name: region-chunk
type: nest
nested-attributes: dl-region-chunk
-
name: region-chunk-data
type: binary
-
name: region-chunk-addr
type: u64
-
name: region-chunk-len
type: u64
-
name: info-driver-name
type: string
-
name: info-serial-number
type: string
-
name: info-version-fixed
type: nest
multi-attr: true
nested-attributes: dl-info-version
-
name: info-version-running
type: nest
multi-attr: true
nested-attributes: dl-info-version
-
name: info-version-stored
type: nest
multi-attr: true
nested-attributes: dl-info-version
-
name: info-version-name
type: string
-
name: info-version-value
type: string
-
name: sb-pool-cell-size
type: u32
-
name: fmsg
type: nest
nested-attributes: dl-fmsg
-
name: fmsg-obj-nest-start
type: flag
-
name: fmsg-pair-nest-start
type: flag
-
name: fmsg-arr-nest-start
type: flag
-
name: fmsg-nest-end
type: flag
-
name: fmsg-obj-name
type: string
-
name: fmsg-obj-value-type
type: u8
# TODO: fill in the attributes in between
-
name: health-reporter
type: nest
value: 114
nested-attributes: dl-health-reporter
-
name: health-reporter-name
type: string
-
name: health-reporter-state
type: u8
-
name: health-reporter-err-count
type: u64
-
name: health-reporter-recover-count
type: u64
-
name: health-reporter-dump-ts
type: u64
-
name: health-reporter-graceful-period
type: u64
-
name: health-reporter-auto-recover
type: u8
-
name: flash-update-file-name
type: string
-
name: flash-update-component
type: string
-
name: flash-update-status-msg
type: string
-
name: flash-update-status-done
type: u64
-
name: flash-update-status-total
type: u64
-
name: port-pci-pf-number
type: u16
-
name: port-pci-vf-number
type: u16
-
name: stats
type: nest
nested-attributes: dl-attr-stats
-
name: trap-name
type: string
-
name: trap-action
type: u8
enum: trap-action
-
name: trap-type
type: u8
enum: trap-type
-
name: trap-generic
type: flag
-
name: trap-metadata
type: nest
nested-attributes: dl-trap-metadata
-
name: trap-group-name
type: string
-
name: reload-failed
type: u8
-
name: health-reporter-dump-ts-ns
type: u64
-
name: netns-fd
type: u32
-
name: netns-pid
type: u32
-
name: netns-id
type: u32
-
name: health-reporter-auto-dump
type: u8
-
name: trap-policer-id
type: u32
-
name: trap-policer-rate
type: u64
-
name: trap-policer-burst
type: u64
-
name: port-function
type: nest
nested-attributes: dl-port-function
-
name: info-board-serial-number
type: string
-
name: port-lanes
type: u32
-
name: port-splittable
type: u8
-
name: port-external
type: u8
-
name: port-controller-number
type: u32
-
name: flash-update-status-timeout
type: u64
-
name: flash-update-overwrite-mask
type: bitfield32
enum: flash-overwrite
enum-as-flags: True
-
name: reload-action
type: u8
enum: reload-action
-
name: reload-actions-performed
type: bitfield32
enum: reload-action
enum-as-flags: True
-
name: reload-limits
type: bitfield32
enum: reload-action
enum-as-flags: True
-
name: dev-stats
type: nest
nested-attributes: dl-dev-stats
-
name: reload-stats
type: nest
nested-attributes: dl-reload-stats
-
name: reload-stats-entry
type: nest
multi-attr: true
nested-attributes: dl-reload-stats-entry
-
name: reload-stats-limit
type: u8
-
name: reload-stats-value
type: u32
-
name: remote-reload-stats
type: nest
nested-attributes: dl-reload-stats
-
name: reload-action-info
type: nest
multi-attr: true
nested-attributes: dl-reload-act-info
-
name: reload-action-stats
type: nest
multi-attr: true
nested-attributes: dl-reload-act-stats
-
name: port-pci-sf-number
type: u32
-
name: rate-type
type: u16
enum: rate-type
-
name: rate-tx-share
type: u64
-
name: rate-tx-max
type: u64
-
name: rate-node-name
type: string
-
name: rate-parent-node-name
type: string
-
name: region-max-snapshots
type: u32
-
name: linecard-index
type: u32
-
name: linecard-state
type: u8
-
name: linecard-type
type: string
-
name: linecard-supported-types
type: nest
nested-attributes: dl-linecard-supported-types
# TODO: fill in the attributes in between
-
name: selftests
type: nest
value: 176
nested-attributes: dl-selftest-id
-
name: rate-tx-priority
type: u32
-
name: rate-tx-weight
type: u32
-
name: region-direct
type: flag
-
name: dl-dev-stats
subset-of: devlink
attributes:
-
name: reload-stats
-
name: remote-reload-stats
-
name: dl-reload-stats
subset-of: devlink
attributes:
-
name: reload-action-info
-
name: dl-reload-act-info
subset-of: devlink
attributes:
-
name: reload-action
-
name: reload-action-stats
-
name: dl-reload-act-stats
subset-of: devlink
attributes:
-
name: reload-stats-entry
-
name: dl-reload-stats-entry
subset-of: devlink
attributes:
-
name: reload-stats-limit
-
name: reload-stats-value
-
name: dl-info-version
subset-of: devlink
attributes:
-
name: info-version-name
-
name: info-version-value
-
name: dl-port-function
name-prefix: devlink-port-fn-attr-
attr-max-name: devlink-port-function-attr-max
attributes:
-
name-prefix: devlink-port-function-attr-
name: hw-addr
type: binary
value: 1
-
name: state
type: u8
enum: port-fn-state
-
name: opstate
type: u8
enum: port-fn-opstate
-
name: caps
type: bitfield32
enum: port-fn-attr-cap
enum-as-flags: True
-
name: dl-dpipe-tables
subset-of: devlink
attributes:
-
name: dpipe-table
-
name: dl-dpipe-table
subset-of: devlink
attributes:
-
name: dpipe-table-name
-
name: dpipe-table-size
-
name: dpipe-table-name
-
name: dpipe-table-size
-
name: dpipe-table-matches
-
name: dpipe-table-actions
-
name: dpipe-table-counters-enabled
-
name: dpipe-table-resource-id
-
name: dpipe-table-resource-units
-
name: dl-dpipe-table-matches
subset-of: devlink
attributes:
-
name: dpipe-match
-
name: dl-dpipe-table-actions
subset-of: devlink
attributes:
-
name: dpipe-action
-
name: dl-dpipe-entries
subset-of: devlink
attributes:
-
name: dpipe-entry
-
name: dl-dpipe-entry
subset-of: devlink
attributes:
-
name: dpipe-entry-index
-
name: dpipe-entry-match-values
-
name: dpipe-entry-action-values
-
name: dpipe-entry-counter
-
name: dl-dpipe-entry-match-values
subset-of: devlink
attributes:
-
name: dpipe-match-value
-
name: dl-dpipe-entry-action-values
subset-of: devlink
attributes:
-
name: dpipe-action-value
-
name: dl-dpipe-match
subset-of: devlink
attributes:
-
name: dpipe-match-type
-
name: dpipe-header-id
-
name: dpipe-header-global
-
name: dpipe-header-index
-
name: dpipe-field-id
-
name: dl-dpipe-match-value
subset-of: devlink
attributes:
-
name: dpipe-match
-
name: dpipe-value
-
name: dpipe-value-mask
-
name: dpipe-value-mapping
-
name: dl-dpipe-action
subset-of: devlink
attributes:
-
name: dpipe-action-type
-
name: dpipe-header-id
-
name: dpipe-header-global
-
name: dpipe-header-index
-
name: dpipe-field-id
-
name: dl-dpipe-action-value
subset-of: devlink
attributes:
-
name: dpipe-action
-
name: dpipe-value
-
name: dpipe-value-mask
-
name: dpipe-value-mapping
-
name: dl-dpipe-headers
subset-of: devlink
attributes:
-
name: dpipe-header
-
name: dl-dpipe-header
subset-of: devlink
attributes:
-
name: dpipe-header-name
-
name: dpipe-header-id
-
name: dpipe-header-global
-
name: dpipe-header-fields
-
name: dl-dpipe-header-fields
subset-of: devlink
attributes:
-
name: dpipe-field
-
name: dl-dpipe-field
subset-of: devlink
attributes:
-
name: dpipe-field-name
-
name: dpipe-field-id
-
name: dpipe-field-bitwidth
-
name: dpipe-field-mapping-type
-
name: dl-resource
subset-of: devlink
attributes:
# -
# name: resource-list
# This is currently unsupported due to circular dependency
-
name: resource-name
-
name: resource-id
-
name: resource-size
-
name: resource-size-new
-
name: resource-size-valid
-
name: resource-size-min
-
name: resource-size-max
-
name: resource-size-gran
-
name: resource-unit
-
name: resource-occ
-
name: dl-resource-list
subset-of: devlink
attributes:
-
name: resource
-
name: dl-param
subset-of: devlink
attributes:
-
name: param-name
-
name: param-generic
-
name: param-type
# TODO: fill in the attribute param-value-list
-
name: dl-region-snapshots
subset-of: devlink
attributes:
-
name: region-snapshot
-
name: dl-region-snapshot
subset-of: devlink
attributes:
-
name: region-snapshot-id
-
name: dl-region-chunks
subset-of: devlink
attributes:
-
name: region-chunk
-
name: dl-region-chunk
subset-of: devlink
attributes:
-
name: region-chunk-data
-
name: region-chunk-addr
-
name: dl-fmsg
subset-of: devlink
attributes:
-
name: fmsg-obj-nest-start
-
name: fmsg-pair-nest-start
-
name: fmsg-arr-nest-start
-
name: fmsg-nest-end
-
name: fmsg-obj-name
-
name: dl-health-reporter
subset-of: devlink
attributes:
-
name: health-reporter-name
-
name: health-reporter-state
-
name: health-reporter-err-count
-
name: health-reporter-recover-count
-
name: health-reporter-graceful-period
-
name: health-reporter-auto-recover
-
name: health-reporter-dump-ts
-
name: health-reporter-dump-ts-ns
-
name: health-reporter-auto-dump
-
name: dl-attr-stats
name-prefix: devlink-attr-
attributes:
- name: stats-rx-packets
type: u64
value: 0
-
name: stats-rx-bytes
type: u64
-
name: stats-rx-dropped
type: u64
-
name: dl-trap-metadata
name-prefix: devlink-attr-
attributes:
-
name: trap-metadata-type-in-port
type: flag
value: 0
-
name: trap-metadata-type-fa-cookie
type: flag
-
name: dl-linecard-supported-types
subset-of: devlink
attributes:
-
name: linecard-type
-
name: dl-selftest-id
name-prefix: devlink-attr-selftest-id-
attributes:
-
name: flash
type: flag
operations:
enum-model: directional
list:
-
name: get
doc: Get devlink instances.
attribute-set: devlink
dont-validate: [ strict, dump ]
do:
pre: devlink-nl-pre-doit
post: devlink-nl-post-doit
request:
value: 1
attributes: &dev-id-attrs
- bus-name
- dev-name
reply: &get-reply
value: 3
attributes:
- bus-name
- dev-name
- reload-failed
- dev-stats
dump:
reply: *get-reply
-
name: port-get
doc: Get devlink port instances.
attribute-set: devlink
dont-validate: [ strict ]
do:
pre: devlink-nl-pre-doit-port
post: devlink-nl-post-doit
request:
value: 5
attributes: &port-id-attrs
- bus-name
- dev-name
- port-index
reply:
value: 7
attributes: *port-id-attrs
dump:
request:
attributes: *dev-id-attrs
reply:
value: 3 # due to a bug, port dump returns DEVLINK_CMD_NEW
attributes: *port-id-attrs
-
name: port-set
doc: Set devlink port instances.
attribute-set: devlink
dont-validate: [ strict ]
flags: [ admin-perm ]
do:
pre: devlink-nl-pre-doit-port
post: devlink-nl-post-doit
request:
attributes:
- bus-name
- dev-name
- port-index
- port-type
- port-function
-
name: port-new
doc: Create devlink port instances.
attribute-set: devlink
dont-validate: [ strict ]
flags: [ admin-perm ]
do:
pre: devlink-nl-pre-doit
post: devlink-nl-post-doit
request:
attributes:
- bus-name
- dev-name
- port-index
- port-flavour
- port-pci-pf-number
- port-pci-sf-number
- port-controller-number
reply:
value: 7
attributes: *port-id-attrs
-
name: port-del
doc: Delete devlink port instances.
attribute-set: devlink
dont-validate: [ strict ]
flags: [ admin-perm ]
do:
pre: devlink-nl-pre-doit-port
post: devlink-nl-post-doit
request:
attributes: *port-id-attrs
-
name: port-split
doc: Split devlink port instances.
attribute-set: devlink
dont-validate: [ strict ]
flags: [ admin-perm ]
do:
pre: devlink-nl-pre-doit-port
post: devlink-nl-post-doit
request:
attributes:
- bus-name
- dev-name
- port-index
- port-split-count
-
name: port-unsplit
doc: Unplit devlink port instances.
attribute-set: devlink
dont-validate: [ strict ]
flags: [ admin-perm ]
do:
pre: devlink-nl-pre-doit-port
post: devlink-nl-post-doit
request:
attributes: *port-id-attrs
-
name: sb-get
doc: Get shared buffer instances.
attribute-set: devlink
dont-validate: [ strict ]
do:
pre: devlink-nl-pre-doit
post: devlink-nl-post-doit
request:
value: 11
attributes: &sb-id-attrs
- bus-name
- dev-name
- sb-index
reply: &sb-get-reply
value: 13
attributes: *sb-id-attrs
dump:
request:
attributes: *dev-id-attrs
reply: *sb-get-reply
-
name: sb-pool-get
doc: Get shared buffer pool instances.
attribute-set: devlink
dont-validate: [ strict ]
do:
pre: devlink-nl-pre-doit
post: devlink-nl-post-doit
request:
value: 15
attributes: &sb-pool-id-attrs
- bus-name
- dev-name
- sb-index
- sb-pool-index
reply: &sb-pool-get-reply
value: 17
attributes: *sb-pool-id-attrs
dump:
request:
attributes: *dev-id-attrs
reply: *sb-pool-get-reply
-
name: sb-pool-set
doc: Set shared buffer pool instances.
attribute-set: devlink
dont-validate: [ strict ]
flags: [ admin-perm ]
do:
pre: devlink-nl-pre-doit
post: devlink-nl-post-doit
request:
attributes:
- bus-name
- dev-name
- sb-index
- sb-pool-index
- sb-pool-threshold-type
- sb-pool-size
-
name: sb-port-pool-get
doc: Get shared buffer port-pool combinations and threshold.
attribute-set: devlink
dont-validate: [ strict ]
do:
pre: devlink-nl-pre-doit-port
post: devlink-nl-post-doit
request:
value: 19
attributes: &sb-port-pool-id-attrs
- bus-name
- dev-name
- port-index
- sb-index
- sb-pool-index
reply: &sb-port-pool-get-reply
value: 21
attributes: *sb-port-pool-id-attrs
dump:
request:
attributes: *dev-id-attrs
reply: *sb-port-pool-get-reply
-
name: sb-port-pool-set
doc: Set shared buffer port-pool combinations and threshold.
attribute-set: devlink
dont-validate: [ strict ]
flags: [ admin-perm ]
do:
pre: devlink-nl-pre-doit-port
post: devlink-nl-post-doit
request:
attributes:
- bus-name
- dev-name
- port-index
- sb-index
- sb-pool-index
- sb-threshold
-
name: sb-tc-pool-bind-get
doc: Get shared buffer port-TC to pool bindings and threshold.
attribute-set: devlink
dont-validate: [ strict ]
do:
pre: devlink-nl-pre-doit-port
post: devlink-nl-post-doit
request:
value: 23
attributes: &sb-tc-pool-bind-id-attrs
- bus-name
- dev-name
- port-index
- sb-index
- sb-pool-type
- sb-tc-index
reply: &sb-tc-pool-bind-get-reply
value: 25
attributes: *sb-tc-pool-bind-id-attrs
dump:
request:
attributes: *dev-id-attrs
reply: *sb-tc-pool-bind-get-reply
-
name: sb-tc-pool-bind-set
doc: Set shared buffer port-TC to pool bindings and threshold.
attribute-set: devlink
dont-validate: [ strict ]
flags: [ admin-perm ]
do:
pre: devlink-nl-pre-doit-port
post: devlink-nl-post-doit
request:
attributes:
- bus-name
- dev-name
- port-index
- sb-index
- sb-pool-index
- sb-pool-type
- sb-tc-index
- sb-threshold
-
name: sb-occ-snapshot
doc: Take occupancy snapshot of shared buffer.
attribute-set: devlink
dont-validate: [ strict ]
flags: [ admin-perm ]
do:
pre: devlink-nl-pre-doit
post: devlink-nl-post-doit
request:
value: 27
attributes:
- bus-name
- dev-name
- sb-index
-
name: sb-occ-max-clear
doc: Clear occupancy watermarks of shared buffer.
attribute-set: devlink
dont-validate: [ strict ]
flags: [ admin-perm ]
do:
pre: devlink-nl-pre-doit
post: devlink-nl-post-doit
request:
attributes:
- bus-name
- dev-name
- sb-index
-
name: eswitch-get
doc: Get eswitch attributes.
attribute-set: devlink
dont-validate: [ strict ]
flags: [ admin-perm ]
do:
pre: devlink-nl-pre-doit
post: devlink-nl-post-doit
request:
attributes: *dev-id-attrs
reply:
value: 29
attributes: &eswitch-attrs
- bus-name
- dev-name
- eswitch-mode
- eswitch-inline-mode
- eswitch-encap-mode
-
name: eswitch-set
doc: Set eswitch attributes.
attribute-set: devlink
dont-validate: [ strict ]
flags: [ admin-perm ]
do:
pre: devlink-nl-pre-doit
post: devlink-nl-post-doit
request:
attributes: *eswitch-attrs
-
name: dpipe-table-get
doc: Get dpipe table attributes.
attribute-set: devlink
dont-validate: [ strict ]
do:
pre: devlink-nl-pre-doit
post: devlink-nl-post-doit
request:
attributes:
- bus-name
- dev-name
- dpipe-table-name
reply:
value: 31
attributes:
- bus-name
- dev-name
- dpipe-tables
-
name: dpipe-entries-get
doc: Get dpipe entries attributes.
attribute-set: devlink
dont-validate: [ strict ]
do:
pre: devlink-nl-pre-doit
post: devlink-nl-post-doit
request:
attributes:
- bus-name
- dev-name
- dpipe-table-name
reply:
attributes:
- bus-name
- dev-name
- dpipe-entries
-
name: dpipe-headers-get
doc: Get dpipe headers attributes.
attribute-set: devlink
dont-validate: [ strict ]
do:
pre: devlink-nl-pre-doit
post: devlink-nl-post-doit
request:
attributes:
- bus-name
- dev-name
reply:
attributes:
- bus-name
- dev-name
- dpipe-headers
-
name: dpipe-table-counters-set
doc: Set dpipe counter attributes.
attribute-set: devlink
dont-validate: [ strict ]
flags: [ admin-perm ]
do:
pre: devlink-nl-pre-doit
post: devlink-nl-post-doit
request:
attributes:
- bus-name
- dev-name
- dpipe-table-name
- dpipe-table-counters-enabled
-
name: resource-set
doc: Set resource attributes.
attribute-set: devlink
dont-validate: [ strict ]
flags: [ admin-perm ]
do:
pre: devlink-nl-pre-doit
post: devlink-nl-post-doit
request:
attributes:
- bus-name
- dev-name
- resource-id
- resource-size
-
name: resource-dump
doc: Get resource attributes.
attribute-set: devlink
dont-validate: [ strict ]
do:
pre: devlink-nl-pre-doit
post: devlink-nl-post-doit
request:
attributes:
- bus-name
- dev-name
reply:
value: 36
attributes:
- bus-name
- dev-name
- resource-list
-
name: reload
doc: Reload devlink.
attribute-set: devlink
dont-validate: [ strict ]
flags: [ admin-perm ]
do:
devlink: Acquire device lock during reload command Device drivers register with devlink from their probe routines (under the device lock) by acquiring the devlink instance lock and calling devl_register(). Drivers that support a devlink reload usually implement the reload_{down, up}() operations in a similar fashion to their remove and probe routines, respectively. However, while the remove and probe routines are invoked with the device lock held, the reload operations are only invoked with the devlink instance lock held. It is therefore impossible for drivers to acquire the device lock from their reload operations, as this would result in lock inversion. The motivating use case for invoking the reload operations with the device lock held is in mlxsw which needs to trigger a PCI reset as part of the reload. The driver cannot call pci_reset_function() as this function acquires the device lock. Instead, it needs to call __pci_reset_function_locked which expects the device lock to be held. To that end, adjust devlink to always acquire the device lock before the devlink instance lock when performing a reload. Do that when reload is explicitly triggered by user space by specifying the 'DEVLINK_NL_FLAG_NEED_DEV_LOCK' flag in the pre_doit and post_doit operations of the reload command. A previous patch already handled the case where reload is invoked as part of netns dismantle. Signed-off-by: Ido Schimmel <idosch@nvidia.com> Reviewed-by: Jiri Pirko <jiri@nvidia.com> Signed-off-by: Petr Machata <petrm@nvidia.com> Reviewed-by: Simon Horman <horms@kernel.org> Signed-off-by: David S. Miller <davem@davemloft.net>
2023-11-15 12:17:14 +00:00
pre: devlink-nl-pre-doit-dev-lock
post: devlink-nl-post-doit-dev-lock
request:
attributes:
- bus-name
- dev-name
- reload-action
- reload-limits
- netns-pid
- netns-fd
- netns-id
reply:
attributes:
- bus-name
- dev-name
- reload-actions-performed
-
name: param-get
doc: Get param instances.
attribute-set: devlink
dont-validate: [ strict ]
do:
pre: devlink-nl-pre-doit
post: devlink-nl-post-doit
request:
attributes: &param-id-attrs
- bus-name
- dev-name
- param-name
reply: &param-get-reply
attributes: *param-id-attrs
dump:
request:
attributes: *dev-id-attrs
reply: *param-get-reply
-
name: param-set
doc: Set param instances.
attribute-set: devlink
dont-validate: [ strict ]
flags: [ admin-perm ]
do:
pre: devlink-nl-pre-doit
post: devlink-nl-post-doit
request:
attributes:
- bus-name
- dev-name
- param-name
- param-type
# param-value-data is missing here as the type is variable
- param-value-cmode
-
name: region-get
doc: Get region instances.
attribute-set: devlink
dont-validate: [ strict ]
do:
pre: devlink-nl-pre-doit-port-optional
post: devlink-nl-post-doit
request:
value: 42
attributes: &region-id-attrs
- bus-name
- dev-name
- port-index
- region-name
reply: &region-get-reply
value: 42
attributes: *region-id-attrs
dump:
request:
attributes: *dev-id-attrs
reply: *region-get-reply
-
name: region-new
doc: Create region snapshot.
attribute-set: devlink
dont-validate: [ strict ]
flags: [ admin-perm ]
do:
pre: devlink-nl-pre-doit-port-optional
post: devlink-nl-post-doit
request:
value: 44
attributes: &region-snapshot-id-attrs
- bus-name
- dev-name
- port-index
- region-name
- region-snapshot-id
reply:
value: 44
attributes: *region-snapshot-id-attrs
-
name: region-del
doc: Delete region snapshot.
attribute-set: devlink
dont-validate: [ strict ]
flags: [ admin-perm ]
do:
pre: devlink-nl-pre-doit-port-optional
post: devlink-nl-post-doit
request:
attributes: *region-snapshot-id-attrs
-
name: region-read
doc: Read region data.
attribute-set: devlink
dont-validate: [ dump-strict ]
flags: [ admin-perm ]
dump:
request:
attributes:
- bus-name
- dev-name
- port-index
- region-name
- region-snapshot-id
- region-direct
- region-chunk-addr
- region-chunk-len
reply:
value: 46
attributes:
- bus-name
- dev-name
- port-index
- region-name
-
name: port-param-get
doc: Get port param instances.
attribute-set: devlink
dont-validate: [ strict, dump-strict ]
do:
pre: devlink-nl-pre-doit-port
post: devlink-nl-post-doit
request:
attributes: *port-id-attrs
reply:
attributes: *port-id-attrs
dump:
reply:
attributes: *port-id-attrs
-
name: port-param-set
doc: Set port param instances.
attribute-set: devlink
dont-validate: [ strict ]
flags: [ admin-perm ]
do:
pre: devlink-nl-pre-doit-port
post: devlink-nl-post-doit
request:
attributes: *port-id-attrs
-
name: info-get
doc: Get device information, like driver name, hardware and firmware versions etc.
attribute-set: devlink
dont-validate: [ strict, dump ]
do:
pre: devlink-nl-pre-doit
post: devlink-nl-post-doit
request:
value: 51
attributes: *dev-id-attrs
reply: &info-get-reply
value: 51
attributes:
- bus-name
- dev-name
- info-driver-name
- info-serial-number
- info-version-fixed
- info-version-running
- info-version-stored
dump:
reply: *info-get-reply
-
name: health-reporter-get
doc: Get health reporter instances.
attribute-set: devlink
dont-validate: [ strict ]
do:
pre: devlink-nl-pre-doit-port-optional
post: devlink-nl-post-doit
request:
attributes: &health-reporter-id-attrs
- bus-name
- dev-name
- port-index
- health-reporter-name
reply: &health-reporter-get-reply
attributes: *health-reporter-id-attrs
dump:
request:
attributes: *port-id-attrs
reply: *health-reporter-get-reply
-
name: health-reporter-set
doc: Set health reporter instances.
attribute-set: devlink
dont-validate: [ strict ]
flags: [ admin-perm ]
do:
pre: devlink-nl-pre-doit-port-optional
post: devlink-nl-post-doit
request:
attributes:
- bus-name
- dev-name
- port-index
- health-reporter-name
- health-reporter-graceful-period
- health-reporter-auto-recover
- health-reporter-auto-dump
-
name: health-reporter-recover
doc: Recover health reporter instances.
attribute-set: devlink
dont-validate: [ strict ]
flags: [ admin-perm ]
do:
pre: devlink-nl-pre-doit-port-optional
post: devlink-nl-post-doit
request:
attributes: *health-reporter-id-attrs
-
name: health-reporter-diagnose
doc: Diagnose health reporter instances.
attribute-set: devlink
dont-validate: [ strict ]
flags: [ admin-perm ]
do:
pre: devlink-nl-pre-doit-port-optional
post: devlink-nl-post-doit
request:
attributes: *health-reporter-id-attrs
-
name: health-reporter-dump-get
doc: Dump health reporter instances.
attribute-set: devlink
dont-validate: [ dump-strict ]
flags: [ admin-perm ]
dump:
request:
attributes: *health-reporter-id-attrs
reply:
value: 56
attributes:
- fmsg
-
name: health-reporter-dump-clear
doc: Clear dump of health reporter instances.
attribute-set: devlink
dont-validate: [ strict ]
flags: [ admin-perm ]
do:
pre: devlink-nl-pre-doit-port-optional
post: devlink-nl-post-doit
request:
attributes: *health-reporter-id-attrs
-
name: flash-update
doc: Flash update devlink instances.
attribute-set: devlink
dont-validate: [ strict ]
flags: [ admin-perm ]
do:
pre: devlink-nl-pre-doit
post: devlink-nl-post-doit
request:
attributes:
- bus-name
- dev-name
- flash-update-file-name
- flash-update-component
- flash-update-overwrite-mask
-
name: trap-get
doc: Get trap instances.
attribute-set: devlink
dont-validate: [ strict ]
do:
pre: devlink-nl-pre-doit
post: devlink-nl-post-doit
request:
value: 61
attributes: &trap-id-attrs
- bus-name
- dev-name
- trap-name
reply: &trap-get-reply
value: 63
attributes: *trap-id-attrs
dump:
request:
attributes: *dev-id-attrs
reply: *trap-get-reply
-
name: trap-set
doc: Set trap instances.
attribute-set: devlink
dont-validate: [ strict ]
flags: [ admin-perm ]
do:
pre: devlink-nl-pre-doit
post: devlink-nl-post-doit
request:
attributes:
- bus-name
- dev-name
- trap-name
- trap-action
-
name: trap-group-get
doc: Get trap group instances.
attribute-set: devlink
dont-validate: [ strict ]
do:
pre: devlink-nl-pre-doit
post: devlink-nl-post-doit
request:
value: 65
attributes: &trap-group-id-attrs
- bus-name
- dev-name
- trap-group-name
reply: &trap-group-get-reply
value: 67
attributes: *trap-group-id-attrs
dump:
request:
attributes: *dev-id-attrs
reply: *trap-group-get-reply
-
name: trap-group-set
doc: Set trap group instances.
attribute-set: devlink
dont-validate: [ strict ]
flags: [ admin-perm ]
do:
pre: devlink-nl-pre-doit
post: devlink-nl-post-doit
request:
attributes:
- bus-name
- dev-name
- trap-group-name
- trap-action
- trap-policer-id
-
name: trap-policer-get
doc: Get trap policer instances.
attribute-set: devlink
dont-validate: [ strict ]
do:
pre: devlink-nl-pre-doit
post: devlink-nl-post-doit
request:
value: 69
attributes: &trap-policer-id-attrs
- bus-name
- dev-name
- trap-policer-id
reply: &trap-policer-get-reply
value: 71
attributes: *trap-policer-id-attrs
dump:
request:
attributes: *dev-id-attrs
reply: *trap-policer-get-reply
-
name: trap-policer-set
doc: Get trap policer instances.
attribute-set: devlink
dont-validate: [ strict ]
flags: [ admin-perm ]
do:
pre: devlink-nl-pre-doit
post: devlink-nl-post-doit
request:
attributes:
- bus-name
- dev-name
- trap-policer-id
- trap-policer-rate
- trap-policer-burst
-
name: health-reporter-test
doc: Test health reporter instances.
attribute-set: devlink
dont-validate: [ strict ]
flags: [ admin-perm ]
do:
pre: devlink-nl-pre-doit-port-optional
post: devlink-nl-post-doit
request:
value: 73
attributes: *health-reporter-id-attrs
-
name: rate-get
doc: Get rate instances.
attribute-set: devlink
dont-validate: [ strict ]
do:
pre: devlink-nl-pre-doit
post: devlink-nl-post-doit
request:
value: 74
attributes: &rate-id-attrs
- bus-name
- dev-name
- port-index
- rate-node-name
reply: &rate-get-reply
value: 76
attributes: *rate-id-attrs
dump:
request:
attributes: *dev-id-attrs
reply: *rate-get-reply
-
name: rate-set
doc: Set rate instances.
attribute-set: devlink
dont-validate: [ strict ]
flags: [ admin-perm ]
do:
pre: devlink-nl-pre-doit
post: devlink-nl-post-doit
request:
attributes:
- bus-name
- dev-name
- rate-node-name
- rate-tx-share
- rate-tx-max
- rate-tx-priority
- rate-tx-weight
- rate-parent-node-name
-
name: rate-new
doc: Create rate instances.
attribute-set: devlink
dont-validate: [ strict ]
flags: [ admin-perm ]
do:
pre: devlink-nl-pre-doit
post: devlink-nl-post-doit
request:
attributes:
- bus-name
- dev-name
- rate-node-name
- rate-tx-share
- rate-tx-max
- rate-tx-priority
- rate-tx-weight
- rate-parent-node-name
-
name: rate-del
doc: Delete rate instances.
attribute-set: devlink
dont-validate: [ strict ]
flags: [ admin-perm ]
do:
pre: devlink-nl-pre-doit
post: devlink-nl-post-doit
request:
attributes:
- bus-name
- dev-name
- rate-node-name
-
name: linecard-get
doc: Get line card instances.
attribute-set: devlink
dont-validate: [ strict ]
do:
pre: devlink-nl-pre-doit
post: devlink-nl-post-doit
request:
value: 78
attributes: &linecard-id-attrs
- bus-name
- dev-name
- linecard-index
reply: &linecard-get-reply
value: 80
attributes: *linecard-id-attrs
dump:
request:
attributes: *dev-id-attrs
reply: *linecard-get-reply
-
name: linecard-set
doc: Set line card instances.
attribute-set: devlink
dont-validate: [ strict ]
flags: [ admin-perm ]
do:
pre: devlink-nl-pre-doit
post: devlink-nl-post-doit
request:
attributes:
- bus-name
- dev-name
- linecard-index
- linecard-type
-
name: selftests-get
doc: Get device selftest instances.
attribute-set: devlink
dont-validate: [ strict, dump ]
do:
pre: devlink-nl-pre-doit
post: devlink-nl-post-doit
request:
value: 82
attributes: *dev-id-attrs
reply: &selftests-get-reply
value: 82
attributes: *dev-id-attrs
dump:
reply: *selftests-get-reply
-
name: selftests-run
doc: Run device selftest instances.
attribute-set: devlink
dont-validate: [ strict ]
flags: [ admin-perm ]
do:
pre: devlink-nl-pre-doit
post: devlink-nl-post-doit
request:
attributes:
- bus-name
- dev-name
- selftests
-
name: notify-filter-set
doc: Set notification messages socket filter.
attribute-set: devlink
do:
request:
attributes:
- bus-name
- dev-name
- port-index