arch
(Evan(bx))
1
各位好,遇到一个网卡枚举相关的问题,请教下是否为正常设计及 agent/iBMA 侧该如何适配。
现象
-
机器上一张网卡在 PCIe 上表现为两个功能:02:00.0 和 02:00.1。
-
02:00.0 的 BAR 资源是 disabled(看起来未启用/未分配资源)。
-
02:00.1 下出现 两个 net 设备:enp150s0f0、enp150s0f1。两者的 /sys/class/net/<if>/device 都指向 同一个 BDF:0000:02:00.1。
-
我们的 iBMA/agent 目前是“按 BDF 采集”的(默认假设“一 BDF = 一网口”),结果在 Web 展示时只能拿到一个口的信息,另一个口漏采。
arch
(Evan(bx))
2
通过在 /sys 上层做只读联合覆写验证后,结论是:iBMA 的网卡发现流程以 PCI BDF → 网口名 → ethtool 参数 为主线——先从 /sys/bus/pci/devices/<BDF>/net/ 取接口名,再用 ethtool 获取能力与状态,其他属性补充读取 /sys/class/net/<IF>/ 与 /sys/bus/pci/devices/<BDF>/ 相关节点。对上述路径做联合/隐藏即可影响识别结果(例如隐藏 0000:96:00.1 下的 enp150s0f0)。
arch
(Evan(bx))
3
结论:iBMA 目前假设“BDF=单网口”,而业界并非总是一 BDF 一网口。我们的联合覆写验证显示:该网卡把资源全挂在一路 BDF,另一 BDF 没有 net/ 是合理现象;iBMA 按 /sys/bus/pci/devices/<BDF>/net 逐 BDF 读取,因而只上报其中一路,最终在上送 BMC 时产生缺项。这不是 BMC 问题;即便用联合文件系统把另一 BDF“绑”到某个网口也能读到数据,但根因仍在 iBMA 枚举与关联逻辑,需要支持“多端口/多函数→单 BDF 资源”的聚合,而非依赖修改 网卡 BAR 或固件映射。