104e4272cSJacob Keller.. SPDX-License-Identifier: GPL-2.0
204e4272cSJacob Keller
304e4272cSJacob Keller=========================
404e4272cSJacob Kellernetdevsim devlink support
504e4272cSJacob Keller=========================
604e4272cSJacob Keller
704e4272cSJacob KellerThis document describes the ``devlink`` features supported by the
804e4272cSJacob Keller``netdevsim`` device driver.
904e4272cSJacob Keller
1004e4272cSJacob KellerParameters
1104e4272cSJacob Keller==========
1204e4272cSJacob Keller
1304e4272cSJacob Keller.. list-table:: Generic parameters implemented
1404e4272cSJacob Keller
1504e4272cSJacob Keller   * - Name
1604e4272cSJacob Keller     - Mode
1704e4272cSJacob Keller   * - ``max_macs``
1804e4272cSJacob Keller     - driverinit
1904e4272cSJacob Keller
2004e4272cSJacob KellerThe ``netdevsim`` driver also implements the following driver-specific
2104e4272cSJacob Kellerparameters.
2204e4272cSJacob Keller
2304e4272cSJacob Keller.. list-table:: Driver-specific parameters implemented
2404e4272cSJacob Keller   :widths: 5 5 5 85
2504e4272cSJacob Keller
2604e4272cSJacob Keller   * - Name
2704e4272cSJacob Keller     - Type
2804e4272cSJacob Keller     - Mode
2904e4272cSJacob Keller     - Description
3004e4272cSJacob Keller   * - ``test1``
3104e4272cSJacob Keller     - Boolean
3204e4272cSJacob Keller     - driverinit
3304e4272cSJacob Keller     - Test parameter used to show how a driver-specific devlink parameter
3404e4272cSJacob Keller       can be implemented.
3504e4272cSJacob Keller
3604e4272cSJacob KellerThe ``netdevsim`` driver supports reloading via ``DEVLINK_CMD_RELOAD``
3704e4272cSJacob Keller
3804e4272cSJacob KellerRegions
3904e4272cSJacob Keller=======
4004e4272cSJacob Keller
4104e4272cSJacob KellerThe ``netdevsim`` driver exposes a ``dummy`` region as an example of how the
4204e4272cSJacob Kellerdevlink-region interfaces work. A snapshot is taken whenever the
4304e4272cSJacob Keller``take_snapshot`` debugfs file is written to.
4404e4272cSJacob Keller
4504e4272cSJacob KellerResources
4604e4272cSJacob Keller=========
4704e4272cSJacob Keller
4804e4272cSJacob KellerThe ``netdevsim`` driver exposes resources to control the number of FIB
4935266255SIdo Schimmelentries, FIB rule entries and nexthops that the driver will allow.
5004e4272cSJacob Keller
5104e4272cSJacob Keller.. code:: shell
5204e4272cSJacob Keller
5304e4272cSJacob Keller    $ devlink resource set netdevsim/netdevsim0 path /IPv4/fib size 96
5404e4272cSJacob Keller    $ devlink resource set netdevsim/netdevsim0 path /IPv4/fib-rules size 16
5504e4272cSJacob Keller    $ devlink resource set netdevsim/netdevsim0 path /IPv6/fib size 64
5604e4272cSJacob Keller    $ devlink resource set netdevsim/netdevsim0 path /IPv6/fib-rules size 16
5735266255SIdo Schimmel    $ devlink resource set netdevsim/netdevsim0 path /nexthops size 16
5804e4272cSJacob Keller    $ devlink dev reload netdevsim/netdevsim0
5904e4272cSJacob Keller
60b62767e7SDmytro LinkinRate objects
61b62767e7SDmytro Linkin============
62b62767e7SDmytro Linkin
63b62767e7SDmytro LinkinThe ``netdevsim`` driver supports rate objects management, which includes:
64b62767e7SDmytro Linkin
65b62767e7SDmytro Linkin- registerging/unregistering leaf rate objects per VF devlink port;
66b62767e7SDmytro Linkin- creation/deletion node rate objects;
67b62767e7SDmytro Linkin- setting tx_share and tx_max rate values for any rate object type;
68b62767e7SDmytro Linkin- setting parent node for any rate object type.
69b62767e7SDmytro Linkin
70404a5ad7SRandy DunlapRate nodes and their parameters are exposed in ``netdevsim`` debugfs in RO mode.
71b62767e7SDmytro LinkinFor example created rate node with name ``some_group``:
72b62767e7SDmytro Linkin
73b62767e7SDmytro Linkin.. code:: shell
74b62767e7SDmytro Linkin
75b62767e7SDmytro Linkin    $ ls /sys/kernel/debug/netdevsim/netdevsim0/rate_groups/some_group
76b62767e7SDmytro Linkin    rate_parent  tx_max  tx_share
77b62767e7SDmytro Linkin
78b62767e7SDmytro LinkinSame parameters are exposed for leaf objects in corresponding ports directories.
79b62767e7SDmytro LinkinFor ex.:
80b62767e7SDmytro Linkin
81b62767e7SDmytro Linkin.. code:: shell
82b62767e7SDmytro Linkin
83b62767e7SDmytro Linkin    $ ls /sys/kernel/debug/netdevsim/netdevsim0/ports/1
84b62767e7SDmytro Linkin    dev  ethtool  rate_parent  tx_max  tx_share
85b62767e7SDmytro Linkin
8604e4272cSJacob KellerDriver-specific Traps
8704e4272cSJacob Keller=====================
8804e4272cSJacob Keller
8904e4272cSJacob Keller.. list-table:: List of Driver-specific Traps Registered by ``netdevsim``
9004e4272cSJacob Keller   :widths: 5 5 90
9104e4272cSJacob Keller
9204e4272cSJacob Keller   * - Name
9304e4272cSJacob Keller     - Type
9404e4272cSJacob Keller     - Description
9504e4272cSJacob Keller   * - ``fid_miss``
9604e4272cSJacob Keller     - ``exception``
9704e4272cSJacob Keller     - When a packet enters the device it is classified to a filtering
98*a266ef69SRandy Dunlap       identifier (FID) based on the ingress port and VLAN. This trap is used
9904e4272cSJacob Keller       to trap packets for which a FID could not be found
100