点击此处查看详细分析解答
OCP光口配置问题分析与解决方案
根据您提供的系统配置信息、错误现象及上下文数据,以下是对“OCP光口未被正确识别”问题的详细分析与配置指导。
问题概述
- 目标:在系统中正确识别并配置 OCP 网卡的光口(SFP)。
- 当前状态:
- 已加载
ocp.sr 配置文件。
- PCIe 设备和电口已正常识别(通过修改 Bus 信息后电口可识别)。
- 但光口(SFP)部分未被识别,WebUI 显示端口为电口,且无光模块相关信息。
- 版本环境:固件版本 2509
- 硬件信息:Mellanox CX-4 型号网卡,实际为华为 HNS 芯片(
19e5:a222 四元组)
根本原因分析
从知识图谱和文档内容分析,导致 OCP 光口未正确识别的主要原因如下:
1. SR 文件命名与四元组不匹配
- 您使用的 SR 文件名为
14220247_15b31015_19e5d13b.sr,表示:
BOM:14220247(OCP 卡)
ID:15b31015(Mellanox VendorID + DeviceID)
AuxID:19e5d13b
但在系统运行时使用 lspci -n 查询到的实际设备四元组为:
7d:00.0 0200: 19e5:a222
- VendorID =
19e5(Huawei)
- DeviceID =
a222
结论:当前系统中使用的并非 Mellanox 网卡,而是 华为 HNS 内置网络控制器(Hisilicon)。因此,使用 Mellanox 的 SR 文件(基于 15b3)会导致设备识别错误,无法加载光口配置。
2. 网络端口配置中缺少光模块关联
即使 PCIe 设备加载成功,若未正确配置以下对象,光模块将不会出现在 WebUI 中:
必须包含的对象:
"NetworkPort_0": {
"@Parent": "NetworkAdapter_1",
"MediumType": "FiberOptic", // 关键字段:必须设置为光纤
"PortID": 2
},
"OpticalModule_0": {
"@Parent": "NetworkPort_0", // 明确绑定到对应网口
"ChannelNum": 1
}
根据文档 《网卡适配指南》 和 《openUBMC 182x大板管理特性设计说明书.md》,每个光口必须配置独立的OpticalModule_X对象,并通过@Parent关联。
而您当前的配置仅定义了 NetworkPort_0 和 NetworkPort_1,缺少 OpticalModule_X 对象声明,导致光模块无法上树。
3. Bus 配置错误或未同步
您提到“更改 Bus 后电口恢复正常”,说明 Bus 信息必须与 lspci -tv 输出一致。
当前正确的 PCIe 总线路径为:
[0000:7c]--+-00.0-[7d]--+-00.0 ...
即:
- 上游桥接设备 Bus = 7c
- 实际网卡设备位于 Bus 7d
SR 文件中的 PCIeDevice_1.Bus 应配置为 7d,且需确保 PcieAddrInfo 在 BMC 配置中正确映射。
正确配置 OCP 光口的方法
第一步:确认真实硬件型号与四元组
运行命令获取准确信息:
lspci -n | grep -i 7d
输出:
7d:00.0 0200: 19e5:a222
四元组实际为:
- BOM:暂未知(可查询丝印或 FRU)
- VendorID:
19e5
- DeviceID:
a222
- AuxID:根据速率能力确定(如 10G、25G),示例为
0222
因此,正确的 SR 文件名应为:
14220247_19e5a222_0222.sr
否则 BMC 不会加载该配置
第二步:编写正确的 SR 配置文件
示例:14220247_19e5a222_0222.sr
{
"PCIeDevice_1": {
"DeviceName": "OCP Card (SFP+)",
"Bus": 125,
"Device": 0,
"Function": 0,
"FunctionClass": 2,
"Container": "${Container}",
"DeviceType": 83,
"PCIeDeviceType": "MultiFunction",
"FunctionProtocol": "PCIe",
"FunctionType": "Physical"
},
"NetworkAdapter_1": {
"InterfaceEnabled": true,
"Model": "Huawei HNS OCP",
"NetworkPortCount": 2,
"NetworkAdapterId": 1
},
"NetworkPort_0": {
"@Parent": "NetworkAdapter_1",
"PortId": 0,
"MediumType": "FiberOptic",
"LinkStatus": "NoLink"
},
"NetworkPort_1": {
"@Parent": "NetworkAdapter_1",
"PortId": 1,
"MediumType": "FiberOptic",
"LinkStatus": "NoLink"
},
"OpticalModule_0": {
"@Parent": "NetworkPort_0",
"ChannelNum": 1
},
"OpticalModule_1": {
"@Parent": "NetworkPort_1",
"ChannelNum": 1
}
}
关键点说明:
MediumType: "FiberOptic":标识为光口
OpticalModule_X 必须存在并绑定父端口
NetworkPortCount 要与实际数量一致
第三步:确保 CSR 加载机制正确
根据文档 《网卡开发指南》:
- OCP 和 PCIe 卡一般采用
IdentifyMode = 2
- 需在 BMC 中预先配置
PcieAddrInfo 对象,关联物理位置
确保以下配置存在于系统全局配置中(如 silkconfig.json):
"PcieAddrInfo": [
{
"BDF": "7d:0:0",
"DeviceType": 83,
"SlotId": 7
}
]
第四步:验证光模块信息获取逻辑
光模块状态不上报的可能原因:
network_adapter.lua 报告光模块数量为 0 → 表明配置未加载
- 日志中未发现
metric_analyzer 的光模块上树打印 → 获取流程中断
建议查看日志:
journalctl -u network_adapter
tail -f /tmp/log/mdb_info.log
搜索关键字:optical module, NCSI, NetworkPort
排查建议清单
| 检查项 |
是否完成 |
说明 |
SR 文件名是否匹配四元组 |
/ |
必须为 BOM_ID_AUXID.sr,ID 为 19e5a222 |
MediumType 是否设为 FiberOptic |
/ |
决定是否作为光口处理 |
是否定义了 OpticalModule_X 对象 |
/ |
缺少则无光模块信息 |
@Parent 关系是否正确 |
/ |
必须绑定到 NetworkPort_X |
Bus 编号是否准确 |
/ |
需匹配 lspci -tv |
是否启用 NCSI 支持 |
 |
