| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- Linux Devlink Documentation
- ===========================
- devlink is an API to expose device information and resources not directly
- related to any device class, such as chip-wide/switch-ASIC-wide configuration.
- Locking
- -------
- Driver facing APIs are currently transitioning to allow more explicit
- locking. Drivers can use the existing ``devlink_*`` set of APIs, or
- new APIs prefixed by ``devl_*``. The older APIs handle all the locking
- in devlink core, but don't allow registration of most sub-objects once
- the main devlink object is itself registered. The newer ``devl_*`` APIs assume
- the devlink instance lock is already held. Drivers can take the instance
- lock by calling ``devl_lock()``. It is also held all callbacks of devlink
- netlink commands.
- Drivers are encouraged to use the devlink instance lock for their own needs.
- Drivers need to be cautious when taking devlink instance lock and
- taking RTNL lock at the same time. Devlink instance lock needs to be taken
- first, only after that RTNL lock could be taken.
- Nested instances
- ----------------
- Some objects, like linecards or port functions, could have another
- devlink instances created underneath. In that case, drivers should make
- sure to respect following rules:
- - Lock ordering should be maintained. If driver needs to take instance
- lock of both nested and parent instances at the same time, devlink
- instance lock of the parent instance should be taken first, only then
- instance lock of the nested instance could be taken.
- - Driver should use object-specific helpers to setup the
- nested relationship:
- - ``devl_nested_devlink_set()`` - called to setup devlink -> nested
- devlink relationship (could be user for multiple nested instances.
- - ``devl_port_fn_devlink_set()`` - called to setup port function ->
- nested devlink relationship.
- - ``devlink_linecard_nested_dl_set()`` - called to setup linecard ->
- nested devlink relationship.
- The nested devlink info is exposed to the userspace over object-specific
- attributes of devlink netlink.
- Interface documentation
- -----------------------
- The following pages describe various interfaces available through devlink in
- general.
- .. toctree::
- :maxdepth: 1
- devlink-dpipe
- devlink-eswitch-attr
- devlink-flash
- devlink-health
- devlink-info
- devlink-linecard
- devlink-params
- devlink-port
- devlink-region
- devlink-reload
- devlink-resource
- devlink-selftests
- devlink-trap
- Driver-specific documentation
- -----------------------------
- Each driver that implements ``devlink`` is expected to document what
- parameters, info versions, and other features it supports.
- .. toctree::
- :maxdepth: 1
- am65-nuss-cpsw-switch
- bnxt
- etas_es58x
- hns3
- i40e
- ice
- ionic
- iosm
- ixgbe
- kvaser_pciefd
- kvaser_usb
- mlx4
- mlx5
- mlxsw
- mv88e6xxx
- netdevsim
- nfp
- octeontx2
- prestera
- qed
- sfc
- stmmac
- ti-cpsw-switch
- zl3073x
|