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