xref: /linux/Documentation/networking/device_drivers/ethernet/meta/fbnic.rst (revision df9c299371054cb725eef730fd0f1d0fe2ed6bb0)
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
31Upgrading Firmware
32------------------
33
34fbnic supports updating firmware using signed PLDM images with devlink dev
35flash. PLDM images are written into the flash. Flashing does not interrupt
36the operation of the device.
37
38On host boot the latest UEFI driver is always used, no explicit activation
39is required. Firmware activation is required to run new control firmware. cmrt
40firmware can only be activated by power cycling the NIC.
41
42Statistics
43----------
44
45TX MAC Interface
46~~~~~~~~~~~~~~~~
47
48 - ``ptp_illegal_req``: packets sent to the NIC with PTP request bit set but routed to BMC/FW
49 - ``ptp_good_ts``: packets successfully routed to MAC with PTP request bit set
50 - ``ptp_bad_ts``: packets destined for MAC with PTP request bit set but aborted because of some error (e.g., DMA read error)
51
52TX Extension (TEI) Interface (TTI)
53~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
54
55 - ``tti_cm_drop``: control messages dropped at the TX Extension (TEI) Interface because of credit starvation
56 - ``tti_frame_drop``: packets dropped at the TX Extension (TEI) Interface because of credit starvation
57 - ``tti_tbi_drop``: packets dropped at the TX BMC Interface (TBI) because of credit starvation
58
59RXB (RX Buffer) Enqueue
60~~~~~~~~~~~~~~~~~~~~~~~
61
62 - ``rxb_integrity_err[i]``: frames enqueued with integrity errors (e.g., multi-bit ECC errors) on RXB input i
63 - ``rxb_mac_err[i]``: frames enqueued with MAC end-of-frame errors (e.g., bad FCS) on RXB input i
64 - ``rxb_parser_err[i]``: frames experienced RPC parser errors
65 - ``rxb_frm_err[i]``: frames experienced signaling errors (e.g., missing end-of-packet/start-of-packet) on RXB input i
66 - ``rxb_drbo[i]_frames``: frames received at RXB input i
67 - ``rxb_drbo[i]_bytes``: bytes received at RXB input i
68
69RXB (RX Buffer) FIFO
70~~~~~~~~~~~~~~~~~~~~
71
72 - ``rxb_fifo[i]_drop``: transitions into the drop state on RXB pool i
73 - ``rxb_fifo[i]_dropped_frames``: frames dropped on RXB pool i
74 - ``rxb_fifo[i]_ecn``: transitions into the ECN mark state on RXB pool i
75 - ``rxb_fifo[i]_level``: current occupancy of RXB pool i
76
77RXB (RX Buffer) Dequeue
78~~~~~~~~~~~~~~~~~~~~~~~
79
80   - ``rxb_intf[i]_frames``: frames sent to the output i
81   - ``rxb_intf[i]_bytes``: bytes sent to the output i
82   - ``rxb_pbuf[i]_frames``: frames sent to output i from the perspective of internal packet buffer
83   - ``rxb_pbuf[i]_bytes``: bytes sent to output i from the perspective of internal packet buffer
84
85RPC (Rx parser)
86~~~~~~~~~~~~~~~
87
88 - ``rpc_unkn_etype``: frames containing unknown EtherType
89 - ``rpc_unkn_ext_hdr``: frames containing unknown IPv6 extension header
90 - ``rpc_ipv4_frag``: frames containing IPv4 fragment
91 - ``rpc_ipv6_frag``: frames containing IPv6 fragment
92 - ``rpc_ipv4_esp``: frames with IPv4 ESP encapsulation
93 - ``rpc_ipv6_esp``: frames with IPv6 ESP encapsulation
94 - ``rpc_tcp_opt_err``: frames which encountered TCP option parsing error
95 - ``rpc_out_of_hdr_err``: frames where header was larger than parsable region
96 - ``ovr_size_err``: oversized frames
97
98Hardware Queues
99~~~~~~~~~~~~~~~
100
1011. RX DMA Engine:
102
103 - ``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.
104 - ``rde_[i]_pkt_cq_drop``: packets dropped because RCQ is full
105 - ``rde_[i]_pkt_bdq_drop``: packets dropped because HPQ or PPQ ran out of host buffer
106
107PCIe
108~~~~
109
110The fbnic driver exposes PCIe hardware performance statistics through debugfs
111(``pcie_stats``). These statistics provide insights into PCIe transaction
112behavior and potential performance bottlenecks.
113
1141. PCIe Transaction Counters:
115
116   These counters track PCIe transaction activity:
117        - ``pcie_ob_rd_tlp``: Outbound read Transaction Layer Packets count
118        - ``pcie_ob_rd_dword``: DWORDs transferred in outbound read transactions
119        - ``pcie_ob_wr_tlp``: Outbound write Transaction Layer Packets count
120        - ``pcie_ob_wr_dword``: DWORDs transferred in outbound write
121	  transactions
122        - ``pcie_ob_cpl_tlp``: Outbound completion TLP count
123        - ``pcie_ob_cpl_dword``: DWORDs transferred in outbound completion TLPs
124
1252. PCIe Resource Monitoring:
126
127   These counters indicate PCIe resource exhaustion events:
128        - ``pcie_ob_rd_no_tag``: Read requests dropped due to tag unavailability
129        - ``pcie_ob_rd_no_cpl_cred``: Read requests dropped due to completion
130	  credit exhaustion
131        - ``pcie_ob_rd_no_np_cred``: Read requests dropped due to non-posted
132	  credit exhaustion
133