Meta Platforms 主机网络接口¶
固件版本¶
fbnic 在闪存上存储了三个组件,这些组件包含在一个 PLDM 镜像中
fw - 控制固件,用于查看和修改固件设置、请求固件操作以及检索数据路径之外的固件计数器。 这是 fbnic_fw.c 与之交互的固件。
bootloader - 用于验证固件安全性并控制基本操作(包括加载和更新固件)的固件。 这也称为 cmrt 固件。
undi - 这是基于 Linux 驱动程序的 UEFI 驱动程序。
fbnic 在闪存上存储这些三个组件的两个副本。 这样,如果固件无法启动,fbnic 可以自动回退到旧版本的固件。 两个版本的版本信息都以运行和存储的形式提供。 undi 仅以存储形式提供,因为它在 Linux 驱动程序接管后不会主动运行。
devlink dev info 提供所有三个组件的版本信息。 除了版本之外,构建的 hg commit 哈希值也作为单独的条目包含在内。
升级固件¶
fbnic 支持使用带有 devlink dev flash 的签名 PLDM 镜像更新固件。 PLDM 镜像被写入闪存。 刷写不会中断设备的操作。
在主机启动时,始终使用最新的 UEFI 驱动程序,无需显式激活。 固件激活是运行新的控制固件所必需的。 cmrt 固件只能通过对 NIC 进行电源循环来激活。
统计信息¶
TX MAC 接口¶
ptp_illegal_req
:发送到 NIC 的数据包,PTP 请求位已设置,但路由到 BMC/FW
ptp_good_ts
:成功路由到 MAC 的数据包,PTP 请求位已设置
ptp_bad_ts
:目标为 MAC 的数据包,PTP 请求位已设置,但由于某些错误(例如,DMA 读取错误)而中止
TX 扩展 (TEI) 接口 (TTI)¶
tti_cm_drop
:由于信用耗尽,在 TX 扩展 (TEI) 接口处丢弃的控制消息
tti_frame_drop
:由于信用耗尽,在 TX 扩展 (TEI) 接口处丢弃的数据包
tti_tbi_drop
:由于信用耗尽,在 TX BMC 接口 (TBI) 处丢弃的数据包
RXB (RX 缓冲区) 入队¶
rxb_integrity_err[i]
:在 RXB 输入 i 上排队且具有完整性错误(例如,多位 ECC 错误)的帧
rxb_mac_err[i]
:在 RXB 输入 i 上排队且具有 MAC 帧结束错误(例如,错误的 FCS)的帧
rxb_parser_err[i]
:遇到 RPC 解析器错误的帧
rxb_frm_err[i]
:遇到信令错误(例如,缺少数据包结束/数据包开始)的帧在 RXB 输入 i 上
rxb_drbo[i]_frames
:在 RXB 输入 i 处接收的帧
rxb_drbo[i]_bytes
:在 RXB 输入 i 处接收的字节
RXB (RX 缓冲区) FIFO¶
rxb_fifo[i]_drop
:转换为 RXB 池 i 上的丢弃状态
rxb_fifo[i]_dropped_frames
:在 RXB 池 i 上丢弃的帧
rxb_fifo[i]_ecn
:转换为 RXB 池 i 上的 ECN 标记状态
rxb_fifo[i]_level
:RXB 池 i 的当前占用率
RXB (RX 缓冲区) 出队¶
rxb_intf[i]_frames
:发送到输出 i 的帧
rxb_intf[i]_bytes
:发送到输出 i 的字节
rxb_pbuf[i]_frames
:从内部数据包缓冲区的角度来看,发送到输出 i 的帧
rxb_pbuf[i]_bytes
:从内部数据包缓冲区的角度来看,发送到输出 i 的字节
RPC (Rx 解析器)¶
rpc_unkn_etype
:包含未知 EtherType 的帧
rpc_unkn_ext_hdr
:包含未知 IPv6 扩展头的帧
rpc_ipv4_frag
:包含 IPv4 片段的帧
rpc_ipv6_frag
:包含 IPv6 片段的帧
rpc_ipv4_esp
:带有 IPv4 ESP 封装的帧
rpc_ipv6_esp
:带有 IPv6 ESP 封装的帧
rpc_tcp_opt_err
:遇到 TCP 选项解析错误的帧
rpc_out_of_hdr_err
:标头大于可解析区域的帧
ovr_size_err
:超大帧
硬件队列¶
RX DMA 引擎
rde_[i]_pkt_err
:具有 MAC EOP、RPC 解析器、RXB 截断或 RDE 帧截断错误的包。 由于直通支持,这些错误在数据包元数据中标记,但实际丢弃发生在到达 PCIE/RDE 后。
rde_[i]_pkt_cq_drop
:由于 RCQ 已满而丢弃的数据包
rde_[i]_pkt_bdq_drop
:由于 HPQ 或 PPQ 耗尽主机缓冲区而丢弃的数据包
PCIe¶
fbnic 驱动程序通过 debugfs (pcie_stats
) 公开 PCIe 硬件性能统计信息。 这些统计信息提供了对 PCIe 事务行为和潜在性能瓶颈的深入了解。
PCIe 事务计数器
- 这些计数器跟踪 PCIe 事务活动
pcie_ob_rd_tlp
:出站读取事务层数据包计数pcie_ob_rd_dword
:在出站读取事务中传输的 DWORDpcie_ob_wr_tlp
:出站写入事务层数据包计数pcie_ob_wr_dword
:在出站写入事务中传输的 DWORDpcie_ob_cpl_tlp
:出站完成 TLP 计数pcie_ob_cpl_dword
:在出站完成 TLP 中传输的 DWORD
PCIe 资源监控
- 这些计数器指示 PCIe 资源耗尽事件
pcie_ob_rd_no_tag
:由于标签不可用而丢弃的读取请求pcie_ob_rd_no_cpl_cred
:由于完成信用耗尽而丢弃的读取请求pcie_ob_rd_no_np_cred
:由于非发布信用耗尽而丢弃的读取请求