sphinx.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)}(h Statisticsh]h Statistics}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjuhhhhhKIubh)}(hhh](h)}(hTX MAC Interfaceh]hTX MAC Interface}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKLubh 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}(hjhhhNhNubah}(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&]uh1hhhhKNhjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hL``ptp_good_ts``: packets successfully routed to MAC with PTP request bit seth]h)}(hjh](j)}(h``ptp_good_ts``h]h ptp_good_ts}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh=: packets successfully routed to MAC with PTP request bit set}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKOhjubah}(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}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhl: packets destined for MAC with PTP request bit set but aborted because of some error (e.g., DMA read error)}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKPhjubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]bullet-uh1jhhhKNhjubah}(h]h ]h"]h$]h&]uh1jhhhKNhjhhubeh}(h]tx-mac-interfaceah ]h"]tx mac interfaceah$]h&]uh1hhjuhhhhhKLubh)}(hhh](h)}(h"TX Extension (TEI) Interface (TTI)h]h"TX Extension (TEI) Interface (TTI)}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj(hhhhhKSubj)}(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)}(hjBh](j)}(h``tti_cm_drop``h]h tti_cm_drop}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjDubh[: control messages dropped at the TX Extension (TEI) Interface because of credit starvation}(hjDhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKUhj@ubah}(h]h ]h"]h$]h&]uh1hhj=ubh)}(hd``tti_frame_drop``: packets dropped at the TX Extension (TEI) Interface because of credit starvationh]h)}(hjgh](j)}(h``tti_frame_drop``h]htti_frame_drop}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjiubhR: packets dropped at the TX Extension (TEI) Interface because of credit starvation}(hjihhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKVhjeubah}(h]h ]h"]h$]h&]uh1hhj=ubh)}(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}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhL: packets dropped at the TX BMC Interface (TBI) because of credit starvation}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKWhjubah}(h]h ]h"]h$]h&]uh1hhj=ubeh}(h]h ]h"]h$]h&]jjuh1jhhhKUhj9ubah}(h]h ]h"]h$]h&]uh1jhhhKUhj(hhubeh}(h]tx-extension-tei-interface-ttiah ]h"]"tx extension (tei) interface (tti)ah$]h&]uh1hhjuhhhhhKSubh)}(hhh](h)}(hRXB (RX Buffer) Enqueueh]hRXB (RX Buffer) Enqueue}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKZubj)}(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)}(hjh](j)}(h``rxb_integrity_err[i]``h]hrxb_integrity_err[i]}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhS: frames enqueued with integrity errors (e.g., multi-bit ECC errors) on RXB input i}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK\hjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(h_``rxb_mac_err[i]``: frames enqueued with MAC end-of-frame errors (e.g., bad FCS) on RXB input ih]h)}(hjh](j)}(h``rxb_mac_err[i]``h]hrxb_mac_err[i]}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhM: frames enqueued with MAC end-of-frame errors (e.g., bad FCS) on RXB input i}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK]hjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(h;``rxb_parser_err[i]``: frames experienced RPC parser errorsh]h)}(hj(h](j)}(h``rxb_parser_err[i]``h]hrxb_parser_err[i]}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj*ubh&: frames experienced RPC parser errors}(hj*hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK^hj&ubah}(h]h ]h"]h$]h&]uh1hhjubh)}(ht``rxb_frm_err[i]``: frames experienced signaling errors (e.g., missing end-of-packet/start-of-packet) on RXB input ih]h)}(hjMh](j)}(h``rxb_frm_err[i]``h]hrxb_frm_err[i]}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjOubhb: frames experienced signaling errors (e.g., missing end-of-packet/start-of-packet) on RXB input i}(hjOhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK_hjKubah}(h]h ]h"]h$]h&]uh1hhjubh)}(h6``rxb_drbo[i]_frames``: frames received at RXB input ih]h)}(hjrh](j)}(h``rxb_drbo[i]_frames``h]hrxb_drbo[i]_frames}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjtubh : frames received at RXB input i}(hjthhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK`hjpubah}(h]h ]h"]h$]h&]uh1hhjubh)}(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&]uh1hhhhKahjubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]jjuh1jhhhK\hjubah}(h]h ]h"]h$]h&]uh1jhhhK\hjhhubeh}(h]rxb-rx-buffer-enqueueah ]h"]rxb (rx buffer) enqueueah$]h&]uh1hhjuhhhhhKZubh)}(hhh](h)}(hRXB (RX Buffer) FIFOh]hRXB (RX Buffer) FIFO}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKdubj)}(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)}(hjh](j)}(h``rxb_fifo[i]_drop``h]hrxb_fifo[i]_drop}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh/: transitions into the drop state on RXB pool i}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKfhjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(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&]uh1hhhhKghj ubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hF``rxb_fifo[i]_ecn``: transitions into the ECN mark state on RXB pool ih]h)}(hj3h](j)}(h``rxb_fifo[i]_ecn``h]hrxb_fifo[i]_ecn}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5ubh3: transitions into the ECN mark state on RXB pool i}(hj5hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhhj1ubah}(h]h ]h"]h$]h&]uh1hhjubh)}(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}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjZubh!: current occupancy of RXB pool i}(hjZhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKihjVubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]jjuh1jhhhKfhjubah}(h]h ]h"]h$]h&]uh1jhhhKfhjhhubeh}(h]rxb-rx-buffer-fifoah ]h"]rxb (rx buffer) fifoah$]h&]uh1hhjuhhhhhKdubh)}(hhh](h)}(hRXB (RX Buffer) Dequeueh]hRXB (RX Buffer) Dequeue}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKlubj)}(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)}(hjh](j)}(h``rxb_intf[i]_frames``h]hrxb_intf[i]_frames}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh: frames sent to the output i}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKnhjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(h1``rxb_intf[i]_bytes``: bytes sent to the output ih]h)}(hjh](j)}(h``rxb_intf[i]_bytes``h]hrxb_intf[i]_bytes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh: bytes sent to the output i}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKohjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(h^``rxb_pbuf[i]_frames``: frames sent to output i from the perspective of internal packet bufferh]h)}(hjh](j)}(h``rxb_pbuf[i]_frames``h]hrxb_pbuf[i]_frames}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhH: frames sent to output i from the perspective of internal packet buffer}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKphjubah}(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&]uh1hhhhKqhjubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]jjuh1jhhhKnhjubah}(h]h ]h"]h$]h&]uh1jhhhKnhjhhubeh}(h]rxb-rx-buffer-dequeueah ]h"]rxb (rx buffer) dequeueah$]h&]uh1hhjuhhhhhKlubh)}(hhh](h)}(hRPC (Rx parser)h]hRPC (Rx parser)}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1hhjQhhhhhKtubj)}(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)}(hjkh](j)}(h``rpc_unkn_etype``h]hrpc_unkn_etype}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1jhjmubh%: frames containing unknown EtherType}(hjmhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKvhjiubah}(h]h ]h"]h$]h&]uh1hhjfubh)}(hE``rpc_unkn_ext_hdr``: frames containing unknown IPv6 extension headerh]h)}(hjh](j)}(h``rpc_unkn_ext_hdr``h]hrpc_unkn_ext_hdr}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh1: frames containing unknown IPv6 extension header}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKwhjubah}(h]h ]h"]h$]h&]uh1hhjfubh)}(h2``rpc_ipv4_frag``: frames containing IPv4 fragmenth]h)}(hjh](j)}(h``rpc_ipv4_frag``h]h rpc_ipv4_frag}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh!: frames containing IPv4 fragment}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKxhjubah}(h]h ]h"]h$]h&]uh1hhjfubh)}(h2``rpc_ipv6_frag``: frames containing IPv6 fragmenth]h)}(hjh](j)}(h``rpc_ipv6_frag``h]h rpc_ipv6_frag}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh!: frames containing IPv6 fragment}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKyhjubah}(h]h ]h"]h$]h&]uh1hhjfubh)}(h4``rpc_ipv4_esp``: frames with IPv4 ESP encapsulationh]h)}(hjh](j)}(h``rpc_ipv4_esp``h]h rpc_ipv4_esp}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh$: frames with IPv4 ESP encapsulation}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKzhjubah}(h]h ]h"]h$]h&]uh1hhjfubh)}(h4``rpc_ipv6_esp``: frames with IPv6 ESP encapsulationh]h)}(hj$h](j)}(h``rpc_ipv6_esp``h]h rpc_ipv6_esp}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj&ubh$: frames with IPv6 ESP encapsulation}(hj&hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK{hj"ubah}(h]h ]h"]h$]h&]uh1hhjfubh)}(hF``rpc_tcp_opt_err``: frames which encountered TCP option parsing errorh]h)}(hjIh](j)}(h``rpc_tcp_opt_err``h]hrpc_tcp_opt_err}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjKubh3: frames which encountered TCP option parsing error}(hjKhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK|hjGubah}(h]h ]h"]h$]h&]uh1hhjfubh)}(hK``rpc_out_of_hdr_err``: frames where header was larger than parsable regionh]h)}(hjnh](j)}(h``rpc_out_of_hdr_err``h]hrpc_out_of_hdr_err}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1jhjpubh5: frames where header was larger than parsable region}(hjphhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK}hjlubah}(h]h ]h"]h$]h&]uh1hhjfubh)}(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&]uh1hhhhK~hjubah}(h]h ]h"]h$]h&]uh1hhjfubeh}(h]h ]h"]h$]h&]jjuh1jhhhKvhjbubah}(h]h ]h"]h$]h&]uh1jhhhKvhjQhhubeh}(h] rpc-rx-parserah ]h"]rpc (rx parser)ah$]h&]uh1hhjuhhhhhKtubh)}(hhh](h)}(hHardware Queuesh]hHardware Queues}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(hhh]h)}(hRX DMA Engine: h]h)}(hRX DMA Engine:h]hRX DMA Engine:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhjhhhhhNubah}(h]h ]h"]h$]h&]j?j@jAhjBjCuh1hhjhhhhhKubj)}(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}(hj hhhNhNubah}(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&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(h<``rde_[i]_pkt_cq_drop``: packets dropped because RCQ is fullh]h)}(hj+h](j)}(h``rde_[i]_pkt_cq_drop``h]hrde_[i]_pkt_cq_drop}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj-ubh%: packets dropped because RCQ is full}(hj-hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj)ubah}(h]h ]h"]h$]h&]uh1hhjubh)}(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}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjRubh;: packets dropped because HPQ or PPQ ran out of host buffer}(hjRhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjNubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]jjuh1jhhhKhjubah}(h]h ]h"]h$]h&]uh1jhhhKhjhhubeh}(h]hardware-queuesah ]h"]hardware queuesah$]h&]uh1hhjuhhhhhKubh)}(hhh](h)}(hPCIeh]hPCIe}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(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 (}(hjhhhNhNubj)}(h``pcie_stats``h]h pcie_stats}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhj). These statistics provide insights into PCIe transaction behavior and potential performance bottlenecks.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(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:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubhdefinition_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:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhKhjubh definition)}(hhh]j)}(hhh](h)}(hA``pcie_ob_rd_tlp``: Outbound read Transaction Layer Packets counth]h)}(hjh](j)}(h``pcie_ob_rd_tlp``h]hpcie_ob_rd_tlp}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh/: Outbound read Transaction Layer Packets count}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(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&]uh1hhjubh)}(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}(hjB 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&]uh1hhjubh)}(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}(hjh hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjd ubh3: DWORDs transferred in outbound write transactions}(hjd hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj` ubah}(h]h ]h"]h$]h&]uh1hhjubh)}(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&]uh1hhjubh)}(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&]uh1hhjubeh}(h]h ]h"]h$]h&]jjuh1jhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhhhNhNubh)}(hXhPCIe 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 exhaustionh](h)}(hPCIe Resource Monitoring:h]hPCIe Resource Monitoring:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubj)}(hhh]j)}(hX4These 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 exhaustionh](j)}(h8These counters indicate PCIe resource exhaustion events:h]h8These counters indicate PCIe resource exhaustion events:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhKhj ubj)}(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}(hjI hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjE ubh;: Read requests dropped due to completion credit exhaustion}(hjE hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjA ubah}(h]h ]h"]h$]h&]uh1hhj ubh)}(hT``pcie_ob_rd_no_np_cred``: Read requests dropped due to non-posted credit exhaustionh]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}(hjo hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjk ubh;: Read requests dropped due to non-posted credit exhaustion}(hjk hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjg ubah}(h]h ]h"]h$]h&]uh1hhj ubeh}(h]h ]h"]h$]h&]jjuh1jhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1hhjhhhNhNubeh}(h]h ]h"]h$]h&]j?j@jAhjBjCuh1hhjhhhhhKubeh}(h]pcieah ]h"]pcieah$]h&]uh1hhjuhhhhhKubeh}(h] statisticsah ]h"] statisticsah$]h&]uh1hhhhhhhhKIubeh}(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:j5j2jrjoj j j%j"jjjjjjjNjKjjjjj j u nametypes}(j jej=j5jrj j%jjjjNjjj uh}(j hjbhj:jhj2jyjoj@j juj"jjj(jjjjjKjjjQjjj ju 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.