tsphinx.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)}(hUpgrading Firmwareh]hUpgrading Firmware}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhhK 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.}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK"hjhhhubh)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK&hjhhhubeh}(h]upgrading-firmwareah ]h"]upgrading firmwareah$]h&]uh1hhhhhhhhK ubh)}(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](hliteral)}(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&]uh1hhhhK0hjubah}(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&]uh1hhhhK1hjubah}(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&]uh1hhhhK2hjubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]bullet-uh1jhhhK0hjubah}(h]h ]h"]h$]h&]uh1jhhhK0hjhhubeh}(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)}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjRhhhhhK5ubj)}(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)}(hjlh](j)}(h``tti_cm_drop``h]h tti_cm_drop}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjnubh[: control messages dropped at the TX Extension (TEI) Interface because of credit starvation}(hjnhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK7hjjubah}(h]h ]h"]h$]h&]uh1hhjgubh)}(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&]uh1hhhhK8hjubah}(h]h ]h"]h$]h&]uh1hhjgubh)}(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&]uh1hhhhK9hjubah}(h]h ]h"]h$]h&]uh1hhjgubeh}(h]h ]h"]h$]h&]jBjCuh1jhhhK7hjcubah}(h]h ]h"]h$]h&]uh1jhhhK7hjRhhubeh}(h]tx-extension-tei-interface-ttiah ]h"]"tx extension (tei) interface (tti)ah$]h&]uh1hhjhhhhhK5ubh)}(hhh](h)}(hRXB (RX Buffer) Enqueueh]hRXB (RX Buffer) Enqueue}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKhjubah}(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)}(hj-h](j)}(h``rxb_mac_err[i]``h]hrxb_mac_err[i]}(hj2hhhNhNubah}(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&]uh1hhhhK?hj+ubah}(h]h ]h"]h$]h&]uh1hhjubh)}(h;``rxb_parser_err[i]``: frames experienced RPC parser errorsh]h)}(hjRh](j)}(h``rxb_parser_err[i]``h]hrxb_parser_err[i]}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjTubh&: frames experienced RPC parser errors}(hjThhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK@hjPubah}(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)}(hjwh](j)}(h``rxb_frm_err[i]``h]hrxb_frm_err[i]}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjyubhb: frames experienced signaling errors (e.g., missing end-of-packet/start-of-packet) on RXB input i}(hjyhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKAhjuubah}(h]h ]h"]h$]h&]uh1hhjubh)}(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&]uh1hhhhKBhjubah}(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&]uh1hhhhKChjubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]jBjCuh1jhhhK>hjubah}(h]h ]h"]h$]h&]uh1jhhhK>hjhhubeh}(h]rxb-rx-buffer-enqueueah ]h"]rxb (rx buffer) enqueueah$]h&]uh1hhjhhhhhK