<sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget+/translations/zh_CN/networking/devlink/mlx5modnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget+/translations/zh_TW/networking/devlink/mlx5modnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget+/translations/it_IT/networking/devlink/mlx5modnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget+/translations/ja_JP/networking/devlink/mlx5modnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget+/translations/ko_KR/networking/devlink/mlx5modnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget+/translations/sp_SP/networking/devlink/mlx5modnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhcomment)}(h SPDX-License-Identifier: GPL-2.0h]h SPDX-License-Identifier: GPL-2.0}hhsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1hhhhhhE/var/lib/git/docbuild/linux/Documentation/networking/devlink/mlx5.rsthKubhsection)}(hhh](htitle)}(hmlx5 devlink supporth]hmlx5 devlink support}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh paragraph)}(hWThis document describes the devlink features implemented by the ``mlx5`` device driver.h](h@This document describes the devlink features implemented by the }(hhhhhNhNubhliteral)}(h``mlx5``h]hmlx5}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhubh device driver.}(hhhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hhh](h)}(h Parametersh]h Parameters}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhK ubhtable)}(hhh](h)}(hGeneric parameters implementedh]hGeneric parameters implemented}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hjubhtgroup)}(hhh](hcolspec)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1jhjubj)}(hhh]h}(h]h ]h"]h$]h&]j!Kuh1jhjubj)}(hhh]h}(h]h ]h"]h$]h&]j!Kuh1jhjubj)}(hhh]h}(h]h ]h"]h$]h&]j!Kuh1jhjubhtbody)}(hhh](hrow)}(hhh](hentry)}(hhh]h)}(hNameh]hName}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjIubah}(h]h ]h"]h$]h&]uh1jGhjDubjH)}(hhh]h)}(hModeh]hMode}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj`ubah}(h]h ]h"]h$]h&]uh1jGhjDubjH)}(hhh]h)}(h Validationh]h Validation}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjwubah}(h]h ]h"]h$]h&]uh1jGhjDubjH)}(hhh]h)}(hNotesh]hNotes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jGhjDubeh}(h]h ]h"]h$]h&]uh1jBhj?ubjC)}(hhh](jH)}(hhh]h)}(h``enable_roce``h]h)}(hjh]h enable_roce}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jGhjubjH)}(hhh]h)}(h driverinith]h driverinit}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jGhjubjH)}(hhh]h)}(hBooleanh]hBoolean}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jGhjubjH)}(hhh]h)}(hIf the device supports RoCE disablement, RoCE enablement state controls device support for RoCE capability. Otherwise, the control occurs in the driver stack. When RoCE is disabled at the driver level, only raw ethernet QPs are supported.h]hIf the device supports RoCE disablement, RoCE enablement state controls device support for RoCE capability. Otherwise, the control occurs in the driver stack. When RoCE is disabled at the driver level, only raw ethernet QPs are supported.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jGhjubeh}(h]h ]h"]h$]h&]uh1jBhj?ubjC)}(hhh](jH)}(hhh]h)}(h``io_eq_size``h]h)}(hj!h]h io_eq_size}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jGhjubjH)}(hhh]h)}(h driverinith]h driverinit}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj<ubah}(h]h ]h"]h$]h&]uh1jGhjubjH)}(hhh]h)}(h!The range is between 64 and 4096.h]h!The range is between 64 and 4096.}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjSubah}(h]h ]h"]h$]h&]uh1jGhjubjH)}(hhh]h}(h]h ]h"]h$]h&]uh1jGhjubeh}(h]h ]h"]h$]h&]uh1jBhj?ubjC)}(hhh](jH)}(hhh]h)}(h``event_eq_size``h]h)}(hjh]h event_eq_size}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1hhhhKhj|ubah}(h]h ]h"]h$]h&]uh1jGhjyubjH)}(hhh]h)}(h driverinith]h driverinit}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jGhjyubjH)}(hhh]h)}(h!The range is between 64 and 4096.h]h!The range is between 64 and 4096.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hjubah}(h]h ]h"]h$]h&]uh1jGhjyubjH)}(hhh]h}(h]h ]h"]h$]h&]uh1jGhjyubeh}(h]h ]h"]h$]h&]uh1jBhj?ubjC)}(hhh](jH)}(hhh]h)}(h ``max_macs``h]h)}(hjh]hmax_macs}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1hhhhK"hjubah}(h]h ]h"]h$]h&]uh1jGhjubjH)}(hhh]h)}(h driverinith]h driverinit}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK#hjubah}(h]h ]h"]h$]h&]uh1jGhjubjH)}(hhh]h)}(hFThe range is between 1 and 2^31. Only power of 2 values are supported.h]hFThe range is between 1 and 2^31. Only power of 2 values are supported.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK$hjubah}(h]h ]h"]h$]h&]uh1jGhjubjH)}(hhh]h}(h]h ]h"]h$]h&]uh1jGhjubeh}(h]h ]h"]h$]h&]uh1jBhj?ubjC)}(hhh](jH)}(hhh]h)}(h``enable_sriov``h]h)}(hjAh]h enable_sriov}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhj?ubah}(h]h ]h"]h$]h&]uh1hhhhK&hj<ubah}(h]h ]h"]h$]h&]uh1jGhj9ubjH)}(hhh]h)}(h permanenth]h permanent}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK'hj\ubah}(h]h ]h"]h$]h&]uh1jGhj9ubjH)}(hhh]h)}(hBooleanh]hBoolean}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK(hjsubah}(h]h ]h"]h$]h&]uh1jGhj9ubjH)}(hhh]h)}(hApplies to each physical function (PF) independently, if the device supports it. Otherwise, it applies symmetrically to all PFs.h]hApplies to each physical function (PF) independently, if the device supports it. Otherwise, it applies symmetrically to all PFs.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK)hjubah}(h]h ]h"]h$]h&]uh1jGhj9ubeh}(h]h ]h"]h$]h&]uh1jBhj?ubjC)}(hhh](jH)}(hhh]h)}(h ``total_vfs``h]h)}(hjh]h total_vfs}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1hhhhK+hjubah}(h]h ]h"]h$]h&]uh1jGhjubjH)}(hhh]h)}(h permanenth]h permanent}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK,hjubah}(h]h ]h"]h$]h&]uh1jGhjubjH)}(hhh]h)}(h1The range is between 1 and a device-specific max.h]h1The range is between 1 and a device-specific max.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK-hjubah}(h]h ]h"]h$]h&]uh1jGhjubjH)}(hhh]h)}(hApplies to each physical function (PF) independently, if the device supports it. Otherwise, it applies symmetrically to all PFs.h]hApplies to each physical function (PF) independently, if the device supports it. Otherwise, it applies symmetrically to all PFs.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK.hjubah}(h]h ]h"]h$]h&]uh1jGhjubeh}(h]h ]h"]h$]h&]uh1jBhj?ubeh}(h]h ]h"]h$]h&]uh1j=hjubeh}(h]h ]h"]h$]h&]colsKuh1jhjubeh}(h]id1ah ]h"]h$]h&]uh1hhhhhhNhNubh)}(heNote: permanent parameters such as ``enable_sriov`` and ``total_vfs`` require FW reset to take effecth](h#Note: permanent parameters such as }(hj)hhhNhNubh)}(h``enable_sriov``h]h enable_sriov}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj)ubh and }(hj)hhhNhNubh)}(h ``total_vfs``h]h total_vfs}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhj)ubh require FW reset to take effect}(hj)hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK1hhhhubh literal_block)}(hX_# setup parameters devlink dev param set pci/0000:01:00.0 name enable_sriov value true cmode permanent devlink dev param set pci/0000:01:00.0 name total_vfs value 8 cmode permanent # Fw reset devlink dev reload pci/0000:01:00.0 action fw_activate # for PCI related config such as sriov PCI reset/rescan is required: echo 1 >/sys/bus/pci/devices/0000:01:00.0/remove echo 1 >/sys/bus/pci/rescan grep ^ /sys/bus/pci/devices/0000:01:00.0/sriov_* * - ``num_doorbells`` - driverinit - This controls the number of channel doorbells used by the netdev. In all cases, an additional doorbell is allocated and used for non-channel communication (e.g. for PTP, HWS, etc.). Supported values are: - 0: No channel-specific doorbells, use the global one for everything. - [1, max_num_channels]: Spread netdev channels equally across these doorbells.h]hX_# setup parameters devlink dev param set pci/0000:01:00.0 name enable_sriov value true cmode permanent devlink dev param set pci/0000:01:00.0 name total_vfs value 8 cmode permanent # Fw reset devlink dev reload pci/0000:01:00.0 action fw_activate # for PCI related config such as sriov PCI reset/rescan is required: echo 1 >/sys/bus/pci/devices/0000:01:00.0/remove echo 1 >/sys/bus/pci/rescan grep ^ /sys/bus/pci/devices/0000:01:00.0/sriov_* * - ``num_doorbells`` - driverinit - This controls the number of channel doorbells used by the netdev. In all cases, an additional doorbell is allocated and used for non-channel communication (e.g. for PTP, HWS, etc.). Supported values are: - 0: No channel-specific doorbells, use the global one for everything. - [1, max_num_channels]: Spread netdev channels equally across these doorbells.}hj]sbah}(h]h ]h"]h$]h&]hhforcelanguagebashhighlight_args}uh1j[hhhK3hhhhubh)}(hMThe ``mlx5`` driver also implements the following driver-specific parameters.h](hThe }(hjphhhNhNubh)}(h``mlx5``h]hmlx5}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjpubhA driver also implements the following driver-specific parameters.}(hjphhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKKhhhhubh)}(hhh](h)}(h&Driver-specific parameters implementedh]h&Driver-specific parameters implemented}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKNhjubj)}(hhh](j)}(hhh]h}(h]h ]h"]h$]h&]j!Kuh1jhjubj)}(hhh]h}(h]h ]h"]h$]h&]j!Kuh1jhjubj)}(hhh]h}(h]h ]h"]h$]h&]j!Kuh1jhjubj)}(hhh]h}(h]h ]h"]h$]h&]j!KUuh1jhjubj>)}(hhh](jC)}(hhh](jH)}(hhh]h)}(hNameh]hName}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKQhjubah}(h]h ]h"]h$]h&]uh1jGhjubjH)}(hhh]h)}(hTypeh]hType}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKRhjubah}(h]h ]h"]h$]h&]uh1jGhjubjH)}(hhh]h)}(hModeh]hMode}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKShjubah}(h]h ]h"]h$]h&]uh1jGhjubjH)}(hhh]h)}(h Descriptionh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKThjubah}(h]h ]h"]h$]h&]uh1jGhjubeh}(h]h ]h"]h$]h&]uh1jBhjubjC)}(hhh](jH)}(hhh]h)}(h``flow_steering_mode``h]h)}(hj8h]hflow_steering_mode}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj6ubah}(h]h ]h"]h$]h&]uh1hhhhKUhj3ubah}(h]h ]h"]h$]h&]uh1jGhj0ubjH)}(hhh]h)}(hstringh]hstring}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKVhjSubah}(h]h ]h"]h$]h&]uh1jGhj0ubjH)}(hhh]h)}(hruntimeh]hruntime}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKWhjjubah}(h]h ]h"]h$]h&]uh1jGhj0ubjH)}(hhh](h)}(h-Controls the flow steering mode of the driverh]h-Controls the flow steering mode of the driver}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKXhjubh bullet_list)}(hhh](h list_item)}(hw``dmfs`` Device managed flow steering. In DMFS mode, the HW steering entities are created and managed through firmware.h]h)}(hw``dmfs`` Device managed flow steering. In DMFS mode, the HW steering entities are created and managed through firmware.h](h)}(h``dmfs``h]hdmfs}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubho Device managed flow steering. In DMFS mode, the HW steering entities are created and managed through firmware.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKZhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(h``smfs`` Software managed flow steering. In SMFS mode, the HW steering entities are created and manage through the driver without firmware intervention.h]h)}(h``smfs`` Software managed flow steering. In SMFS mode, the HW steering entities are created and manage through the driver without firmware intervention.h](h)}(h``smfs``h]hsmfs}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh Software managed flow steering. In SMFS mode, the HW steering entities are created and manage through the driver without firmware intervention.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK\hjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(h``hmfs`` Hardware managed flow steering. In HMFS mode, the driver is configuring steering rules directly to the HW using Work Queues with a special new type of WQE (Work Queue Element). h]h)}(h``hmfs`` Hardware managed flow steering. In HMFS mode, the driver is configuring steering rules directly to the HW using Work Queues with a special new type of WQE (Work Queue Element).h](h)}(h``hmfs``h]hhmfs}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh Hardware managed flow steering. In HMFS mode, the driver is configuring steering rules directly to the HW using Work Queues with a special new type of WQE (Work Queue Element).}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK_hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]bullet*uh1jhhhKZhjubh)}(hZSMFS mode is faster and provides better rule insertion rate compared to default DMFS mode.h]hZSMFS mode is faster and provides better rule insertion rate compared to default DMFS mode.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKchjubeh}(h]h ]h"]h$]h&]uh1jGhj0ubeh}(h]h ]h"]h$]h&]uh1jBhjubjC)}(hhh](jH)}(hhh]h)}(h``fdb_large_groups``h]h)}(hj5h]hfdb_large_groups}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj3ubah}(h]h ]h"]h$]h&]uh1hhhhKehj0ubah}(h]h ]h"]h$]h&]uh1jGhj-ubjH)}(hhh]h)}(hu32h]hu32}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKfhjPubah}(h]h ]h"]h$]h&]uh1jGhj-ubjH)}(hhh]h)}(h driverinith]h driverinit}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKghjgubah}(h]h ]h"]h$]h&]uh1jGhj-ubjH)}(hhh](h)}(h?Control the number of large groups (size > 1) in the FDB table.h]h?Control the number of large groups (size > 1) in the FDB table.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhj~ubj)}(hhh]j)}(h=The default value is 15, and the range is between 1 and 1024.h]h)}(hjh]h=The default value is 15, and the range is between 1 and 1024.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKjhjubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]jjuh1jhhhKjhj~ubeh}(h]h ]h"]h$]h&]uh1jGhj-ubeh}(h]h ]h"]h$]h&]uh1jBhjubjC)}(hhh](jH)}(hhh]h)}(h``esw_multiport``h]h)}(hjh]h esw_multiport}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1hhhhKkhjubah}(h]h ]h"]h$]h&]uh1jGhjubjH)}(hhh]h)}(hBooleanh]hBoolean}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKlhjubah}(h]h ]h"]h$]h&]uh1jGhjubjH)}(hhh]h)}(hruntimeh]hruntime}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKmhjubah}(h]h ]h"]h$]h&]uh1jGhjubjH)}(hhh](h)}(h+Control MultiPort E-Switch shared fdb mode.h]h+Control MultiPort E-Switch shared fdb mode.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKnhj ubh)}(hzAn experimental mode where a single E-Switch is used and all the vports and physical ports on the NIC are connected to it.h]hzAn experimental mode where a single E-Switch is used and all the vports and physical ports on the NIC are connected to it.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKphj ubh)}(h~An example is to send traffic from a VF that is created on PF0 to an uplink that is natively associated with the uplink of PF1h]h~An example is to send traffic from a VF that is created on PF0 to an uplink that is natively associated with the uplink of PF1}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKshj ubh)}(hNote: Future devices, ConnectX-8 and onward, will eventually have this as the default to allow forwarding between all NIC ports in a single E-switch environment and the dual E-switch mode will likely get deprecated.h]hNote: Future devices, ConnectX-8 and onward, will eventually have this as the default to allow forwarding between all NIC ports in a single E-switch environment and the dual E-switch mode will likely get deprecated.}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKvhj ubh)}(hDefault: disabledh]hDefault: disabled}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK{hj ubeh}(h]h ]h"]h$]h&]uh1jGhjubeh}(h]h ]h"]h$]h&]uh1jBhjubjC)}(hhh](jH)}(hhh]h)}(h``esw_port_metadata``h]h)}(hjih]hesw_port_metadata}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjgubah}(h]h ]h"]h$]h&]uh1hhhhK|hjdubah}(h]h ]h"]h$]h&]uh1jGhjaubjH)}(hhh]h)}(hBooleanh]hBoolean}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK}hjubah}(h]h ]h"]h$]h&]uh1jGhjaubjH)}(hhh]h)}(hruntimeh]hruntime}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK~hjubah}(h]h ]h"]h$]h&]uh1jGhjaubjH)}(hhh](h)}(hzWhen applicable, disabling eswitch metadata can increase packet rate up to 20% depending on the use case and packet sizes.h]hzWhen applicable, disabling eswitch metadata can increase packet rate up to 20% depending on the use case and packet sizes.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubh)}(hXEswitch port metadata state controls whether to internally tag packets with metadata. Metadata tagging must be enabled for multi-port RoCE, failover between representors and stacked devices. By default metadata is enabled on the supported devices in E-switch. Metadata is applicable only for E-switch in switchdev mode and users may disable it when NONE of the below use cases will be in use: 1. HCA is in Dual/multi-port RoCE mode. 2. VF/SF representor bonding (Usually used for Live migration) 3. Stacked devicesh]hXEswitch port metadata state controls whether to internally tag packets with metadata. Metadata tagging must be enabled for multi-port RoCE, failover between representors and stacked devices. By default metadata is enabled on the supported devices in E-switch. Metadata is applicable only for E-switch in switchdev mode and users may disable it when NONE of the below use cases will be in use: 1. HCA is in Dual/multi-port RoCE mode. 2. VF/SF representor bonding (Usually used for Live migration) 3. Stacked devices}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubh)}(hcWhen metadata is disabled, the above use cases will fail to initialize if users try to enable them.h]hcWhen metadata is disabled, the above use cases will fail to initialize if users try to enable them.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubh)}(hNote: Setting this parameter does not take effect immediately. Setting must happen in legacy mode and eswitch port metadata takes effect after enabling switchdev mode.h]hNote: Setting this parameter does not take effect immediately. Setting must happen in legacy mode and eswitch port metadata takes effect after enabling switchdev mode.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubeh}(h]h ]h"]h$]h&]uh1jGhjaubeh}(h]h ]h"]h$]h&]uh1jBhjubjC)}(hhh](jH)}(hhh]h)}(h``hairpin_num_queues``h]h)}(hjh]hhairpin_num_queues}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jGhjubjH)}(hhh]h)}(hu32h]hu32}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jGhjubjH)}(hhh]h)}(h driverinith]h driverinit}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj3ubah}(h]h ]h"]h$]h&]uh1jGhjubjH)}(hhh](h)}(hWe refer to a TC NIC rule that involves forwarding as "hairpin". Hairpin queues are mlx5 hardware specific implementation for hardware forwarding of such packets.h]hWe refer to a TC NIC rule that involves forwarding as “hairpin”. Hairpin queues are mlx5 hardware specific implementation for hardware forwarding of such packets.}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjJubh)}(h%Control the number of hairpin queues.h]h%Control the number of hairpin queues.}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjJubeh}(h]h ]h"]h$]h&]uh1jGhjubeh}(h]h ]h"]h$]h&]uh1jBhjubjC)}(hhh](jH)}(hhh]h)}(h``hairpin_queue_size``h]h)}(hj}h]hhairpin_queue_size}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj{ubah}(h]h ]h"]h$]h&]uh1hhhhKhjxubah}(h]h ]h"]h$]h&]uh1jGhjuubjH)}(hhh]h)}(hu32h]hu32}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jGhjuubjH)}(hhh]h)}(h driverinith]h driverinit}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jGhjuubjH)}(hhh]h)}(h4Control the size (in packets) of the hairpin queues.h]h4Control the size (in packets) of the hairpin queues.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jGhjuubeh}(h]h ]h"]h$]h&]uh1jBhjubjC)}(hhh](jH)}(hhh]h)}(h``pcie_cong_inbound_high``h]h)}(hjh]hpcie_cong_inbound_high}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jGhjubjH)}(hhh]h)}(hu16h]hu16}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jGhjubjH)}(hhh]h)}(h driverinith]h driverinit}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jGhjubjH)}(hhh](h)}(hHigh threshold configuration for PCIe congestion events. The firmware will send an event once device side inbound PCIe traffic went above the configured high threshold for a long enough period (at least 200ms).h]hHigh threshold configuration for PCIe congestion events. The firmware will send an event once device side inbound PCIe traffic went above the configured high threshold for a long enough period (at least 200ms).}(hj7 hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj4 ubh)}(h%See pci_bw_inbound_high ethtool stat.h]h%See pci_bw_inbound_high ethtool stat.}(hjE hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj4 ubh)}(hUnits are 0.01 %. Accepted values are in range [0, 10000]. pcie_cong_inbound_low < pcie_cong_inbound_high. Default value: 9000 (Corresponds to 90%).h]hUnits are 0.01 %. Accepted values are in range [0, 10000]. pcie_cong_inbound_low < pcie_cong_inbound_high. Default value: 9000 (Corresponds to 90%).}(hjS hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj4 ubeh}(h]h ]h"]h$]h&]uh1jGhjubeh}(h]h ]h"]h$]h&]uh1jBhjubjC)}(hhh](jH)}(hhh]h)}(h``pcie_cong_inbound_low``h]h)}(hju h]hpcie_cong_inbound_low}(hjw hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjs ubah}(h]h ]h"]h$]h&]uh1hhhhKhjp ubah}(h]h ]h"]h$]h&]uh1jGhjm ubjH)}(hhh]h)}(hu16h]hu16}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jGhjm ubjH)}(hhh]h)}(h driverinith]h driverinit}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jGhjm ubjH)}(hhh](h)}(hLow threshold configuration for PCIe congestion events. The firmware will send an event once device side inbound PCIe traffic went below the configured low threshold, only after having been previously in a congested state.h]hLow threshold configuration for PCIe congestion events. The firmware will send an event once device side inbound PCIe traffic went below the configured low threshold, only after having been previously in a congested state.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubh)}(h$See pci_bw_inbound_low ethtool stat.h]h$See pci_bw_inbound_low ethtool stat.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubh)}(hUnits are 0.01 %. Accepted values are in range [0, 10000]. pcie_cong_inbound_low < pcie_cong_inbound_high. Default value: 7500.h]hUnits are 0.01 %. Accepted values are in range [0, 10000]. pcie_cong_inbound_low < pcie_cong_inbound_high. Default value: 7500.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubeh}(h]h ]h"]h$]h&]uh1jGhjm ubeh}(h]h ]h"]h$]h&]uh1jBhjubjC)}(hhh](jH)}(hhh]h)}(h``pcie_cong_outbound_high``h]h)}(hj h]hpcie_cong_outbound_high}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj ubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jGhj ubjH)}(hhh]h)}(hu16h]hu16}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jGhj ubjH)}(hhh]h)}(h driverinith]h driverinit}(hj4 hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj1 ubah}(h]h ]h"]h$]h&]uh1jGhj ubjH)}(hhh](h)}(hHigh threshold configuration for PCIe congestion events. The firmware will send an event once device side outbound PCIe traffic went above the configured high threshold for a long enough period (at least 200ms).h]hHigh threshold configuration for PCIe congestion events. The firmware will send an event once device side outbound PCIe traffic went above the configured high threshold for a long enough period (at least 200ms).}(hjK hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjH ubh)}(h&See pci_bw_outbound_high ethtool stat.h]h&See pci_bw_outbound_high ethtool stat.}(hjY hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjH ubh)}(hUnits are 0.01 %. Accepted values are in range [0, 10000]. pcie_cong_outbound_low < pcie_cong_outbound_high. Default value: 9000 (Corresponds to 90%).h]hUnits are 0.01 %. Accepted values are in range [0, 10000]. pcie_cong_outbound_low < pcie_cong_outbound_high. Default value: 9000 (Corresponds to 90%).}(hjg hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjH ubeh}(h]h ]h"]h$]h&]uh1jGhj ubeh}(h]h ]h"]h$]h&]uh1jBhjubjC)}(hhh](jH)}(hhh]h)}(h``pcie_cong_outbound_low``h]h)}(hj h]hpcie_cong_outbound_low}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj ubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jGhj ubjH)}(hhh]h)}(hu16h]hu16}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jGhj ubjH)}(hhh]h)}(h driverinith]h driverinit}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jGhj ubjH)}(hhh](h)}(hLow threshold configuration for PCIe congestion events. The firmware will send an event once device side outbound PCIe traffic went below the configured low threshold, only after having been previously in a congested state.h]hLow threshold configuration for PCIe congestion events. The firmware will send an event once device side outbound PCIe traffic went below the configured low threshold, only after having been previously in a congested state.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubh)}(h%See pci_bw_outbound_low ethtool stat.h]h%See pci_bw_outbound_low ethtool stat.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubh)}(hUnits are 0.01 %. Accepted values are in range [0, 10000]. pcie_cong_outbound_low < pcie_cong_outbound_high. Default value: 7500.h]hUnits are 0.01 %. Accepted values are in range [0, 10000]. pcie_cong_outbound_low < pcie_cong_outbound_high. Default value: 7500.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubeh}(h]h ]h"]h$]h&]uh1jGhj ubeh}(h]h ]h"]h$]h&]uh1jBhjubjC)}(hhh](jH)}(hhh]h)}(h``cqe_compress_type``h]h)}(hj h]hcqe_compress_type}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj ubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jGhj ubjH)}(hhh]h)}(hstringh]hstring}(hj1 hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj. ubah}(h]h ]h"]h$]h&]uh1jGhj ubjH)}(hhh]h)}(h permanenth]h permanent}(hjH hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjE ubah}(h]h ]h"]h$]h&]uh1jGhj ubjH)}(hhh]h)}(hX#Configure which mechanism/algorithm should be used by the NIC that will affect the rate (aggressiveness) of compressed CQEs depending on PCIe bus conditions and other internal NIC factors. This mode affects all queues that enable compression. * ``balanced`` : Merges fewer CQEs, resulting in a moderate compression ratio but maintaining a balance between bandwidth savings and performance * ``aggressive`` : Merges more CQEs into a single entry, achieving a higher compression rate and maximizing performance, particularly under high traffic loadsh](hConfigure which mechanism/algorithm should be used by the NIC that will affect the rate (aggressiveness) of compressed CQEs depending on PCIe bus conditions and other internal NIC factors. This mode affects all queues that enable compression. * }(hj_ hhhNhNubh)}(h ``balanced``h]hbalanced}(hjg hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj_ ubh : Merges fewer CQEs, resulting in a moderate compression ratio but maintaining a balance between bandwidth savings and performance * }(hj_ hhhNhNubh)}(h``aggressive``h]h aggressive}(hjy hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj_ ubh : Merges more CQEs into a single entry, achieving a higher compression rate and maximizing performance, particularly under high traffic loads}(hj_ hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj\ ubah}(h]h ]h"]h$]h&]uh1jGhj ubeh}(h]h ]h"]h$]h&]uh1jBhjubeh}(h]h ]h"]h$]h&]uh1j=hjubeh}(h]h ]h"]h$]h&]colsKuh1jhjubeh}(h]id2ah ]colwidths-givenah"]h$]h&]uh1hhhhhhNhNubh)}(hAThe ``mlx5`` driver supports reloading via ``DEVLINK_CMD_RELOAD``h](hThe }(hj hhhNhNubh)}(h``mlx5``h]hmlx5}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj ubh driver supports reloading via }(hj hhhNhNubh)}(h``DEVLINK_CMD_RELOAD``h]hDEVLINK_CMD_RELOAD}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj ubeh}(h]h ]h"]h$]h&]uh1hhhhKhhhhubeh}(h] parametersah ]h"] parametersah$]h&]uh1hhhhhhhhK ubh)}(hhh](h)}(h Info versionsh]h Info versions}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hhhhhKubh)}(h2The ``mlx5`` driver reports the following versionsh](hThe }(hj hhhNhNubh)}(h``mlx5``h]hmlx5}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj ubh& driver reports the following versions}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj hhubh)}(hhh](h)}(h!devlink info versions implementedh]h!devlink info versions implemented}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubj)}(hhh](j)}(hhh]h}(h]h ]h"]h$]h&]j!Kuh1jhj* ubj)}(hhh]h}(h]h ]h"]h$]h&]j!Kuh1jhj* ubj)}(hhh]h}(h]h ]h"]h$]h&]j!KZuh1jhj* ubj>)}(hhh](jC)}(hhh](jH)}(hhh]h)}(hNameh]hName}(hjQ hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjN ubah}(h]h ]h"]h$]h&]uh1jGhjK ubjH)}(hhh]h)}(hTypeh]hType}(hjh hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhje ubah}(h]h ]h"]h$]h&]uh1jGhjK ubjH)}(hhh]h)}(h Descriptionh]h Description}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj| ubah}(h]h ]h"]h$]h&]uh1jGhjK ubeh}(h]h ]h"]h$]h&]uh1jBhjH ubjC)}(hhh](jH)}(hhh]h)}(h ``fw.psid``h]h)}(hj h]hfw.psid}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj ubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jGhj ubjH)}(hhh]h)}(hfixedh]hfixed}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jGhj ubjH)}(hhh]h)}(h-Used to represent the board id of the device.h]h-Used to represent the board id of the device.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jGhj ubeh}(h]h ]h"]h$]h&]uh1jBhjH ubjC)}(hhh](jH)}(hhh]h)}(h``fw.version``h]h)}(hj h]h fw.version}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj ubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jGhj ubjH)}(hhh]h)}(hstored, runningh]hstored, running}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jGhj ubjH)}(hhh]h)}(h9Three digit major.minor.subminor firmware version number.h]h9Three digit major.minor.subminor firmware version number.}(hj- hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj* ubah}(h]h ]h"]h$]h&]uh1jGhj ubeh}(h]h ]h"]h$]h&]uh1jBhjH ubeh}(h]h ]h"]h$]h&]uh1j=hj* ubeh}(h]h ]h"]h$]h&]colsKuh1jhj ubeh}(h]id3ah ]j ah"]h$]h&]uh1hhj hhhNhNubeh}(h] info-versionsah ]h"] info versionsah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hHealth reportersh]hHealth reporters}(hjf hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjc hhhhhKubh)}(hhh](h)}(h tx reporterh]h tx reporter}(hjw hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjt hhhhhKubh)}(hcThe tx reporter is responsible for reporting and recovering of the following three error scenarios:h]hcThe tx reporter is responsible for reporting and recovering of the following three error scenarios:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjt hhubj)}(hhh](j)}(h[tx timeout Report on kernel tx timeout detection. Recover by searching lost interrupts.h]hdefinition_list)}(hhh]hdefinition_list_item)}(hWtx timeout Report on kernel tx timeout detection. Recover by searching lost interrupts.h](hterm)}(h tx timeouth]h tx timeout}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hhhKhj ubh definition)}(hhh]h)}(hLReport on kernel tx timeout detection. Recover by searching lost interrupts.h]hLReport on kernel tx timeout detection. Recover by searching lost interrupts.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1j hj ubeh}(h]h ]h"]h$]h&]uh1j hhhKhj ubah}(h]h ]h"]h$]h&]uh1j hj ubah}(h]h ]h"]h$]h&]uh1jhj hhhNhNubj)}(hetx error completion Report on error tx completion. Recover by flushing the tx queue and reset it.h]j )}(hhh]j )}(hatx error completion Report on error tx completion. Recover by flushing the tx queue and reset it.h](j )}(htx error completionh]htx error completion}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hhhKhj ubj )}(hhh]h)}(hMReport on error tx completion. Recover by flushing the tx queue and reset it.h]hMReport on error tx completion. Recover by flushing the tx queue and reset it.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1j hj ubeh}(h]h ]h"]h$]h&]uh1j hhhKhj ubah}(h]h ]h"]h$]h&]uh1j hj ubah}(h]h ]h"]h$]h&]uh1jhj hhhNhNubj)}(htx PTP port timestamping CQ unhealthy Report too many CQEs never delivered on port ts CQ. Recover by flushing and re-creating all PTP channels. h]j )}(hhh]j )}(htx PTP port timestamping CQ unhealthy Report too many CQEs never delivered on port ts CQ. Recover by flushing and re-creating all PTP channels. h](j )}(h%tx PTP port timestamping CQ unhealthyh]h%tx PTP port timestamping CQ unhealthy}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1j hhhMhj)ubj )}(hhh]h)}(hiReport too many CQEs never delivered on port ts CQ. Recover by flushing and re-creating all PTP channels.h]hiReport too many CQEs never delivered on port ts CQ. Recover by flushing and re-creating all PTP channels.}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj;ubah}(h]h ]h"]h$]h&]uh1j hj)ubeh}(h]h ]h"]h$]h&]uh1j hhhMhj&ubah}(h]h ]h"]h$]h&]uh1j hj"ubah}(h]h ]h"]h$]h&]uh1jhj hhhNhNubeh}(h]h ]h"]h$]h&]j-uh1jhhhKhjt hhubh)}(h{tx reporter also support on demand diagnose callback, on which it provides real time information of its send queues status.h]h{tx reporter also support on demand diagnose callback, on which it provides real time information of its send queues status.}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjt hhubh)}(hUser commands examples:h]hUser commands examples:}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjt hhubj)}(hhh]j)}(hXDiagnose send queues status:: $ devlink health diagnose pci/0000:82:00.0 reporter tx h](h)}(hDiagnose send queues status::h]hDiagnose send queues status:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubj\)}(h6$ devlink health diagnose pci/0000:82:00.0 reporter txh]h6$ devlink health diagnose pci/0000:82:00.0 reporter tx}hjsbah}(h]h ]h"]h$]h&]hhuh1j[hhhM hjubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhNubah}(h]h ]h"]h$]h&]jjjuh1jhhhMhjt hhubhnote)}(h`This command has valid output only when interface is up, otherwise the command has empty output.h]h)}(hjh]h`This command has valid output only when interface is up, otherwise the command has empty output.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM hjubah}(h]h ]h"]h$]h&]uh1jhjt hhhhhNubj)}(hhh]j)}(hShow number of tx errors indicated, number of recover flows ended successfully, is autorecover enabled and graceful period from last recover:: $ devlink health show pci/0000:82:00.0 reporter tx h](h)}(hShow number of tx errors indicated, number of recover flows ended successfully, is autorecover enabled and graceful period from last recover::h]hShow number of tx errors indicated, number of recover flows ended successfully, is autorecover enabled and graceful period from last recover:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubj\)}(h2$ devlink health show pci/0000:82:00.0 reporter txh]h2$ devlink health show pci/0000:82:00.0 reporter tx}hjsbah}(h]h ]h"]h$]h&]hhuh1j[hhhMhjubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhNubah}(h]h ]h"]h$]h&]jjjuh1jhhhMhjt hhubeh}(h] tx-reporterah ]h"] tx reporterah$]h&]uh1hhjc hhhhhKubh)}(hhh](h)}(h rx reporterh]h rx reporter}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhMubh)}(haThe rx reporter is responsible for reporting and recovering of the following two error scenarios:h]haThe rx reporter is responsible for reporting and recovering of the following two error scenarios:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjhhubj)}(hhh](j)}(hX;rx queues' initialization (population) timeout Population of rx queues' descriptors on ring initialization is done in napi context via triggering an irq. In case of a failure to get the minimum amount of descriptors, a timeout would occur, and descriptors could be recovered by polling the EQ (Event Queue).h]j )}(hhh]j )}(hX3rx queues' initialization (population) timeout Population of rx queues' descriptors on ring initialization is done in napi context via triggering an irq. In case of a failure to get the minimum amount of descriptors, a timeout would occur, and descriptors could be recovered by polling the EQ (Event Queue).h](j )}(h.rx queues' initialization (population) timeouth]h0rx queues’ initialization (population) timeout}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1j hhhMhj/ubj )}(hhh]h)}(hXPopulation of rx queues' descriptors on ring initialization is done in napi context via triggering an irq. In case of a failure to get the minimum amount of descriptors, a timeout would occur, and descriptors could be recovered by polling the EQ (Event Queue).h]hXPopulation of rx queues’ descriptors on ring initialization is done in napi context via triggering an irq. In case of a failure to get the minimum amount of descriptors, a timeout would occur, and descriptors could be recovered by polling the EQ (Event Queue).}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjAubah}(h]h ]h"]h$]h&]uh1j hj/ubeh}(h]h ]h"]h$]h&]uh1j hhhMhj,ubah}(h]h ]h"]h$]h&]uh1j hj(ubah}(h]h ]h"]h$]h&]uh1jhj%hhhNhNubj)}(hrx completions with errors (reported by HW on interrupt context) Report on rx completion error. Recover (if needed) by flushing the related queue and reset it. h]j )}(hhh]j )}(hrx completions with errors (reported by HW on interrupt context) Report on rx completion error. Recover (if needed) by flushing the related queue and reset it. h](j )}(h@rx completions with errors (reported by HW on interrupt context)h]h@rx completions with errors (reported by HW on interrupt context)}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1j hhhMhjqubj )}(hhh]h)}(h^Report on rx completion error. Recover (if needed) by flushing the related queue and reset it.h]h^Report on rx completion error. Recover (if needed) by flushing the related queue and reset it.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1j hjqubeh}(h]h ]h"]h$]h&]uh1j hhhMhjnubah}(h]h ]h"]h$]h&]uh1j hjjubah}(h]h ]h"]h$]h&]uh1jhj%hhhNhNubeh}(h]h ]h"]h$]h&]jjjuh1jhhhMhjhhubh)}(hrx reporter also supports on demand diagnose callback, on which it provides real time information of its receive queues' status.h]hrx reporter also supports on demand diagnose callback, on which it provides real time information of its receive queues’ status.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM hjhhubj)}(hhh]j)}(hzDiagnose rx queues' status and corresponding completion queue:: $ devlink health diagnose pci/0000:82:00.0 reporter rx h](h)}(h?Diagnose rx queues' status and corresponding completion queue::h]h@Diagnose rx queues’ status and corresponding completion queue:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM#hjubj\)}(h6$ devlink health diagnose pci/0000:82:00.0 reporter rxh]h6$ devlink health diagnose pci/0000:82:00.0 reporter rx}hjsbah}(h]h ]h"]h$]h&]hhuh1j[hhhM%hjubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhNubah}(h]h ]h"]h$]h&]jjjuh1jhhhM#hjhhubj)}(haThis command has valid output only when interface is up. Otherwise, the command has empty output.h]h)}(hjh]haThis command has valid output only when interface is up. Otherwise, the command has empty output.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM(hjubah}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(hhh]j)}(hShow number of rx errors indicated, number of recover flows ended successfully, is autorecover enabled, and graceful period from last recover:: $ devlink health show pci/0000:82:00.0 reporter rx h](h)}(hShow number of rx errors indicated, number of recover flows ended successfully, is autorecover enabled, and graceful period from last recover::h]hShow number of rx errors indicated, number of recover flows ended successfully, is autorecover enabled, and graceful period from last recover:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM*hj ubj\)}(h2$ devlink health show pci/0000:82:00.0 reporter rxh]h2$ devlink health show pci/0000:82:00.0 reporter rx}hjsbah}(h]h ]h"]h$]h&]hhuh1j[hhhM-hj ubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhNubah}(h]h ]h"]h$]h&]jjjuh1jhhhM*hjhhubeh}(h] rx-reporterah ]h"] rx reporterah$]h&]uh1hhjc hhhhhMubh)}(hhh](h)}(h fw reporterh]h fw reporter}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj=hhhhhM0ubh)}(hXThe fw reporter implements `diagnose` and `dump` callbacks. It follows symptoms of fw error such as fw syndrome by triggering fw core dump and storing it into the dump buffer. The fw reporter diagnose command can be triggered any time by the user to check current fw status.h](hThe fw reporter implements }(hjNhhhNhNubhtitle_reference)}(h `diagnose`h]hdiagnose}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jVhjNubh and }(hjNhhhNhNubjW)}(h`dump`h]hdump}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jVhjNubh callbacks. It follows symptoms of fw error such as fw syndrome by triggering fw core dump and storing it into the dump buffer. The fw reporter diagnose command can be triggered any time by the user to check current fw status.}(hjNhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhM1hj=hhubh)}(hUser commands examples:h]hUser commands examples:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM7hj=hhubj)}(hhh](j)}(hRCheck fw heath status:: $ devlink health diagnose pci/0000:82:00.0 reporter fw h](h)}(hCheck fw heath status::h]hCheck fw heath status:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM9hjubj\)}(h6$ devlink health diagnose pci/0000:82:00.0 reporter fwh]h6$ devlink health diagnose pci/0000:82:00.0 reporter fw}hjsbah}(h]h ]h"]h$]h&]hhuh1j[hhhM;hjubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(htRead FW core dump if already stored or trigger new one:: $ devlink health dump show pci/0000:82:00.0 reporter fw h](h)}(h8Read FW core dump if already stored or trigger new one::h]h7Read FW core dump if already stored or trigger new one:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM=hjubj\)}(h7$ devlink health dump show pci/0000:82:00.0 reporter fwh]h7$ devlink health dump show pci/0000:82:00.0 reporter fw}hjsbah}(h]h ]h"]h$]h&]hhuh1j[hhhM?hjubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhNubeh}(h]h ]h"]h$]h&]jjjuh1jhhhM9hj=hhubj)}(hThis command can run only on the PF which has fw tracer ownership, running it on other PF or any VF will return "Operation not permitted".h]h)}(hThis command can run only on the PF which has fw tracer ownership, running it on other PF or any VF will return "Operation not permitted".h]hThis command can run only on the PF which has fw tracer ownership, running it on other PF or any VF will return “Operation not permitted”.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMBhjubah}(h]h ]h"]h$]h&]uh1jhj=hhhhhNubeh}(h] fw-reporterah ]h"] fw reporterah$]h&]uh1hhjc hhhhhM0ubh)}(hhh](h)}(hfw fatal reporterh]hfw fatal reporter}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhMFubh)}(hXThe fw fatal reporter implements `dump` and `recover` callbacks. It follows fatal errors indications by CR-space dump and recover flow. The CR-space dump uses vsc interface which is valid even if the FW command interface is not functional, which is the case in most FW fatal errors. The recover function runs recover flow which reloads the driver and triggers fw reset if needed. On firmware error, the health buffer is dumped into the dmesg. The log level is derived from the error's severity (given in health buffer).h](h!The fw fatal reporter implements }(hjhhhNhNubjW)}(h`dump`h]hdump}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jVhjubh and }(hjhhhNhNubjW)}(h `recover`h]hrecover}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jVhjubhX callbacks. It follows fatal errors indications by CR-space dump and recover flow. The CR-space dump uses vsc interface which is valid even if the FW command interface is not functional, which is the case in most FW fatal errors. The recover function runs recover flow which reloads the driver and triggers fw reset if needed. On firmware error, the health buffer is dumped into the dmesg. The log level is derived from the error’s severity (given in health buffer).}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMGhjhhubh)}(hUser commands examples:h]hUser commands examples:}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMPhjhhubj)}(hhh](j)}(h^Run fw recover flow manually:: $ devlink health recover pci/0000:82:00.0 reporter fw_fatal h](h)}(hRun fw recover flow manually::h]hRun fw recover flow manually:}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMRhjYubj\)}(h;$ devlink health recover pci/0000:82:00.0 reporter fw_fatalh]h;$ devlink health recover pci/0000:82:00.0 reporter fw_fatal}hjksbah}(h]h ]h"]h$]h&]hhuh1j[hhhMThjYubeh}(h]h ]h"]h$]h&]uh1jhjVhhhhhNubj)}(h~Read FW CR-space dump if already stored or trigger new one:: $ devlink health dump show pci/0000:82:00.1 reporter fw_fatal h](h)}(hnumber of times an EQ mapped to completion events was overrun.h]h>number of times an EQ mapped to completion events was overrun.}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMohj-ubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hhhMohjubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jhj hhhNhNubj)}(hXquota_exceeded_command number of commands issued and failed due to quota exceeded.h]j )}(hhh]j )}(hRquota_exceeded_command number of commands issued and failed due to quota exceeded.h](j )}(hquota_exceeded_commandh]hquota_exceeded_command}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1j hhhMqhj]ubj )}(hhh]h)}(h;number of commands issued and failed due to quota exceeded.h]h;number of commands issued and failed due to quota exceeded.}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMrhjoubah}(h]h ]h"]h$]h&]uh1j hj]ubeh}(h]h ]h"]h$]h&]uh1j hhhMqhjZubah}(h]h ]h"]h$]h&]uh1j hjVubah}(h]h ]h"]h$]h&]uh1jhj hhhNhNubj)}(hninvalid_command number of commands issued and failed dues to any reason other than quota exceeded.h]j )}(hhh]j )}(hbinvalid_command number of commands issued and failed dues to any reason other than quota exceeded.h](j )}(hinvalid_commandh]hinvalid_command}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hhhMthjubj )}(hhh]h)}(hRnumber of commands issued and failed dues to any reason other than quota exceeded.h]hRnumber of commands issued and failed dues to any reason other than quota exceeded.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMthjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hhhMthjubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jhj hhhNhNubj)}(hnic_receive_steering_discard number of packets that completed RX flow steering but were discarded due to a mismatch in flow table.h]j )}(hhh]j )}(hnic_receive_steering_discard number of packets that completed RX flow steering but were discarded due to a mismatch in flow table.h](j )}(hnic_receive_steering_discardh]hnic_receive_steering_discard}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hhhMwhjubj )}(hhh]h)}(henumber of packets that completed RX flow steering but were discarded due to a mismatch in flow table.h]henumber of packets that completed RX flow steering but were discarded due to a mismatch in flow table.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMwhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hhhMwhjubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jhj hhhNhNubj)}(hgenerated_pkt_steering_fail number of packets generated by the VNIC experiencing unexpected steering failure (at any point in steering flow).h]j )}(hhh]j )}(hgenerated_pkt_steering_fail number of packets generated by the VNIC experiencing unexpected steering failure (at any point in steering flow).h](j )}(hgenerated_pkt_steering_failh]hgenerated_pkt_steering_fail}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1j hhhMzhj#ubj )}(hhh]h)}(hqnumber of packets generated by the VNIC experiencing unexpected steering failure (at any point in steering flow).&h]hqnumber of packets generated by the VNIC experiencing unexpected steering failure (at any point in steering flow).}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMzhj5ubah}(h]h ]h"]h$]h&]uh1j hj#ubeh}(h]h ]h"]h$]h&]uh1j hhhMzhj ubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jhj hhhNhNubj)}(hhandled_pkt_steering_fail number of packets handled by the VNIC experiencing unexpected steering failure (at any point in steering flow owned by the VNIC, including the FDB for the eswitch owner).h]j )}(hhh]j )}(hhandled_pkt_steering_fail number of packets handled by the VNIC experiencing unexpected steering failure (at any point in steering flow owned by the VNIC, including the FDB for the eswitch owner).h](j )}(hhandled_pkt_steering_failh]hhandled_pkt_steering_fail}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1j hhhM~hjeubj )}(hhh]h)}(hnumber of packets handled by the VNIC experiencing unexpected steering failure (at any point in steering flow owned by the VNIC, including the FDB for the eswitch owner).h]hnumber of packets handled by the VNIC experiencing unexpected steering failure (at any point in steering flow owned by the VNIC, including the FDB for the eswitch owner).}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM}hjwubah}(h]h ]h"]h$]h&]uh1j hjeubeh}(h]h ]h"]h$]h&]uh1j hhhM~hjbubah}(h]h ]h"]h$]h&]uh1j hj^ubah}(h]h ]h"]h$]h&]uh1jhj hhhNhNubj)}(hicm_consumption amount of Interconnect Host Memory (ICM) consumed by the vnic in granularity of 4KB. ICM is host memory allocated by SW upon HCA request and is used for storing data structures that control HCA operation.h]j )}(hhh]j )}(hicm_consumption amount of Interconnect Host Memory (ICM) consumed by the vnic in granularity of 4KB. ICM is host memory allocated by SW upon HCA request and is used for storing data structures that control HCA operation.h](j )}(hicm_consumptionh]hicm_consumption}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hhhMhjubj )}(hhh]h)}(hamount of Interconnect Host Memory (ICM) consumed by the vnic in granularity of 4KB. ICM is host memory allocated by SW upon HCA request and is used for storing data structures that control HCA operation.h]hamount of Interconnect Host Memory (ICM) consumed by the vnic in granularity of 4KB. ICM is host memory allocated by SW upon HCA request and is used for storing data structures that control HCA operation.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hhhMhjubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jhj hhhNhNubj)}(hZbar_uar_access number of WRITE or READ access operations to the UAR on the PCIe BAR.h]j )}(hhh]j )}(hTbar_uar_access number of WRITE or READ access operations to the UAR on the PCIe BAR.h](j )}(hbar_uar_accessh]hbar_uar_access}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hhhMhjubj )}(hhh]h)}(hEnumber of WRITE or READ access operations to the UAR on the PCIe BAR.h]hEnumber of WRITE or READ access operations to the UAR on the PCIe BAR.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hhhMhjubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1jhj hhhNhNubj)}(hXodp_local_triggered_page_fault number of locally-triggered page-faults due to ODP.h]j )}(hhh]j )}(hRodp_local_triggered_page_fault number of locally-triggered page-faults due to ODP.h](j )}(hodp_local_triggered_page_faulth]hodp_local_triggered_page_fault}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1j hhhMhj+ubj )}(hhh]h)}(h3number of locally-triggered page-faults due to ODP.h]h3number of locally-triggered page-faults due to ODP.}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj=ubah}(h]h ]h"]h$]h&]uh1j hj+ubeh}(h]h ]h"]h$]h&]uh1j hhhMhj(ubah}(h]h ]h"]h$]h&]uh1j hj$ubah}(h]h ]h"]h$]h&]uh1jhj hhhNhNubj)}(hZodp_remote_triggered_page_fault number of remotly-triggered page-faults due to ODP. h]j )}(hhh]j )}(hTodp_remote_triggered_page_fault number of remotly-triggered page-faults due to ODP. h](j )}(hodp_remote_triggered_page_faulth]hodp_remote_triggered_page_fault}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1j hhhMhjmubj )}(hhh]h)}(h3number of remotly-triggered page-faults due to ODP.h]h3number of remotly-triggered page-faults due to ODP.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1j hjmubeh}(h]h ]h"]h$]h&]uh1j hhhMhjjubah}(h]h ]h"]h$]h&]uh1j hjfubah}(h]h ]h"]h$]h&]uh1jhj hhhNhNubeh}(h]h ]h"]h$]h&]jjjuh1jhhhMehjhhubh)}(hUser commands examples:h]hUser commands examples:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjhhubj)}(hhh](j)}(h_Diagnose PF/VF vnic counters:: $ devlink health diagnose pci/0000:82:00.1 reporter vnic h](h)}(hDiagnose PF/VF vnic counters::h]hDiagnose PF/VF vnic counters:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubj\)}(h8$ devlink health diagnose pci/0000:82:00.1 reporter vnich]h8$ devlink health diagnose pci/0000:82:00.1 reporter vnic}hjsbah}(h]h ]h"]h$]h&]hhuh1j[hhhMhjubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(hDiagnose representor vnic counters (performed by supplying devlink port of the representor, which can be obtained via devlink port command):: $ devlink health diagnose pci/0000:82:00.1/65537 reporter vnic h](h)}(hDiagnose representor vnic counters (performed by supplying devlink port of the representor, which can be obtained via devlink port command)::h]hDiagnose representor vnic counters (performed by supplying devlink port of the representor, which can be obtained via devlink port command):}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubj\)}(h>$ devlink health diagnose pci/0000:82:00.1/65537 reporter vnich]h>$ devlink health diagnose pci/0000:82:00.1/65537 reporter vnic}hjsbah}(h]h ]h"]h$]h&]hhuh1j[hhhMhjubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhNubeh}(h]h ]h"]h$]h&]jjjuh1jhhhMhjhhubj)}(hMThis command can run over all interfaces such as PF/VF and representor ports.h]h)}(hjh]hMThis command can run over all interfaces such as PF/VF and representor ports.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jhjhhhhhNubeh}(h] vnic-reporterah ]h"] vnic reporterah$]h&]uh1hhjc hhhhhM^ubeh}(h]health-reportersah ]h"]health reportersah$]h&]uh1hhhhhhhhKubeh}(h]mlx5-devlink-supportah ]h"]mlx5 devlink supportah$]h&]uh1hhhhhhhhKubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksjGfootnote_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_handlerjberror_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:j j j` j] j5j2jjj:j7jjjjj-j*u nametypes}(j=j j` j5jj:jjj-uh}(j:hj hj] j j2jc jjt j7jjj=jjj*jj$jj jjV j u footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}jpKsRparse_messages]transform_messages] transformerN include_log] decorationNhhub.