1.. SPDX-License-Identifier: GPL-2.0
2
3=========================
4netdevsim devlink support
5=========================
6
7This document describes the ``devlink`` features supported by the
8``netdevsim`` device driver.
9
10Parameters
11==========
12
13.. list-table:: Generic parameters implemented
14
15   * - Name
16     - Mode
17   * - ``max_macs``
18     - driverinit
19
20The ``netdevsim`` driver also implements the following driver-specific
21parameters.
22
23.. list-table:: Driver-specific parameters implemented
24   :widths: 5 5 5 85
25
26   * - Name
27     - Type
28     - Mode
29     - Description
30   * - ``test1``
31     - Boolean
32     - driverinit
33     - Test parameter used to show how a driver-specific devlink parameter
34       can be implemented.
35
36The ``netdevsim`` driver supports reloading via ``DEVLINK_CMD_RELOAD``
37
38Regions
39=======
40
41The ``netdevsim`` driver exposes a ``dummy`` region as an example of how the
42devlink-region interfaces work. A snapshot is taken whenever the
43``take_snapshot`` debugfs file is written to.
44
45Resources
46=========
47
48The ``netdevsim`` driver exposes resources to control the number of FIB
49entries, FIB rule entries and nexthops that the driver will allow.
50
51.. code:: shell
52
53    $ devlink resource set netdevsim/netdevsim0 path /IPv4/fib size 96
54    $ devlink resource set netdevsim/netdevsim0 path /IPv4/fib-rules size 16
55    $ devlink resource set netdevsim/netdevsim0 path /IPv6/fib size 64
56    $ devlink resource set netdevsim/netdevsim0 path /IPv6/fib-rules size 16
57    $ devlink resource set netdevsim/netdevsim0 path /nexthops size 16
58    $ devlink dev reload netdevsim/netdevsim0
59
60Rate objects
61============
62
63The ``netdevsim`` driver supports rate objects management, which includes:
64
65- registerging/unregistering leaf rate objects per VF devlink port;
66- creation/deletion node rate objects;
67- setting tx_share and tx_max rate values for any rate object type;
68- setting parent node for any rate object type.
69
70Rate nodes and their parameters are exposed in ``netdevsim`` debugfs in RO mode.
71For example created rate node with name ``some_group``:
72
73.. code:: shell
74
75    $ ls /sys/kernel/debug/netdevsim/netdevsim0/rate_groups/some_group
76    rate_parent  tx_max  tx_share
77
78Same parameters are exposed for leaf objects in corresponding ports directories.
79For ex.:
80
81.. code:: shell
82
83    $ ls /sys/kernel/debug/netdevsim/netdevsim0/ports/1
84    dev  ethtool  rate_parent  tx_max  tx_share
85
86Driver-specific Traps
87=====================
88
89.. list-table:: List of Driver-specific Traps Registered by ``netdevsim``
90   :widths: 5 5 90
91
92   * - Name
93     - Type
94     - Description
95   * - ``fid_miss``
96     - ``exception``
97     - When a packet enters the device it is classified to a filtering
98       indentifier (FID) based on the ingress port and VLAN. This trap is used
99       to trap packets for which a FID could not be found
100