:sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget3/translations/zh_CN/networking/devlink/devlink-infomodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget3/translations/zh_TW/networking/devlink/devlink-infomodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget3/translations/it_IT/networking/devlink/devlink-infomodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget3/translations/ja_JP/networking/devlink/devlink-infomodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget3/translations/ko_KR/networking/devlink/devlink-infomodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget3/translations/sp_SP/networking/devlink/devlink-infomodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhcomment)}(h7SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)h]h7SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)}hhsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1hhhhhhM/var/lib/git/docbuild/linux/Documentation/networking/devlink/devlink-info.rsthKubhsection)}(hhh](htitle)}(h Devlink Infoh]h Devlink Info}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh paragraph)}(hThe ``devlink-info`` mechanism enables device drivers to report device (hardware and firmware) information in a standard, extensible fashion.h](hThe }(hhhhhNhNubhliteral)}(h``devlink-info``h]h devlink-info}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhubhy mechanism enables device drivers to report device (hardware and firmware) information in a standard, extensible fashion.}(hhhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hAThe original motivation for the ``devlink-info`` API was twofold:h](h The original motivation for the }(hhhhhNhNubh)}(h``devlink-info``h]h devlink-info}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhubh API was twofold:}(hhhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK hhhhubh block_quote)}(hX,- making it possible to automate device and firmware management in a fleet of machines in a vendor-independent fashion (see also :ref:`Documentation/networking/devlink/devlink-flash.rst `); - name the per component FW versions (as opposed to the crowded ethtool version string). h]h bullet_list)}(hhh](h list_item)}(hmaking it possible to automate device and firmware management in a fleet of machines in a vendor-independent fashion (see also :ref:`Documentation/networking/devlink/devlink-flash.rst `);h]h)}(hmaking it possible to automate device and firmware management in a fleet of machines in a vendor-independent fashion (see also :ref:`Documentation/networking/devlink/devlink-flash.rst `);h](hmaking it possible to automate device and firmware management in a fleet of machines in a vendor-independent fashion (see also }(hjhhhNhNubh)}(hI:ref:`Documentation/networking/devlink/devlink-flash.rst `h]hinline)}(hj(h]h2Documentation/networking/devlink/devlink-flash.rst}(hj,hhhNhNubah}(h]h ](xrefstdstd-refeh"]h$]h&]uh1j*hj&ubah}(h]h ]h"]h$]h&]refdocnetworking/devlink/devlink-info refdomainj7reftyperef refexplicitrefwarn reftarget devlink_flashuh1hhhhK hjubh);}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK hjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hWname the per component FW versions (as opposed to the crowded ethtool version string). h]h)}(hVname the per component FW versions (as opposed to the crowded ethtool version string).h]hVname the per component FW versions (as opposed to the crowded ethtool version string).}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj[ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]bullet-uh1jhhhK hjubah}(h]h ]h"]h$]h&]uh1j hhhK hhhhubh)}(h``devlink-info`` supports reporting multiple types of objects. Reporting driver versions is generally discouraged - here, and via any other Linux API.h](h)}(h``devlink-info``h]h devlink-info}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh supports reporting multiple types of objects. Reporting driver versions is generally discouraged - here, and via any other Linux API.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhhhhubhtable)}(hhh](h)}(hList of top level info objectsh]hList of top level info objects}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubhtgroup)}(hhh](hcolspec)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1jhjubj)}(hhh]h}(h]h ]h"]h$]h&]jK_uh1jhjubhtbody)}(hhh](hrow)}(hhh](hentry)}(hhh]h)}(hNameh]hName}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h Descriptionh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(h ``driver``h]h)}(hjh]hdriver}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh]h)}(hGName of the currently used device driver, also available through sysfs.h]hGName of the currently used device driver, also available through sysfs.}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj-ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(h``serial_number``h]h)}(hjRh]h serial_number}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1hhjPubah}(h]h ]h"]h$]h&]uh1hhhhKhjMubah}(h]h ]h"]h$]h&]uh1jhjJubj)}(hhh](h)}(hSerial number of the device.h]hSerial number of the device.}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjmubh)}(hThis is usually the serial number of the ASIC, also often available in PCI config space of the device in the *Device Serial Number* capability.h](hmThis is usually the serial number of the ASIC, also often available in PCI config space of the device in the }(hj~hhhNhNubhemphasis)}(h*Device Serial Number*h]hDevice Serial Number}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj~ubh capability.}(hj~hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK hjmubh)}(hX{The serial number should be unique per physical device. Sometimes the serial number of the device is only 48 bits long (the length of the Ethernet MAC address), and since PCI DSN is 64 bits long devices pad or encode additional information into the serial number. One example is adding port ID or PCI interface ID in the extra two bytes. Drivers should make sure to strip or normalize any such padding or interface ID, and report only the part of the serial number which uniquely identifies the hardware. In other words serial number reported for two ports of the same device or on two hosts of a multi-host device should be identical.h]hX{The serial number should be unique per physical device. Sometimes the serial number of the device is only 48 bits long (the length of the Ethernet MAC address), and since PCI DSN is 64 bits long devices pad or encode additional information into the serial number. One example is adding port ID or PCI interface ID in the extra two bytes. Drivers should make sure to strip or normalize any such padding or interface ID, and report only the part of the serial number which uniquely identifies the hardware. In other words serial number reported for two ports of the same device or on two hosts of a multi-host device should be identical.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK$hjmubeh}(h]h ]h"]h$]h&]uh1jhjJubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(h``board.serial_number``h]h)}(hjh]hboard.serial_number}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1hhhhK/hjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](h)}(h"Board serial number of the device.h]h"Board serial number of the device.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK0hjubh)}(h\This is usually the serial number of the board, often available in PCI *Vital Product Data*.h](hGThis is usually the serial number of the board, often available in PCI }(hjhhhNhNubj)}(h*Vital Product Data*h]hVital Product Data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK2hjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(h ``fixed``h]h)}(hj"h]hfixed}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj ubah}(h]h ]h"]h$]h&]uh1hhhhK5hjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](h)}(hYGroup for hardware identifiers, and versions of components which are not field-updatable.h]hYGroup for hardware identifiers, and versions of components which are not field-updatable.}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK6hj=ubh)}(hXpVersions in this section identify the device design. For example, component identifiers or the board version reported in the PCI VPD. Data in ``devlink-info`` should be broken into the smallest logical components, e.g. PCI VPD may concatenate various information to form the Part Number string, while in ``devlink-info`` all parts should be reported as separate items.h](hVersions in this section identify the device design. For example, component identifiers or the board version reported in the PCI VPD. Data in }(hjNhhhNhNubh)}(h``devlink-info``h]h devlink-info}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjNubh should be broken into the smallest logical components, e.g. PCI VPD may concatenate various information to form the Part Number string, while in }(hjNhhhNhNubh)}(h``devlink-info``h]h devlink-info}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjNubh0 all parts should be reported as separate items.}(hjNhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK9hj=ubh)}(hThis group must not contain any frequently changing identifiers, such as serial numbers. See :ref:`Documentation/networking/devlink/devlink-flash.rst ` to understand why.h](h]This group must not contain any frequently changing identifiers, such as serial numbers. See }(hjhhhNhNubh)}(hI:ref:`Documentation/networking/devlink/devlink-flash.rst `h]j+)}(hjh]h2Documentation/networking/devlink/devlink-flash.rst}(hjhhhNhNubah}(h]h ](j6stdstd-refeh"]h$]h&]uh1j*hjubah}(h]h ]h"]h$]h&]refdocjC refdomainjreftyperef refexplicitrefwarnjI devlink_flashuh1hhhhK@hjubh to understand why.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK@hj=ubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(h ``running``h]h)}(hjh]hrunning}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1hhhhKEhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hGroup for information about currently running software/firmware. These versions often only update after a reboot, sometimes device reset.h]hGroup for information about currently running software/firmware. These versions often only update after a reboot, sometimes device reset.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKFhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(h ``stored``h]h)}(hjh]hstored}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1hhhhKIhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](h)}(h5Group for software/firmware versions in device flash.h]h5Group for software/firmware versions in device flash.}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKJhj!ubh)}(hStored values must update to reflect changes in the flash even if reboot has not yet occurred. If device is not capable of updating ``stored`` versions when new software is flashed, it must not report them.h](hStored values must update to reflect changes in the flash even if reboot has not yet occurred. If device is not capable of updating }(hj2hhhNhNubh)}(h ``stored``h]hstored}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj2ubh@ versions when new software is flashed, it must not report them.}(hj2hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKLhj!ubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]colsKuh1jhjubeh}(h]id1ah ]colwidths-givenah"]h$]h&]uh1jhhhhhNhNubh)}(hXEach version can be reported at most once in each version group. Firmware components stored on the flash should feature in both the ``running`` and ``stored`` sections, if device is capable of reporting ``stored`` versions (see :ref:`Documentation/networking/devlink/devlink-flash.rst `). In case software/firmware components are loaded from the disk (e.g. ``/lib/firmware``) only the running version should be reported via the kernel API.h](hEach version can be reported at most once in each version group. Firmware components stored on the flash should feature in both the }(hjshhhNhNubh)}(h ``running``h]hrunning}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjsubh and }(hjshhhNhNubh)}(h ``stored``h]hstored}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjsubh- sections, if device is capable of reporting }(hjshhhNhNubh)}(h ``stored``h]hstored}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjsubh versions (see }(hjshhhNhNubh)}(hI:ref:`Documentation/networking/devlink/devlink-flash.rst `h]j+)}(hjh]h2Documentation/networking/devlink/devlink-flash.rst}(hjhhhNhNubah}(h]h ](j6stdstd-refeh"]h$]h&]uh1j*hjubah}(h]h ]h"]h$]h&]refdocjC refdomainjreftyperef refexplicitrefwarnjI devlink_flashuh1hhhhKQhjsubhG). In case software/firmware components are loaded from the disk (e.g. }(hjshhhNhNubh)}(h``/lib/firmware``h]h /lib/firmware}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjsubhA) only the running version should be reported via the kernel API.}(hjshhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKQhhhhubh)}(hhh](h)}(hGeneric Versionsh]hGeneric Versions}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKZubh)}(hXIt is expected that drivers use the following generic names for exporting version information. If a generic name for a given component doesn't exist yet, driver authors should consult existing driver-specific versions and attempt reuse. As last resort, if a component is truly unique, using driver-specific names is allowed, but these should be documented in the driver-specific file.h]hXIt is expected that drivers use the following generic names for exporting version information. If a generic name for a given component doesn’t exist yet, driver authors should consult existing driver-specific versions and attempt reuse. As last resort, if a component is truly unique, using driver-specific names is allowed, but these should be documented in the driver-specific file.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK\hjhhubh)}(h9All versions should try to use the following terminology:h]h9All versions should try to use the following terminology:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKbhjhhubj)}(hhh](h)}(hList of common version suffixesh]hList of common version suffixes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKdhjubj)}(hhh](j)}(hhh]h}(h]h ]h"]h$]h&]jK uh1jhj+ubj)}(hhh]h}(h]h ]h"]h$]h&]jKZuh1jhj+ubj)}(hhh](j)}(hhh](j)}(hhh]h)}(hNameh]hName}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKghjFubah}(h]h ]h"]h$]h&]uh1jhjCubj)}(hhh]h)}(h Descriptionh]h Description}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhj]ubah}(h]h ]h"]h$]h&]uh1jhjCubeh}(h]h ]h"]h$]h&]uh1jhj@ubj)}(hhh](j)}(hhh]h)}(h``id``, ``revision``h](h)}(h``id``h]hid}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh, }(hjhhhNhNubh)}(h ``revision``h]hrevision}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhhhKihj}ubah}(h]h ]h"]h$]h&]uh1jhjzubj)}(hhh]h)}(hGIdentifiers of designs and revision, mostly used for hardware versions.h]hGIdentifiers of designs and revision, mostly used for hardware versions.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKjhjubah}(h]h ]h"]h$]h&]uh1jhjzubeh}(h]h ]h"]h$]h&]uh1jhj@ubj)}(hhh](j)}(hhh]h)}(h``api``h]h)}(hjh]hapi}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1hhhhKlhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hVersion of API between components. API items are usually of limited value to the user, and can be inferred from other versions by the vendor, so adding API versions is generally discouraged as noise.h]hVersion of API between components. API items are usually of limited value to the user, and can be inferred from other versions by the vendor, so adding API versions is generally discouraged as noise.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKmhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj@ubj)}(hhh](j)}(hhh]h)}(h ``bundle_id``h]h)}(hjh]h bundle_id}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1hhhhKqhjubah}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh](h)}(hXIdentifier of a distribution package which was flashed onto the device. This is an attribute of a firmware package which covers multiple versions for ease of managing firmware images (see :ref:`Documentation/networking/devlink/devlink-flash.rst `).h](hIdentifier of a distribution package which was flashed onto the device. This is an attribute of a firmware package which covers multiple versions for ease of managing firmware images (see }(hj3hhhNhNubh)}(hI:ref:`Documentation/networking/devlink/devlink-flash.rst `h]j+)}(hj=h]h2Documentation/networking/devlink/devlink-flash.rst}(hj?hhhNhNubah}(h]h ](j6stdstd-refeh"]h$]h&]uh1j*hj;ubah}(h]h ]h"]h$]h&]refdocjC refdomainjIreftyperef refexplicitrefwarnjI devlink_flashuh1hhhhKrhj3ubh).}(hj3hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKrhj0ubh)}(h``bundle_id`` can appear in both ``running`` and ``stored`` versions, but it must not be reported if any of the components covered by the ``bundle_id`` was changed and no longer matches the version from the bundle.h](h)}(h ``bundle_id``h]h bundle_id}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1hhjeubh can appear in both }(hjehhhNhNubh)}(h ``running``h]hrunning}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjeubh and }(hjehhhNhNubh)}(h ``stored``h]hstored}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjeubhO versions, but it must not be reported if any of the components covered by the }(hjehhhNhNubh)}(h ``bundle_id``h]h bundle_id}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjeubh? was changed and no longer matches the version from the bundle.}(hjehhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKwhj0ubeh}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj@ubeh}(h]h ]h"]h$]h&]uh1jhj+ubeh}(h]h ]h"]h$]h&]colsKuh1jhjubeh}(h]id2ah ]joah"]h$]h&]uh1jhjhhhNhNubh)}(hhh](h)}(hboard.idh]hboard.id}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhK}ubh)}(h&Unique identifier of the board design.h]h&Unique identifier of the board design.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubeh}(h]board-idah ]h"]board.idah$]h&]uh1hhjhhhhhK}ubh)}(hhh](h)}(h board.revh]h board.rev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(hBoard design revision.h]hBoard design revision.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubeh}(h] board-revah ]h"] board.revah$]h&]uh1hhjhhhhhKubh)}(hhh](h)}(hasic.idh]hasic.id}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj%hhhhhKubh)}(hASIC design identifier.h]hASIC design identifier.}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj%hhubeh}(h]asic-idah ]h"]asic.idah$]h&]uh1hhjhhhhhKubh)}(hhh](h)}(hasic.revh]hasic.rev}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjLhhhhhKubh)}(hASIC design revision/stepping.h]hASIC design revision/stepping.}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjLhhubeh}(h]asic-revah ]h"]asic.revah$]h&]uh1hhjhhhhhKubh)}(hhh](h)}(hboard.manufactureh]hboard.manufacture}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjshhhhhKubh)}(hEAn identifier of the company or the facility which produced the part.h]hEAn identifier of the company or the facility which produced the part.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjshhubeh}(h]board-manufactureah ]h"]board.manufactureah$]h&]uh1hhjhhhhhKubh)}(hhh](h)}(hboard.part_numberh]hboard.part_number}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(h,Part number of the board and its components.h]h,Part number of the board and its components.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubeh}(h]board-part-numberah ]h"]board.part_numberah$]h&]uh1hhjhhhhhKubh)}(hhh](h)}(hfwh]hfw}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(hTOverall firmware version, often representing the collection of fw.mgmt, fw.app, etc.h]hTOverall firmware version, often representing the collection of fw.mgmt, fw.app, etc.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubeh}(h]fwah ]h"]fwah$]h&]uh1hhjhhhhhKubh)}(hhh](h)}(hfw.mgmth]hfw.mgmt}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(hControl unit firmware version. This firmware is responsible for house keeping tasks, PHY control etc. but not the packet-by-packet data path operation.h]hControl unit firmware version. This firmware is responsible for house keeping tasks, PHY control etc. but not the packet-by-packet data path operation.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubeh}(h]fw-mgmtah ]h"]fw.mgmtah$]h&]uh1hhjhhhhhKubh)}(hhh](h)}(h fw.mgmt.apih]h fw.mgmt.api}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(h`Firmware interface specification version of the software interfaces between driver and firmware.h]h`Firmware interface specification version of the software interfaces between driver and firmware.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubeh}(h] fw-mgmt-apiah ]h"] fw.mgmt.apiah$]h&]uh1hhjhhhhhKubh)}(hhh](h)}(hfw.apph]hfw.app}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj6hhhhhKubh)}(h=Data path microcode controlling high-speed packet processing.h]h=Data path microcode controlling high-speed packet processing.}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj6hhubeh}(h]fw-appah ]h"]fw.appah$]h&]uh1hhjhhhhhKubh)}(hhh](h)}(hfw.undih]hfw.undi}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj]hhhhhKubh)}(h=UNDI software, may include the UEFI driver, firmware or both.h]h=UNDI software, may include the UEFI driver, firmware or both.}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj]hhubeh}(h]fw-undiah ]h"]fw.undiah$]h&]uh1hhjhhhhhKubh)}(hhh](h)}(hfw.ncsih]hfw.ncsi}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(hfVersion of the software responsible for supporting/handling the Network Controller Sideband Interface.h]hfVersion of the software responsible for supporting/handling the Network Controller Sideband Interface.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubeh}(h]fw-ncsiah ]h"]fw.ncsiah$]h&]uh1hhjhhhhhKubh)}(hhh](h)}(hfw.psidh]hfw.psid}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(hUnique identifier of the firmware parameter set. These are usually parameters of a particular board, defined at manufacturing time.h]hUnique identifier of the firmware parameter set. These are usually parameters of a particular board, defined at manufacturing time.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubeh}(h]fw-psidah ]h"]fw.psidah$]h&]uh1hhjhhhhhKubh)}(hhh](h)}(hfw.roceh]hfw.roce}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(hHRoCE firmware version which is responsible for handling roce management.h]hHRoCE firmware version which is responsible for handling roce management.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubeh}(h]fw-roceah ]h"]fw.roceah$]h&]uh1hhjhhhhhKubh)}(hhh](h)}(h fw.bundle_idh]h fw.bundle_id}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(h0Unique identifier of the entire firmware bundle.h]h0Unique identifier of the entire firmware bundle.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubeh}(h] fw-bundle-idah ]h"] fw.bundle_idah$]h&]uh1hhjhhhhhKubh)}(hhh](h)}(h fw.bootloaderh]h fw.bootloader}(hj# hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hhhhhKubh)}(hVersion of the bootloader.h]hVersion of the bootloader.}(hj1 hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj hhubeh}(h] fw-bootloaderah ]h"] fw.bootloaderah$]h&]uh1hhjhhhhhKubeh}(h]generic-versionsah ]h"]generic versionsah$]h&]uh1hhhhhhhhKZubh)}(hhh](h)}(h Future workh]h Future work}(hjR hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjO hhhhhKubh)}(h)The following extensions could be useful:h]h)The following extensions could be useful:}(hj` hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjO hhubj)}(hXH- on-disk firmware file names - drivers list the file names of firmware they may need to load onto devices via the ``MODULE_FIRMWARE()`` macro. These, however, are per module, rather than per device. It'd be useful to list the names of firmware files the driver will try to load for a given device, in order of priority.h]j)}(hhh]j)}(hX>on-disk firmware file names - drivers list the file names of firmware they may need to load onto devices via the ``MODULE_FIRMWARE()`` macro. These, however, are per module, rather than per device. It'd be useful to list the names of firmware files the driver will try to load for a given device, in order of priority.h]h)}(hX>on-disk firmware file names - drivers list the file names of firmware they may need to load onto devices via the ``MODULE_FIRMWARE()`` macro. These, however, are per module, rather than per device. It'd be useful to list the names of firmware files the driver will try to load for a given device, in order of priority.h](hqon-disk firmware file names - drivers list the file names of firmware they may need to load onto devices via the }(hjy hhhNhNubh)}(h``MODULE_FIRMWARE()``h]hMODULE_FIRMWARE()}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjy ubh macro. These, however, are per module, rather than per device. It’d be useful to list the names of firmware files the driver will try to load for a given device, in order of priority.}(hjy hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhju ubah}(h]h ]h"]h$]h&]uh1jhjr ubah}(h]h ]h"]h$]h&]jyjzuh1jhhhKhjn ubah}(h]h ]h"]h$]h&]uh1j hhhKhjO hhubeh}(h] future-workah ]h"] future workah$]h&]uh1hhhhhhhhKubeh}(h] devlink-infoah ]h"] devlink infoah$]h&]uh1hhhhhhhhKubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksjfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerj error_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}nameids}(j j jL jI jjj"jjIjFjpjmjjjjjjj j j3j0jZjWjj~jjjjjjj j jD jA j j u nametypes}(j jL jj"jIjpjjjj j3jZjjjjj jD j uh}(j hjI jjjjjjFj%jmjLjjsjjjjj jj0jjWj6j~j]jjjjjjj jjA j j jO jmjjju footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}j KsRparse_messages]transform_messages] transformerN include_log] decorationNhhub.