1a1af8e9aSJacob Keller.. SPDX-License-Identifier: GPL-2.0 2a1af8e9aSJacob Keller 3a1af8e9aSJacob Keller================ 4a1af8e9aSJacob KellerDevlink Resource 5a1af8e9aSJacob Keller================ 6a1af8e9aSJacob Keller 7a1af8e9aSJacob Keller``devlink`` provides the ability for drivers to register resources, which 8a1af8e9aSJacob Kellercan allow administrators to see the device restrictions for a given 9a1af8e9aSJacob Kellerresource, as well as how much of the given resource is currently 10a1af8e9aSJacob Kellerin use. Additionally, these resources can optionally have configurable size. 11a1af8e9aSJacob KellerThis could enable the administrator to limit the number of resources that 12a1af8e9aSJacob Kellerare used. 13a1af8e9aSJacob Keller 14a1af8e9aSJacob KellerFor example, the ``netdevsim`` driver enables ``/IPv4/fib`` and 15a1af8e9aSJacob Keller``/IPv4/fib-rules`` as resources to limit the number of IPv4 FIB entries and 16a1af8e9aSJacob Kellerrules for a given device. 17a1af8e9aSJacob Keller 18a1af8e9aSJacob KellerResource Ids 19a1af8e9aSJacob Keller============ 20a1af8e9aSJacob Keller 21a1af8e9aSJacob KellerEach resource is represented by an id, and contains information about its 22a1af8e9aSJacob Kellercurrent size and related sub resources. To access a sub resource, you 23a1af8e9aSJacob Kellerspecify the path of the resource. For example ``/IPv4/fib`` is the id for 24a1af8e9aSJacob Kellerthe ``fib`` sub-resource under the ``IPv4`` resource. 25a1af8e9aSJacob Keller 26*321f7ab0SDanielle RatsonGeneric Resources 27*321f7ab0SDanielle Ratson================= 28*321f7ab0SDanielle Ratson 29*321f7ab0SDanielle RatsonGeneric resources are used to describe resources that can be shared by multiple 30*321f7ab0SDanielle Ratsondevice drivers and their description must be added to the following table: 31*321f7ab0SDanielle Ratson 32*321f7ab0SDanielle Ratson.. list-table:: List of Generic Resources 33*321f7ab0SDanielle Ratson :widths: 10 90 34*321f7ab0SDanielle Ratson 35*321f7ab0SDanielle Ratson * - Name 36*321f7ab0SDanielle Ratson - Description 37*321f7ab0SDanielle Ratson * - ``physical_ports`` 38*321f7ab0SDanielle Ratson - A limited capacity of physical ports that the switch ASIC can support 39*321f7ab0SDanielle Ratson 40a1af8e9aSJacob Kellerexample usage 41a1af8e9aSJacob Keller------------- 42a1af8e9aSJacob Keller 43a1af8e9aSJacob KellerThe resources exposed by the driver can be observed, for example: 44a1af8e9aSJacob Keller 45a1af8e9aSJacob Keller.. code:: shell 46a1af8e9aSJacob Keller 47a1af8e9aSJacob Keller $devlink resource show pci/0000:03:00.0 48a1af8e9aSJacob Keller pci/0000:03:00.0: 49a1af8e9aSJacob Keller name kvd size 245760 unit entry 50a1af8e9aSJacob Keller resources: 51a1af8e9aSJacob Keller name linear size 98304 occ 0 unit entry size_min 0 size_max 147456 size_gran 128 52a1af8e9aSJacob Keller name hash_double size 60416 unit entry size_min 32768 size_max 180224 size_gran 128 53a1af8e9aSJacob Keller name hash_single size 87040 unit entry size_min 65536 size_max 212992 size_gran 128 54a1af8e9aSJacob Keller 55a1af8e9aSJacob KellerSome resource's size can be changed. Examples: 56a1af8e9aSJacob Keller 57a1af8e9aSJacob Keller.. code:: shell 58a1af8e9aSJacob Keller 59a1af8e9aSJacob Keller $devlink resource set pci/0000:03:00.0 path /kvd/hash_single size 73088 60a1af8e9aSJacob Keller $devlink resource set pci/0000:03:00.0 path /kvd/hash_double size 74368 61a1af8e9aSJacob Keller 62a1af8e9aSJacob KellerThe changes do not apply immediately, this can be validated by the 'size_new' 63a1af8e9aSJacob Kellerattribute, which represents the pending change in size. For example: 64a1af8e9aSJacob Keller 65a1af8e9aSJacob Keller.. code:: shell 66a1af8e9aSJacob Keller 67a1af8e9aSJacob Keller $devlink resource show pci/0000:03:00.0 68a1af8e9aSJacob Keller pci/0000:03:00.0: 69a1af8e9aSJacob Keller name kvd size 245760 unit entry size_valid false 70a1af8e9aSJacob Keller resources: 71a1af8e9aSJacob Keller name linear size 98304 size_new 147456 occ 0 unit entry size_min 0 size_max 147456 size_gran 128 72a1af8e9aSJacob Keller name hash_double size 60416 unit entry size_min 32768 size_max 180224 size_gran 128 73a1af8e9aSJacob Keller name hash_single size 87040 unit entry size_min 65536 size_max 212992 size_gran 128 74a1af8e9aSJacob Keller 75a1af8e9aSJacob KellerNote that changes in resource size may require a device reload to properly 76a1af8e9aSJacob Kellertake effect. 77