xref: /linux/Documentation/networking/devlink/ixgbe.rst (revision e0c0ab04f6785abaa71b9b8dc252cb1a2072c225)
1.. SPDX-License-Identifier: GPL-2.0
2
3=====================
4ixgbe devlink support
5=====================
6
7This document describes the devlink features implemented by the ``ixgbe``
8device driver.
9
10Info versions
11=============
12
13Any of the versions dealing with the security presented by ``devlink-info``
14is purely informational. Devlink does not use a secure channel to communicate
15with the device.
16
17The ``ixgbe`` driver reports the following versions
18
19.. list-table:: devlink info versions implemented
20    :widths: 5 5 5 90
21
22    * - Name
23      - Type
24      - Example
25      - Description
26    * - ``board.id``
27      - fixed
28      - H49289-000
29      - The Product Board Assembly (PBA) identifier of the board.
30    * - ``fw.undi``
31      - running
32      - 1.1937.0
33      - Version of the Option ROM containing the UEFI driver. The version is
34        reported in ``major.minor.patch`` format. The major version is
35        incremented whenever a major breaking change occurs, or when the
36        minor version would overflow. The minor version is incremented for
37        non-breaking changes and reset to 1 when the major version is
38        incremented. The patch version is normally 0 but is incremented when
39        a fix is delivered as a patch against an older base Option ROM.
40    * - ``fw.undi.srev``
41      - running
42      - 4
43      - Number indicating the security revision of the Option ROM.
44    * - ``fw.bundle_id``
45      - running
46      - 0x80000d0d
47      - Unique identifier of the firmware image file that was loaded onto
48        the device. Also referred to as the EETRACK identifier of the NVM.
49    * - ``fw.mgmt.api``
50      - running
51      - 1.5.1
52      - 3-digit version number (major.minor.patch) of the API exported over
53        the AdminQ by the management firmware. Used by the driver to
54        identify what commands are supported. Historical versions of the
55        kernel only displayed a 2-digit version number (major.minor).
56    * - ``fw.mgmt.build``
57      - running
58      - 0x305d955f
59      - Unique identifier of the source for the management firmware.
60    * - ``fw.mgmt.srev``
61      - running
62      - 3
63      - Number indicating the security revision of the firmware.
64    * - ``fw.psid.api``
65      - running
66      - 0.80
67      - Version defining the format of the flash contents.
68    * - ``fw.netlist``
69      - running
70      - 1.1.2000-6.7.0
71      - The version of the netlist module. This module defines the device's
72        Ethernet capabilities and default settings, and is used by the
73        management firmware as part of managing link and device
74        connectivity.
75    * - ``fw.netlist.build``
76      - running
77      - 0xee16ced7
78      - The first 4 bytes of the hash of the netlist module contents.
79
80Flash Update
81============
82
83The ``ixgbe`` driver implements support for flash update using the
84``devlink-flash`` interface. It supports updating the device flash using a
85combined flash image that contains the ``fw.mgmt``, ``fw.undi``, and
86``fw.netlist`` components.
87
88.. list-table:: List of supported overwrite modes
89   :widths: 5 95
90
91   * - Bits
92     - Behavior
93   * - ``DEVLINK_FLASH_OVERWRITE_SETTINGS``
94     - Do not preserve settings stored in the flash components being
95       updated. This includes overwriting the port configuration that
96       determines the number of physical functions the device will
97       initialize with.
98   * - ``DEVLINK_FLASH_OVERWRITE_SETTINGS`` and ``DEVLINK_FLASH_OVERWRITE_IDENTIFIERS``
99     - Do not preserve either settings or identifiers. Overwrite everything
100       in the flash with the contents from the provided image, without
101       performing any preservation. This includes overwriting device
102       identifying fields such as the MAC address, Vital product Data (VPD) area,
103       and device serial number. It is expected that this combination be used with an
104       image customized for the specific device.
105
106Reload
107======
108
109The ``ixgbe`` driver supports activating new firmware after a flash update
110using ``DEVLINK_CMD_RELOAD`` with the ``DEVLINK_RELOAD_ACTION_FW_ACTIVATE``
111action.
112
113.. code:: shell
114
115    $ devlink dev reload pci/0000:01:00.0 reload action fw_activate
116
117The new firmware is activated by issuing a device specific Embedded
118Management Processor reset which requests the device to reset and reload the
119EMP firmware image.
120
121The driver does not currently support reloading the driver via
122``DEVLINK_RELOAD_ACTION_DRIVER_REINIT``.
123
124Regions
125=======
126
127The ``ixgbe`` driver implements the following regions for accessing internal
128device data.
129
130.. list-table:: regions implemented
131    :widths: 15 85
132
133    * - Name
134      - Description
135    * - ``nvm-flash``
136      - The contents of the entire flash chip, sometimes referred to as
137        the device's Non Volatile Memory.
138    * - ``shadow-ram``
139      - The contents of the Shadow RAM, which is loaded from the beginning
140        of the flash. Although the contents are primarily from the flash,
141        this area also contains data generated during device boot which is
142        not stored in flash.
143    * - ``device-caps``
144      - The contents of the device firmware's capabilities buffer. Useful to
145        determine the current state and configuration of the device.
146
147Both the ``nvm-flash`` and ``shadow-ram`` regions can be accessed without a
148snapshot. The ``device-caps`` region requires a snapshot as the contents are
149sent by firmware and can't be split into separate reads.
150
151Users can request an immediate capture of a snapshot for all three regions
152via the ``DEVLINK_CMD_REGION_NEW`` command.
153
154.. code:: shell
155
156    $ devlink region show
157    pci/0000:01:00.0/nvm-flash: size 10485760 snapshot [] max 1
158    pci/0000:01:00.0/device-caps: size 4096 snapshot [] max 10
159
160    $ devlink region new pci/0000:01:00.0/nvm-flash snapshot 1
161
162    $ devlink region dump pci/0000:01:00.0/nvm-flash snapshot 1
163    0000000000000000 0014 95dc 0014 9514 0035 1670 0034 db30
164    0000000000000010 0000 0000 ffff ff04 0029 8c00 0028 8cc8
165    0000000000000020 0016 0bb8 0016 1720 0000 0000 c00f 3ffc
166    0000000000000030 bada cce5 bada cce5 bada cce5 bada cce5
167
168    $ devlink region read pci/0000:01:00.0/nvm-flash snapshot 1 address 0 length 16
169    0000000000000000 0014 95dc 0014 9514 0035 1670 0034 db30
170
171    $ devlink region delete pci/0000:01:00.0/device-caps snapshot 1
172