1.. SPDX-License-Identifier: GPL-2.0+ 2 3===================================== 4Meta Platforms Host Network Interface 5===================================== 6 7Firmware Versions 8----------------- 9 10fbnic has three components stored on the flash which are provided in one PLDM 11image: 12 131. fw - The control firmware used to view and modify firmware settings, request 14 firmware actions, and retrieve firmware counters outside of the data path. 15 This is the firmware which fbnic_fw.c interacts with. 162. bootloader - The firmware which validate firmware security and control basic 17 operations including loading and updating the firmware. This is also known 18 as the cmrt firmware. 193. undi - This is the UEFI driver which is based on the Linux driver. 20 21fbnic stores two copies of these three components on flash. This allows fbnic 22to fall back to an older version of firmware automatically in case firmware 23fails to boot. Version information for both is provided as running and stored. 24The undi is only provided in stored as it is not actively running once the Linux 25driver takes over. 26 27devlink dev info provides version information for all three components. In 28addition to the version the hg commit hash of the build is included as a 29separate entry. 30 31Statistics 32---------- 33 34RPC (Rx parser) 35~~~~~~~~~~~~~~~ 36 37 - ``rpc_unkn_etype``: frames containing unknown EtherType 38 - ``rpc_unkn_ext_hdr``: frames containing unknown IPv6 extension header 39 - ``rpc_ipv4_frag``: frames containing IPv4 fragment 40 - ``rpc_ipv6_frag``: frames containing IPv6 fragment 41 - ``rpc_ipv4_esp``: frames with IPv4 ESP encapsulation 42 - ``rpc_ipv6_esp``: frames with IPv6 ESP encapsulation 43 - ``rpc_tcp_opt_err``: frames which encountered TCP option parsing error 44 - ``rpc_out_of_hdr_err``: frames where header was larger than parsable region 45 - ``ovr_size_err``: oversized frames 46 47PCIe 48~~~~ 49 50The fbnic driver exposes PCIe hardware performance statistics through debugfs 51(``pcie_stats``). These statistics provide insights into PCIe transaction 52behavior and potential performance bottlenecks. 53 541. PCIe Transaction Counters: 55 56 These counters track PCIe transaction activity: 57 - ``pcie_ob_rd_tlp``: Outbound read Transaction Layer Packets count 58 - ``pcie_ob_rd_dword``: DWORDs transferred in outbound read transactions 59 - ``pcie_ob_wr_tlp``: Outbound write Transaction Layer Packets count 60 - ``pcie_ob_wr_dword``: DWORDs transferred in outbound write 61 transactions 62 - ``pcie_ob_cpl_tlp``: Outbound completion TLP count 63 - ``pcie_ob_cpl_dword``: DWORDs transferred in outbound completion TLPs 64 652. PCIe Resource Monitoring: 66 67 These counters indicate PCIe resource exhaustion events: 68 - ``pcie_ob_rd_no_tag``: Read requests dropped due to tag unavailability 69 - ``pcie_ob_rd_no_cpl_cred``: Read requests dropped due to completion 70 credit exhaustion 71 - ``pcie_ob_rd_no_np_cred``: Read requests dropped due to non-posted 72 credit exhaustion 73