若需带外通信,需配置协议支持 |
参考文档支持
- 《网卡适配流程》:新网卡必须配置 SR 文件,提供名称、型号、端口数、介质类型等。
- 《网卡CSR1.0配置指导》:明确指出光口需配置
OpticalModule_X 并与 NetworkPort_X 关联。
- 《openUBMC 182x大板管理特性设计说明书.md》:强调光模块映射关系由硬件决定,软件需正确建模。
- 《OCP卡光模块信息获取逻辑和定位方法》:光模块信息由 iBMA 带内获取 → BMC 更新 → WebUI 显示。
结论与建议
当前无法识别光口的根本原因是:
- 使用了错误厂商(Mellanox vs Huawei)的 SR 文件;
- 配置中缺少
OpticalModule_X 对象;
MediumType 未明确设为 FiberOptic。
最终解决方案步骤
- 停止使用
15b3 开头的 Mellanox 配置文件
- 新建 SR 文件:
14220247_19e5a222_0222.sr
- 在文件中加入
OpticalModule_0 和 OpticalModule_1
- 设置
MediumType: FiberOptic
- 确保 Bus 编号为
7d,并与 PcieAddrInfo 匹配
- 重新编译固件,刷写后重启 BMC
- 插入 SFP 模块后检查 WebUI 及日志输出
附加提示
如果您的 OCP 卡是板载集成式,建议检查:
- 是否支持 NCSI 自适应 → 根据知识库:OCP2 不支持 NCSI 端口自适应
- 是否配置了
Model 属性 → 用于触发 network_adapter 模块加载对应驱动
如有进一步 log 或图片信息(如 mdb_info.log 输出),可继续深入分析。