162306a36Sopenharmony_ci.. SPDX-License-Identifier: GPL-2.0
262306a36Sopenharmony_ci
362306a36Sopenharmony_ci=========================
462306a36Sopenharmony_cinetdevsim devlink support
562306a36Sopenharmony_ci=========================
662306a36Sopenharmony_ci
762306a36Sopenharmony_ciThis document describes the ``devlink`` features supported by the
862306a36Sopenharmony_ci``netdevsim`` device driver.
962306a36Sopenharmony_ci
1062306a36Sopenharmony_ciParameters
1162306a36Sopenharmony_ci==========
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ci.. list-table:: Generic parameters implemented
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ci   * - Name
1662306a36Sopenharmony_ci     - Mode
1762306a36Sopenharmony_ci   * - ``max_macs``
1862306a36Sopenharmony_ci     - driverinit
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ciThe ``netdevsim`` driver also implements the following driver-specific
2162306a36Sopenharmony_ciparameters.
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_ci.. list-table:: Driver-specific parameters implemented
2462306a36Sopenharmony_ci   :widths: 5 5 5 85
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_ci   * - Name
2762306a36Sopenharmony_ci     - Type
2862306a36Sopenharmony_ci     - Mode
2962306a36Sopenharmony_ci     - Description
3062306a36Sopenharmony_ci   * - ``test1``
3162306a36Sopenharmony_ci     - Boolean
3262306a36Sopenharmony_ci     - driverinit
3362306a36Sopenharmony_ci     - Test parameter used to show how a driver-specific devlink parameter
3462306a36Sopenharmony_ci       can be implemented.
3562306a36Sopenharmony_ci
3662306a36Sopenharmony_ciThe ``netdevsim`` driver supports reloading via ``DEVLINK_CMD_RELOAD``
3762306a36Sopenharmony_ci
3862306a36Sopenharmony_ciRegions
3962306a36Sopenharmony_ci=======
4062306a36Sopenharmony_ci
4162306a36Sopenharmony_ciThe ``netdevsim`` driver exposes a ``dummy`` region as an example of how the
4262306a36Sopenharmony_cidevlink-region interfaces work. A snapshot is taken whenever the
4362306a36Sopenharmony_ci``take_snapshot`` debugfs file is written to.
4462306a36Sopenharmony_ci
4562306a36Sopenharmony_ciResources
4662306a36Sopenharmony_ci=========
4762306a36Sopenharmony_ci
4862306a36Sopenharmony_ciThe ``netdevsim`` driver exposes resources to control the number of FIB
4962306a36Sopenharmony_cientries, FIB rule entries and nexthops that the driver will allow.
5062306a36Sopenharmony_ci
5162306a36Sopenharmony_ci.. code:: shell
5262306a36Sopenharmony_ci
5362306a36Sopenharmony_ci    $ devlink resource set netdevsim/netdevsim0 path /IPv4/fib size 96
5462306a36Sopenharmony_ci    $ devlink resource set netdevsim/netdevsim0 path /IPv4/fib-rules size 16
5562306a36Sopenharmony_ci    $ devlink resource set netdevsim/netdevsim0 path /IPv6/fib size 64
5662306a36Sopenharmony_ci    $ devlink resource set netdevsim/netdevsim0 path /IPv6/fib-rules size 16
5762306a36Sopenharmony_ci    $ devlink resource set netdevsim/netdevsim0 path /nexthops size 16
5862306a36Sopenharmony_ci    $ devlink dev reload netdevsim/netdevsim0
5962306a36Sopenharmony_ci
6062306a36Sopenharmony_ciRate objects
6162306a36Sopenharmony_ci============
6262306a36Sopenharmony_ci
6362306a36Sopenharmony_ciThe ``netdevsim`` driver supports rate objects management, which includes:
6462306a36Sopenharmony_ci
6562306a36Sopenharmony_ci- registerging/unregistering leaf rate objects per VF devlink port;
6662306a36Sopenharmony_ci- creation/deletion node rate objects;
6762306a36Sopenharmony_ci- setting tx_share and tx_max rate values for any rate object type;
6862306a36Sopenharmony_ci- setting parent node for any rate object type.
6962306a36Sopenharmony_ci
7062306a36Sopenharmony_ciRate nodes and their parameters are exposed in ``netdevsim`` debugfs in RO mode.
7162306a36Sopenharmony_ciFor example created rate node with name ``some_group``:
7262306a36Sopenharmony_ci
7362306a36Sopenharmony_ci.. code:: shell
7462306a36Sopenharmony_ci
7562306a36Sopenharmony_ci    $ ls /sys/kernel/debug/netdevsim/netdevsim0/rate_groups/some_group
7662306a36Sopenharmony_ci    rate_parent  tx_max  tx_share
7762306a36Sopenharmony_ci
7862306a36Sopenharmony_ciSame parameters are exposed for leaf objects in corresponding ports directories.
7962306a36Sopenharmony_ciFor ex.:
8062306a36Sopenharmony_ci
8162306a36Sopenharmony_ci.. code:: shell
8262306a36Sopenharmony_ci
8362306a36Sopenharmony_ci    $ ls /sys/kernel/debug/netdevsim/netdevsim0/ports/1
8462306a36Sopenharmony_ci    dev  ethtool  rate_parent  tx_max  tx_share
8562306a36Sopenharmony_ci
8662306a36Sopenharmony_ciDriver-specific Traps
8762306a36Sopenharmony_ci=====================
8862306a36Sopenharmony_ci
8962306a36Sopenharmony_ci.. list-table:: List of Driver-specific Traps Registered by ``netdevsim``
9062306a36Sopenharmony_ci   :widths: 5 5 90
9162306a36Sopenharmony_ci
9262306a36Sopenharmony_ci   * - Name
9362306a36Sopenharmony_ci     - Type
9462306a36Sopenharmony_ci     - Description
9562306a36Sopenharmony_ci   * - ``fid_miss``
9662306a36Sopenharmony_ci     - ``exception``
9762306a36Sopenharmony_ci     - When a packet enters the device it is classified to a filtering
9862306a36Sopenharmony_ci       identifier (FID) based on the ingress port and VLAN. This trap is used
9962306a36Sopenharmony_ci       to trap packets for which a FID could not be found
100