ksphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftargetA/translations/zh_CN/networking/device_drivers/ethernet/meta/fbnicmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftargetA/translations/zh_TW/networking/device_drivers/ethernet/meta/fbnicmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftargetA/translations/it_IT/networking/device_drivers/ethernet/meta/fbnicmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftargetA/translations/ja_JP/networking/device_drivers/ethernet/meta/fbnicmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftargetA/translations/ko_KR/networking/device_drivers/ethernet/meta/fbnicmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftargetA/translations/sp_SP/networking/device_drivers/ethernet/meta/fbnicmodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhcomment)}(h!SPDX-License-Identifier: GPL-2.0+h]h!SPDX-License-Identifier: GPL-2.0+}hhsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1hhhhhh[/var/lib/git/docbuild/linux/Documentation/networking/device_drivers/ethernet/meta/fbnic.rsthKubhsection)}(hhh](htitle)}(h%Meta Platforms Host Network Interfaceh]h%Meta Platforms Host Network Interface}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hFirmware Versionsh]hFirmware Versions}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh paragraph)}(hTfbnic has three components stored on the flash which are provided in one PLDM image:h]hTfbnic has three components stored on the flash which are provided in one PLDM image:}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hhhhubhenumerated_list)}(hhh](h list_item)}(hfw - The control firmware used to view and modify firmware settings, request firmware actions, and retrieve firmware counters outside of the data path. This is the firmware which fbnic_fw.c interacts with.h]h)}(hfw - The control firmware used to view and modify firmware settings, request firmware actions, and retrieve firmware counters outside of the data path. This is the firmware which fbnic_fw.c interacts with.h]hfw - The control firmware used to view and modify firmware settings, request firmware actions, and retrieve firmware counters outside of the data path. This is the firmware which fbnic_fw.c interacts with.}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hhubah}(h]h ]h"]h$]h&]uh1hhhhhhhhNubh)}(hbootloader - The firmware which validate firmware security and control basic operations including loading and updating the firmware. This is also known as the cmrt firmware.h]h)}(hbootloader - The firmware which validate firmware security and control basic operations including loading and updating the firmware. This is also known as the cmrt firmware.h]hbootloader - The firmware which validate firmware security and control basic operations including loading and updating the firmware. This is also known as the cmrt firmware.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1hhhhhhhhNubh)}(hCundi - This is the UEFI driver which is based on the Linux driver. h]h)}(hBundi - This is the UEFI driver which is based on the Linux driver.h]hBundi - This is the UEFI driver which is based on the Linux driver.}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj!ubah}(h]h ]h"]h$]h&]uh1hhhhhhhhNubeh}(h]h ]h"]h$]h&]enumtypearabicprefixhsuffix.uh1hhhhhhhhK ubh)}(hXLfbnic stores two copies of these three components on flash. This allows fbnic to fall back to an older version of firmware automatically in case firmware fails to boot. Version information for both is provided as running and stored. The undi is only provided in stored as it is not actively running once the Linux driver takes over.h]hXLfbnic stores two copies of these three components on flash. This allows fbnic to fall back to an older version of firmware automatically in case firmware fails to boot. Version information for both is provided as running and stored. The undi is only provided in stored as it is not actively running once the Linux driver takes over.}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hdevlink dev info provides version information for all three components. In addition to the version the hg commit hash of the build is included as a separate entry.h]hdevlink dev info provides version information for all three components. In addition to the version the hg commit hash of the build is included as a separate entry.}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubeh}(h]firmware-versionsah ]h"]firmware versionsah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(h Configurationh]h Configuration}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhhK ubh)}(hhh](h)}(hRingparams (ethtool -g / -G)h]hRingparams (ethtool -g / -G)}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjyhhhhhK#ubh)}(hfbnic has two submission (host -> device) rings for every completion (device -> host) ring. The three ring objects together form a single "queue" as used by higher layer software (a Rx, or a Tx queue).h]hfbnic has two submission (host -> device) rings for every completion (device -> host) ring. The three ring objects together form a single “queue” as used by higher layer software (a Rx, or a Tx queue).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK%hjyhhubh)}(hXFor Rx the two submission rings are used to pass empty pages to the NIC. Ring 0 is the Header Page Queue (HPQ), NIC will use its pages to place L2-L4 headers (or full frames if frame is not header-data split). Ring 1 is the Payload Page Queue (PPQ) and used for packet payloads. The completion ring is used to receive packet notifications / metadata. ethtool ``rx`` ringparam maps to the size of the completion ring, ``rx-mini`` to the HPQ, and ``rx-jumbo`` to the PPQ.h](hXgFor Rx the two submission rings are used to pass empty pages to the NIC. Ring 0 is the Header Page Queue (HPQ), NIC will use its pages to place L2-L4 headers (or full frames if frame is not header-data split). Ring 1 is the Payload Page Queue (PPQ) and used for packet payloads. The completion ring is used to receive packet notifications / metadata. ethtool }(hjhhhNhNubhliteral)}(h``rx``h]hrx}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh4 ringparam maps to the size of the completion ring, }(hjhhhNhNubj)}(h ``rx-mini``h]hrx-mini}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh to the HPQ, and }(hjhhhNhNubj)}(h ``rx-jumbo``h]hrx-jumbo}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh to the PPQ.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK)hjyhhubh)}(hX<For Tx both submission rings can be used to submit packets, the completion ring carries notifications for both. fbnic uses one of the submission rings for normal traffic from the stack and the second one for XDP frames. ethtool ``tx`` ringparam controls both the size of the submission rings and the completion ring.h](hFor Tx both submission rings can be used to submit packets, the completion ring carries notifications for both. fbnic uses one of the submission rings for normal traffic from the stack and the second one for XDP frames. ethtool }(hjhhhNhNubj)}(h``tx``h]htx}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhR ringparam controls both the size of the submission rings and the completion ring.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK1hjyhhubh)}(hXHEvery single entry on the HPQ and PPQ (``rx-mini``, ``rx-jumbo``) corresponds to 4kB of allocated memory, while entries on the remaining rings are in units of descriptors (8B). The ideal ratio of submission and completion ring sizes will depend on the workload, as for small packets multiple packets will fit into a single page.h](h'Every single entry on the HPQ and PPQ (}(hjhhhNhNubj)}(h ``rx-mini``h]hrx-mini}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh, }(hjhhhNhNubj)}(h ``rx-jumbo``h]hrx-jumbo}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhX) corresponds to 4kB of allocated memory, while entries on the remaining rings are in units of descriptors (8B). The ideal ratio of submission and completion ring sizes will depend on the workload, as for small packets multiple packets will fit into a single page.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK7hjyhhubeh}(h]ringparams-ethtool-g-gah ]h"]ringparams (ethtool -g / -g)ah$]h&]uh1hhjhhhhhhK#ubeh}(h] configurationah ]h"] configurationah$]h&]uh1hhhhhhhhK ubh)}(hhh](h)}(hUpgrading Firmwareh]hUpgrading Firmware}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhj@hhhhhK>ubh)}(hfbnic supports updating firmware using signed PLDM images with devlink dev flash. PLDM images are written into the flash. Flashing does not interrupt the operation of the device.h]hfbnic supports updating firmware using signed PLDM images with devlink dev flash. PLDM images are written into the flash. Flashing does not interrupt the operation of the device.}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK@hj@hhubh)}(hOn host boot the latest UEFI driver is always used, no explicit activation is required. Firmware activation is required to run new control firmware. cmrt firmware can only be activated by power cycling the NIC.h]hOn host boot the latest UEFI driver is always used, no explicit activation is required. Firmware activation is required to run new control firmware. cmrt firmware can only be activated by power cycling the NIC.}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKDhj@hhubeh}(h]upgrading-firmwareah ]h"]upgrading firmwareah$]h&]uh1hhhhhhhhK>ubh)}(hhh](h)}(hHealth reportersh]hHealth reporters}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjuhhhhhKIubh)}(hhh](h)}(h fw reporterh]h fw reporter}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKLubh)}(hX\The ``fw`` health reporter tracks FW crashes. Dumping the reporter will show the core dump of the most recent FW crash, and if no FW crash has happened since power cycle - a snapshot of the FW memory. Diagnose callback shows FW uptime based on the most recently received heartbeat message (the crashes are detected by checking if uptime goes down).h](hThe }(hjhhhNhNubj)}(h``fw``h]hfw}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhXR health reporter tracks FW crashes. Dumping the reporter will show the core dump of the most recent FW crash, and if no FW crash has happened since power cycle - a snapshot of the FW memory. Diagnose callback shows FW uptime based on the most recently received heartbeat message (the crashes are detected by checking if uptime goes down).}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKNhjhhubeh}(h] fw-reporterah ]h"] fw reporterah$]h&]uh1hhjuhhhhhKLubh)}(hhh](h)}(h otp reporterh]h otp reporter}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKUubh)}(hOTP memory ("fuses") are used for secure boot and anti-rollback protection. The OTP memory is ECC protected, ECC errors indicate either manufacturing defect or part deteriorating with age.h]hOTP memory (“fuses”) are used for secure boot and anti-rollback protection. The OTP memory is ECC protected, ECC errors indicate either manufacturing defect or part deteriorating with age.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKWhjhhubeh}(h] otp-reporterah ]h"] otp reporterah$]h&]uh1hhjuhhhhhKUubeh}(h]health-reportersah ]h"]health reportersah$]h&]uh1hhhhhhhhKIubh)}(hhh](h)}(h Statisticsh]h Statistics}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhK\ubh)}(hhh](h)}(hTX MAC Interfaceh]hTX MAC Interface}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhK_ubh block_quote)}(hX)- ``ptp_illegal_req``: packets sent to the NIC with PTP request bit set but routed to BMC/FW - ``ptp_good_ts``: packets successfully routed to MAC with PTP request bit set - ``ptp_bad_ts``: packets destined for MAC with PTP request bit set but aborted because of some error (e.g., DMA read error) h]h bullet_list)}(hhh](h)}(hZ``ptp_illegal_req``: packets sent to the NIC with PTP request bit set but routed to BMC/FWh]h)}(hjh](j)}(h``ptp_illegal_req``h]hptp_illegal_req}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhG: packets sent to the NIC with PTP request bit set but routed to BMC/FW}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKahjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hL``ptp_good_ts``: packets successfully routed to MAC with PTP request bit seth]h)}(hjBh](j)}(h``ptp_good_ts``h]h ptp_good_ts}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjDubh=: packets successfully routed to MAC with PTP request bit set}(hjDhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKbhj@ubah}(h]h ]h"]h$]h&]uh1hhjubh)}(h{``ptp_bad_ts``: packets destined for MAC with PTP request bit set but aborted because of some error (e.g., DMA read error) h]h)}(hz``ptp_bad_ts``: packets destined for MAC with PTP request bit set but aborted because of some error (e.g., DMA read error)h](j)}(h``ptp_bad_ts``h]h ptp_bad_ts}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjiubhl: packets destined for MAC with PTP request bit set but aborted because of some error (e.g., DMA read error)}(hjihhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKchjeubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]bullet-uh1jhhhKahjubah}(h]h ]h"]h$]h&]uh1jhhhKahjhhubeh}(h]tx-mac-interfaceah ]h"]tx mac interfaceah$]h&]uh1hhjhhhhhK_ubh)}(hhh](h)}(h"TX Extension (TEI) Interface (TTI)h]h"TX Extension (TEI) Interface (TTI)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKfubj)}(hX3- ``tti_cm_drop``: control messages dropped at the TX Extension (TEI) Interface because of credit starvation - ``tti_frame_drop``: packets dropped at the TX Extension (TEI) Interface because of credit starvation - ``tti_tbi_drop``: packets dropped at the TX BMC Interface (TBI) because of credit starvation h]j)}(hhh](h)}(hj``tti_cm_drop``: control messages dropped at the TX Extension (TEI) Interface because of credit starvationh]h)}(hjh](j)}(h``tti_cm_drop``h]h tti_cm_drop}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh[: control messages dropped at the TX Extension (TEI) Interface because of credit starvation}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhhjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hd``tti_frame_drop``: packets dropped at the TX Extension (TEI) Interface because of credit starvationh]h)}(hjh](j)}(h``tti_frame_drop``h]htti_frame_drop}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhR: packets dropped at the TX Extension (TEI) Interface because of credit starvation}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKihjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(h]``tti_tbi_drop``: packets dropped at the TX BMC Interface (TBI) because of credit starvation h]h)}(h\``tti_tbi_drop``: packets dropped at the TX BMC Interface (TBI) because of credit starvationh](j)}(h``tti_tbi_drop``h]h tti_tbi_drop}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhL: packets dropped at the TX BMC Interface (TBI) because of credit starvation}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKjhjubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]jjuh1jhhhKhhjubah}(h]h ]h"]h$]h&]uh1jhhhKhhjhhubeh}(h]tx-extension-tei-interface-ttiah ]h"]"tx extension (tei) interface (tti)ah$]h&]uh1hhjhhhhhKfubh)}(hhh](h)}(hRXB (RX Buffer) Enqueueh]hRXB (RX Buffer) Enqueue}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj=hhhhhKmubj)}(hX- ``rxb_integrity_err[i]``: frames enqueued with integrity errors (e.g., multi-bit ECC errors) on RXB input i - ``rxb_mac_err[i]``: frames enqueued with MAC end-of-frame errors (e.g., bad FCS) on RXB input i - ``rxb_parser_err[i]``: frames experienced RPC parser errors - ``rxb_frm_err[i]``: frames experienced signaling errors (e.g., missing end-of-packet/start-of-packet) on RXB input i - ``rxb_drbo[i]_frames``: frames received at RXB input i - ``rxb_drbo[i]_bytes``: bytes received at RXB input i h]j)}(hhh](h)}(hk``rxb_integrity_err[i]``: frames enqueued with integrity errors (e.g., multi-bit ECC errors) on RXB input ih]h)}(hjWh](j)}(h``rxb_integrity_err[i]``h]hrxb_integrity_err[i]}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjYubhS: frames enqueued with integrity errors (e.g., multi-bit ECC errors) on RXB input i}(hjYhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKohjUubah}(h]h ]h"]h$]h&]uh1hhjRubh)}(h_``rxb_mac_err[i]``: frames enqueued with MAC end-of-frame errors (e.g., bad FCS) on RXB input ih]h)}(hj|h](j)}(h``rxb_mac_err[i]``h]hrxb_mac_err[i]}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj~ubhM: frames enqueued with MAC end-of-frame errors (e.g., bad FCS) on RXB input i}(hj~hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKphjzubah}(h]h ]h"]h$]h&]uh1hhjRubh)}(h;``rxb_parser_err[i]``: frames experienced RPC parser errorsh]h)}(hjh](j)}(h``rxb_parser_err[i]``h]hrxb_parser_err[i]}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh&: frames experienced RPC parser errors}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKqhjubah}(h]h ]h"]h$]h&]uh1hhjRubh)}(ht``rxb_frm_err[i]``: frames experienced signaling errors (e.g., missing end-of-packet/start-of-packet) on RXB input ih]h)}(hjh](j)}(h``rxb_frm_err[i]``h]hrxb_frm_err[i]}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhb: frames experienced signaling errors (e.g., missing end-of-packet/start-of-packet) on RXB input i}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKrhjubah}(h]h ]h"]h$]h&]uh1hhjRubh)}(h6``rxb_drbo[i]_frames``: frames received at RXB input ih]h)}(hjh](j)}(h``rxb_drbo[i]_frames``h]hrxb_drbo[i]_frames}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh : frames received at RXB input i}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKshjubah}(h]h ]h"]h$]h&]uh1hhjRubh)}(h5``rxb_drbo[i]_bytes``: bytes received at RXB input i h]h)}(h4``rxb_drbo[i]_bytes``: bytes received at RXB input ih](j)}(h``rxb_drbo[i]_bytes``h]hrxb_drbo[i]_bytes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh: bytes received at RXB input i}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKthjubah}(h]h ]h"]h$]h&]uh1hhjRubeh}(h]h ]h"]h$]h&]jjuh1jhhhKohjNubah}(h]h ]h"]h$]h&]uh1jhhhKohj=hhubeh}(h]rxb-rx-buffer-enqueueah ]h"]rxb (rx buffer) enqueueah$]h&]uh1hhjhhhhhKmubh)}(hhh](h)}(hRXB (RX Buffer) FIFOh]hRXB (RX Buffer) FIFO}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjHhhhhhKwubj)}(hX- ``rxb_fifo[i]_drop``: transitions into the drop state on RXB pool i - ``rxb_fifo[i]_dropped_frames``: frames dropped on RXB pool i - ``rxb_fifo[i]_ecn``: transitions into the ECN mark state on RXB pool i - ``rxb_fifo[i]_level``: current occupancy of RXB pool i h]j)}(hhh](h)}(hC``rxb_fifo[i]_drop``: transitions into the drop state on RXB pool ih]h)}(hjbh](j)}(h``rxb_fifo[i]_drop``h]hrxb_fifo[i]_drop}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jhjdubh/: transitions into the drop state on RXB pool i}(hjdhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKyhj`ubah}(h]h ]h"]h$]h&]uh1hhj]ubh)}(h<``rxb_fifo[i]_dropped_frames``: frames dropped on RXB pool ih]h)}(hjh](j)}(h``rxb_fifo[i]_dropped_frames``h]hrxb_fifo[i]_dropped_frames}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh: frames dropped on RXB pool i}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKzhjubah}(h]h ]h"]h$]h&]uh1hhj]ubh)}(hF``rxb_fifo[i]_ecn``: transitions into the ECN mark state on RXB pool ih]h)}(hjh](j)}(h``rxb_fifo[i]_ecn``h]hrxb_fifo[i]_ecn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh3: transitions into the ECN mark state on RXB pool i}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK{hjubah}(h]h ]h"]h$]h&]uh1hhj]ubh)}(h7``rxb_fifo[i]_level``: current occupancy of RXB pool i h]h)}(h6``rxb_fifo[i]_level``: current occupancy of RXB pool ih](j)}(h``rxb_fifo[i]_level``h]hrxb_fifo[i]_level}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh!: current occupancy of RXB pool i}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK|hjubah}(h]h ]h"]h$]h&]uh1hhj]ubeh}(h]h ]h"]h$]h&]jjuh1jhhhKyhjYubah}(h]h ]h"]h$]h&]uh1jhhhKyhjHhhubeh}(h]rxb-rx-buffer-fifoah ]h"]rxb (rx buffer) fifoah$]h&]uh1hhjhhhhhKwubh)}(hhh](h)}(hRXB (RX Buffer) Dequeueh]hRXB (RX Buffer) Dequeue}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hhhhhKubj)}(hX*- ``rxb_intf[i]_frames``: frames sent to the output i - ``rxb_intf[i]_bytes``: bytes sent to the output i - ``rxb_pbuf[i]_frames``: frames sent to output i from the perspective of internal packet buffer - ``rxb_pbuf[i]_bytes``: bytes sent to output i from the perspective of internal packet buffer h]j)}(hhh](h)}(h3``rxb_intf[i]_frames``: frames sent to the output ih]h)}(hj#h](j)}(h``rxb_intf[i]_frames``h]hrxb_intf[i]_frames}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj%ubh: frames sent to the output i}(hj%hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj!ubah}(h]h ]h"]h$]h&]uh1hhjubh)}(h1``rxb_intf[i]_bytes``: bytes sent to the output ih]h)}(hjHh](j)}(h``rxb_intf[i]_bytes``h]hrxb_intf[i]_bytes}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJubh: bytes sent to the output i}(hjJhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjFubah}(h]h ]h"]h$]h&]uh1hhjubh)}(h^``rxb_pbuf[i]_frames``: frames sent to output i from the perspective of internal packet bufferh]h)}(hjmh](j)}(h``rxb_pbuf[i]_frames``h]hrxb_pbuf[i]_frames}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjoubhH: frames sent to output i from the perspective of internal packet buffer}(hjohhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjkubah}(h]h ]h"]h$]h&]uh1hhjubh)}(h]``rxb_pbuf[i]_bytes``: bytes sent to output i from the perspective of internal packet buffer h]h)}(h\``rxb_pbuf[i]_bytes``: bytes sent to output i from the perspective of internal packet bufferh](j)}(h``rxb_pbuf[i]_bytes``h]hrxb_pbuf[i]_bytes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhG: bytes sent to output i from the perspective of internal packet buffer}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]jjuh1jhhhKhjubah}(h]h ]h"]h$]h&]uh1jhhhKhj hhubeh}(h]rxb-rx-buffer-dequeueah ]h"]rxb (rx buffer) dequeueah$]h&]uh1hhjhhhhhKubh)}(hhh](h)}(hRPC (Rx parser)h]hRPC (Rx parser)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubj)}(hX- ``rpc_unkn_etype``: frames containing unknown EtherType - ``rpc_unkn_ext_hdr``: frames containing unknown IPv6 extension header - ``rpc_ipv4_frag``: frames containing IPv4 fragment - ``rpc_ipv6_frag``: frames containing IPv6 fragment - ``rpc_ipv4_esp``: frames with IPv4 ESP encapsulation - ``rpc_ipv6_esp``: frames with IPv6 ESP encapsulation - ``rpc_tcp_opt_err``: frames which encountered TCP option parsing error - ``rpc_out_of_hdr_err``: frames where header was larger than parsable region - ``ovr_size_err``: oversized frames h]j)}(hhh](h)}(h7``rpc_unkn_etype``: frames containing unknown EtherTypeh]h)}(hjh](j)}(h``rpc_unkn_etype``h]hrpc_unkn_etype}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh%: frames containing unknown EtherType}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hE``rpc_unkn_ext_hdr``: frames containing unknown IPv6 extension headerh]h)}(hj h](j)}(h``rpc_unkn_ext_hdr``h]hrpc_unkn_ext_hdr}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh1: frames containing unknown IPv6 extension header}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(h2``rpc_ipv4_frag``: frames containing IPv4 fragmenth]h)}(hj.h](j)}(h``rpc_ipv4_frag``h]h rpc_ipv4_frag}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj0ubh!: frames containing IPv4 fragment}(hj0hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj,ubah}(h]h ]h"]h$]h&]uh1hhjubh)}(h2``rpc_ipv6_frag``: frames containing IPv6 fragmenth]h)}(hjSh](j)}(h``rpc_ipv6_frag``h]h rpc_ipv6_frag}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjUubh!: frames containing IPv6 fragment}(hjUhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjQubah}(h]h ]h"]h$]h&]uh1hhjubh)}(h4``rpc_ipv4_esp``: frames with IPv4 ESP encapsulationh]h)}(hjxh](j)}(h``rpc_ipv4_esp``h]h rpc_ipv4_esp}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjzubh$: frames with IPv4 ESP encapsulation}(hjzhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjvubah}(h]h ]h"]h$]h&]uh1hhjubh)}(h4``rpc_ipv6_esp``: frames with IPv6 ESP encapsulationh]h)}(hjh](j)}(h``rpc_ipv6_esp``h]h rpc_ipv6_esp}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh$: frames with IPv6 ESP encapsulation}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hF``rpc_tcp_opt_err``: frames which encountered TCP option parsing errorh]h)}(hjh](j)}(h``rpc_tcp_opt_err``h]hrpc_tcp_opt_err}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh3: frames which encountered TCP option parsing error}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hK``rpc_out_of_hdr_err``: frames where header was larger than parsable regionh]h)}(hjh](j)}(h``rpc_out_of_hdr_err``h]hrpc_out_of_hdr_err}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh5: frames where header was larger than parsable region}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(h#``ovr_size_err``: oversized frames h]h)}(h"``ovr_size_err``: oversized framesh](j)}(h``ovr_size_err``h]h ovr_size_err}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh: oversized frames}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]jjuh1jhhhKhjubah}(h]h ]h"]h$]h&]uh1jhhhKhjhhubeh}(h] rpc-rx-parserah ]h"]rpc (rx parser)ah$]h&]uh1hhjhhhhhKubh)}(hhh](h)}(hHardware Queuesh]hHardware Queues}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjDhhhhhKubh)}(hhh]h)}(hRX DMA Engine: h]h)}(hRX DMA Engine:h]hRX DMA Engine:}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjXubah}(h]h ]h"]h$]h&]uh1hhjUhhhhhNubah}(h]h ]h"]h$]h&]j?j@jAhjBjCuh1hhjDhhhhhKubj)}(hX- ``rde_[i]_pkt_err``: packets with MAC EOP, RPC parser, RXB truncation, or RDE frame truncation errors. These error are flagged in the packet metadata because of cut-through support but the actual drop happens once PCIE/RDE is reached. - ``rde_[i]_pkt_cq_drop``: packets dropped because RCQ is full - ``rde_[i]_pkt_bdq_drop``: packets dropped because HPQ or PPQ ran out of host buffer h]j)}(hhh](h)}(h``rde_[i]_pkt_err``: packets with MAC EOP, RPC parser, RXB truncation, or RDE frame truncation errors. These error are flagged in the packet metadata because of cut-through support but the actual drop happens once PCIE/RDE is reached.h]h)}(hjh](j)}(h``rde_[i]_pkt_err``h]hrde_[i]_pkt_err}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh: packets with MAC EOP, RPC parser, RXB truncation, or RDE frame truncation errors. These error are flagged in the packet metadata because of cut-through support but the actual drop happens once PCIE/RDE is reached.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj}ubah}(h]h ]h"]h$]h&]uh1hhjzubh)}(h<``rde_[i]_pkt_cq_drop``: packets dropped because RCQ is fullh]h)}(hjh](j)}(h``rde_[i]_pkt_cq_drop``h]hrde_[i]_pkt_cq_drop}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh%: packets dropped because RCQ is full}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhjzubh)}(hT``rde_[i]_pkt_bdq_drop``: packets dropped because HPQ or PPQ ran out of host buffer h]h)}(hS``rde_[i]_pkt_bdq_drop``: packets dropped because HPQ or PPQ ran out of host bufferh](j)}(h``rde_[i]_pkt_bdq_drop``h]hrde_[i]_pkt_bdq_drop}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh;: packets dropped because HPQ or PPQ ran out of host buffer}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhjzubeh}(h]h ]h"]h$]h&]jjuh1jhhhKhjvubah}(h]h ]h"]h$]h&]uh1jhhhKhjDhhubeh}(h]hardware-queuesah ]h"]hardware queuesah$]h&]uh1hhjhhhhhKubh)}(hhh](h)}(hPCIeh]hPCIe}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hhhhhKubh)}(hThe fbnic driver exposes PCIe hardware performance statistics through debugfs (``pcie_stats``). These statistics provide insights into PCIe transaction behavior and potential performance bottlenecks.h](hOThe fbnic driver exposes PCIe hardware performance statistics through debugfs (}(hj hhhNhNubj)}(h``pcie_stats``h]h pcie_stats}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubhj). These statistics provide insights into PCIe transaction behavior and potential performance bottlenecks.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj hhubh)}(hhh](h)}(hX PCIe Transaction Counters: These counters track PCIe transaction activity: - ``pcie_ob_rd_tlp``: Outbound read Transaction Layer Packets count - ``pcie_ob_rd_dword``: DWORDs transferred in outbound read transactions - ``pcie_ob_wr_tlp``: Outbound write Transaction Layer Packets count - ``pcie_ob_wr_dword``: DWORDs transferred in outbound write transactions - ``pcie_ob_cpl_tlp``: Outbound completion TLP count - ``pcie_ob_cpl_dword``: DWORDs transferred in outbound completion TLPs h](h)}(hPCIe Transaction Counters:h]hPCIe Transaction Counters:}(hj9 hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj5 ubhdefinition_list)}(hhh]hdefinition_list_item)}(hXThese counters track PCIe transaction activity: - ``pcie_ob_rd_tlp``: Outbound read Transaction Layer Packets count - ``pcie_ob_rd_dword``: DWORDs transferred in outbound read transactions - ``pcie_ob_wr_tlp``: Outbound write Transaction Layer Packets count - ``pcie_ob_wr_dword``: DWORDs transferred in outbound write transactions - ``pcie_ob_cpl_tlp``: Outbound completion TLP count - ``pcie_ob_cpl_dword``: DWORDs transferred in outbound completion TLPs h](hterm)}(h/These counters track PCIe transaction activity:h]h/These counters track PCIe transaction activity:}(hjT hhhNhNubah}(h]h ]h"]h$]h&]uh1jR hhhKhjN ubh definition)}(hhh]j)}(hhh](h)}(hA``pcie_ob_rd_tlp``: Outbound read Transaction Layer Packets counth]h)}(hjl h](j)}(h``pcie_ob_rd_tlp``h]hpcie_ob_rd_tlp}(hjq hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjn ubh/: Outbound read Transaction Layer Packets count}(hjn hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjj ubah}(h]h ]h"]h$]h&]uh1hhjg ubh)}(hF``pcie_ob_rd_dword``: DWORDs transferred in outbound read transactionsh]h)}(hj h](j)}(h``pcie_ob_rd_dword``h]hpcie_ob_rd_dword}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh2: DWORDs transferred in outbound read transactions}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1hhjg ubh)}(hB``pcie_ob_wr_tlp``: Outbound write Transaction Layer Packets counth]h)}(hj h](j)}(h``pcie_ob_wr_tlp``h]hpcie_ob_wr_tlp}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh0: Outbound write Transaction Layer Packets count}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1hhjg ubh)}(hG``pcie_ob_wr_dword``: DWORDs transferred in outbound write transactionsh]h)}(hG``pcie_ob_wr_dword``: DWORDs transferred in outbound write transactionsh](j)}(h``pcie_ob_wr_dword``h]hpcie_ob_wr_dword}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh3: DWORDs transferred in outbound write transactions}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1hhjg ubh)}(h2``pcie_ob_cpl_tlp``: Outbound completion TLP counth]h)}(hj h](j)}(h``pcie_ob_cpl_tlp``h]hpcie_ob_cpl_tlp}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh: Outbound completion TLP count}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1hhjg ubh)}(hF``pcie_ob_cpl_dword``: DWORDs transferred in outbound completion TLPs h]h)}(hE``pcie_ob_cpl_dword``: DWORDs transferred in outbound completion TLPsh](j)}(h``pcie_ob_cpl_dword``h]hpcie_ob_cpl_dword}(hj, hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj( ubh0: DWORDs transferred in outbound completion TLPs}(hj( hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj$ ubah}(h]h ]h"]h$]h&]uh1hhjg ubeh}(h]h ]h"]h$]h&]jjuh1jhhhKhjd ubah}(h]h ]h"]h$]h&]uh1jb hjN ubeh}(h]h ]h"]h$]h&]uh1jL hhhKhjI ubah}(h]h ]h"]h$]h&]uh1jG hj5 ubeh}(h]h ]h"]h$]h&]uh1hhj2 hhhNhNubh)}(hXiPCIe Resource Monitoring: These counters indicate PCIe resource exhaustion events: - ``pcie_ob_rd_no_tag``: Read requests dropped due to tag unavailability - ``pcie_ob_rd_no_cpl_cred``: Read requests dropped due to completion credit exhaustion - ``pcie_ob_rd_no_np_cred``: Read requests dropped due to non-posted credit exhaustion h](h)}(hPCIe Resource Monitoring:h]hPCIe Resource Monitoring:}(hjl hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjh ubjH )}(hhh]jM )}(hX5These counters indicate PCIe resource exhaustion events: - ``pcie_ob_rd_no_tag``: Read requests dropped due to tag unavailability - ``pcie_ob_rd_no_cpl_cred``: Read requests dropped due to completion credit exhaustion - ``pcie_ob_rd_no_np_cred``: Read requests dropped due to non-posted credit exhaustion h](jS )}(h8These counters indicate PCIe resource exhaustion events:h]h8These counters indicate PCIe resource exhaustion events:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jR hhhKhj} ubjc )}(hhh]j)}(hhh](h)}(hF``pcie_ob_rd_no_tag``: Read requests dropped due to tag unavailabilityh]h)}(hj h](j)}(h``pcie_ob_rd_no_tag``h]hpcie_ob_rd_no_tag}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh1: Read requests dropped due to tag unavailability}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1hhj ubh)}(hU``pcie_ob_rd_no_cpl_cred``: Read requests dropped due to completion credit exhaustionh]h)}(hU``pcie_ob_rd_no_cpl_cred``: Read requests dropped due to completion credit exhaustionh](j)}(h``pcie_ob_rd_no_cpl_cred``h]hpcie_ob_rd_no_cpl_cred}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh;: Read requests dropped due to completion credit exhaustion}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1hhj ubh)}(hU``pcie_ob_rd_no_np_cred``: Read requests dropped due to non-posted credit exhaustion h]h)}(hT``pcie_ob_rd_no_np_cred``: Read requests dropped due to non-posted credit exhaustionh](j)}(h``pcie_ob_rd_no_np_cred``h]hpcie_ob_rd_no_np_cred}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh;: Read requests dropped due to non-posted credit exhaustion}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1hhj ubeh}(h]h ]h"]h$]h&]jjuh1jhhhKhj ubah}(h]h ]h"]h$]h&]uh1jb hj} ubeh}(h]h ]h"]h$]h&]uh1jL hhhKhjz ubah}(h]h ]h"]h$]h&]uh1jG hjh ubeh}(h]h ]h"]h$]h&]uh1hhj2 hhhNhNubeh}(h]h ]h"]h$]h&]j?j@jAhjBjCuh1hhj hhhhhKubeh}(h]pcieah ]h"]pcieah$]h&]uh1hhjhhhhhKubh)}(hhh](h)}(hXDP Length Error:h]hXDP Length Error:}(hj5 hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj2 hhhhhKubh)}(hFor XDP programs without frags support, fbnic tries to make sure that MTU fits into a single buffer. If an oversized frame is received and gets fragmented, it is dropped and the following netlink counters are updatedh]hFor XDP programs without frags support, fbnic tries to make sure that MTU fits into a single buffer. If an oversized frame is received and gets fragmented, it is dropped and the following netlink counters are updated}(hjC hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj2 hhubj)}(h- ``rx-length``: number of frames dropped due to lack of fragmentation support in the attached XDP program - ``rx-errors``: total number of packets with errors received on the interfaceh]j)}(hhh](h)}(hh``rx-length``: number of frames dropped due to lack of fragmentation support in the attached XDP programh]h)}(hh``rx-length``: number of frames dropped due to lack of fragmentation support in the attached XDP programh](j)}(h ``rx-length``h]h rx-length}(hj` hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj\ ubh[: number of frames dropped due to lack of fragmentation support in the attached XDP program}(hj\ hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjX ubah}(h]h ]h"]h$]h&]uh1hhjU ubh)}(hL``rx-errors``: total number of packets with errors received on the interfaceh]h)}(hj h](j)}(h ``rx-errors``h]h rx-errors}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh?: total number of packets with errors received on the interface}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj~ ubah}(h]h ]h"]h$]h&]uh1hhjU ubeh}(h]h ]h"]h$]h&]jjuh1jhhhKhjQ ubah}(h]h ]h"]h$]h&]uh1jhhhKhj2 hhubeh}(h]xdp-length-errorah ]h"]xdp length error:ah$]h&]uh1hhjhhhhhKubeh}(h] statisticsah ]h"] statisticsah$]h&]uh1hhhhhhhhK\ubeh}(h]%meta-platforms-host-network-interfaceah ]h"]%meta platforms host network interfaceah$]h&]uh1hhhhhhhhKubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_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 jejbj=j:j5j2jrjojjjjjjj j jjj:j7jEjBjjjjjAj>jjj/ j, j j u nametypes}(j jej=j5jrjjjj jj:jEjjjAjj/ j uh}(j hjbhj:jhj2jyjoj@jjujjjjj jjjj7jjBj=jjHjj j>jjjDj, j j j2 u footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}Rparse_messages]transform_messages] transformerN include_log] decorationNhhub.