GNU Linux-libre 6.9-gnu
[releases.git] / Documentation / networking / devlink / netdevsim.rst
1 .. SPDX-License-Identifier: GPL-2.0
2
3 =========================
4 netdevsim devlink support
5 =========================
6
7 This document describes the ``devlink`` features supported by the
8 ``netdevsim`` device driver.
9
10 Parameters
11 ==========
12
13 .. list-table:: Generic parameters implemented
14
15    * - Name
16      - Mode
17    * - ``max_macs``
18      - driverinit
19
20 The ``netdevsim`` driver also implements the following driver-specific
21 parameters.
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
36 The ``netdevsim`` driver supports reloading via ``DEVLINK_CMD_RELOAD``
37
38 Regions
39 =======
40
41 The ``netdevsim`` driver exposes a ``dummy`` region as an example of how the
42 devlink-region interfaces work. A snapshot is taken whenever the
43 ``take_snapshot`` debugfs file is written to.
44
45 Resources
46 =========
47
48 The ``netdevsim`` driver exposes resources to control the number of FIB
49 entries, 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
60 Rate objects
61 ============
62
63 The ``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
70 Rate nodes and their parameters are exposed in ``netdevsim`` debugfs in RO mode.
71 For 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
78 Same parameters are exposed for leaf objects in corresponding ports directories.
79 For 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
86 Driver-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        identifier (FID) based on the ingress port and VLAN. This trap is used
99        to trap packets for which a FID could not be found