OCP光口配置问题

版本:2509

当前配置网卡,在EXU中直接加载ocp.sr

14100513_920s.sr配置内容如下:

               "Connector_OCP_1": {
            "Bom": "14220247",
            "Slot": 7,
            "Position": 7,
            "Presence": 1,
            "Id": "15b31015",
            "AuxId": "19e5d13b",
            "Buses": [
                "I2cMux_Pca9545_i2c7_chip_1"
            ],
            "SystemId": "${SystemId}",
            "ManagerId": "${ManagerId}",
            "ChassisId": "${ChassisId}",
            "SilkText": "J6008",
            "IdentifyMode": 2
        },

14220247_15b31015_19e5d13b.sr配置更改如下

        "PCIeDevice_1": {
            "DeviceName": "OCP Card $ (SFP)",
            "Bus": 124,
            "Device": 0,
            "Function": 0,
            "FunctionClass": 2,
            "Position": "",
            "DiagnosticFault": 0,
            "PredictiveFault": 0,
            "BandwidthReduction": 0,
            "LinkSpeedReduced":0,
            "Container": "${Container}",
            "GroupPosition": "PCIeDevice_${GroupPosition}",
            "DeviceType": 83,
            "PCIeDeviceType": "MultiFunction",
            "SlotType": "HalfLength",
            "FunctionProtocol": "PCIe",
            "FunctionType": "Physical"
        },
        "NetworkPort_0": {
            "@Parent": "NetworkAdapter_1",
            "SystemID": 1,
            "PortID": 2,
            "SupportedFuncType": 1,
            "LinkStatus": "NoLink"
        },
        "NetworkPort_1": {
            "@Parent": "NetworkAdapter_1",
            "SystemID": 1,
            "PortID": 3,
            "SupportedFuncType": 1,
            "LinkStatus": "NoLink"
        },

编译更新固件包后,NIC光口部分没有识别

os下查询lspci和四元组如下

更改BUS后,电口是正常的

Q:如何配置OCP光口呢

答案内容由AI生成,仅供参考:

:white_check_mark: 结论与建议

:cross_mark: 当前无法识别光口的根本原因是:

  1. 使用了错误厂商(Mellanox vs Huawei)的 SR 文件;
  2. 配置中缺少 OpticalModule_X 对象;
  3. MediumType 未明确设为 FiberOptic。

:white_check_mark: 最终解决方案步骤

  1. 停止使用 15b3 开头的 Mellanox 配置文件
  2. 新建 SR 文件:14220247_19e5a222_0222.sr
  3. 在文件中加入 OpticalModule_0 和 OpticalModule_1
  4. 设置 MediumType: FiberOptic
  5. 确保 Bus 编号为 7d,并与 PcieAddrInfo 匹配
  6. 重新编译固件,刷写后重启 BMC
  7. 插入 SFP 模块后检查 WebUI 及日志输出
点击此处查看详细分析解答

OCP光口配置问题分析与解决方案

根据您提供的系统配置信息、错误现象及上下文数据,以下是对“OCP光口未被正确识别”问题的详细分析与配置指导。


:magnifying_glass_tilted_left: 问题概述

  • 目标:在系统中正确识别并配置 OCP 网卡的光口(SFP)。
  • 当前状态:
    • 已加载 ocp.sr 配置文件。
    • PCIe 设备和电口已正常识别(通过修改 Bus 信息后电口可识别)。
    • 但光口(SFP)部分未被识别,WebUI 显示端口为电口,且无光模块相关信息。
  • 版本环境:固件版本 2509
  • 硬件信息:Mellanox CX-4 型号网卡,实际为华为 HNS 芯片(19e5:a222 四元组)

:pushpin: 根本原因分析

从知识图谱和文档内容分析,导致 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

:backhand_index_pointing_right: 结论:当前系统中使用的并非 Mellanox 网卡,而是 华为 HNS 内置网络控制器(Hisilicon)。因此,使用 Mellanox 的 SR 文件(基于 15b3)会导致设备识别错误,无法加载光口配置。


2. 网络端口配置中缺少光模块关联

即使 PCIe 设备加载成功,若未正确配置以下对象,光模块将不会出现在 WebUI 中:

:white_check_mark: 必须包含的对象:

"NetworkPort_0": {
    "@Parent": "NetworkAdapter_1",
    "MediumType": "FiberOptic",  // 关键字段:必须设置为光纤
    "PortID": 2
},
"OpticalModule_0": {
    "@Parent": "NetworkPort_0",  // 明确绑定到对应网口
    "ChannelNum": 1
}

:bell: 根据文档 《网卡适配指南》 和 《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 配置中正确映射。


:white_check_mark: 正确配置 OCP 光口的方法

:white_check_mark: 第一步:确认真实硬件型号与四元组

运行命令获取准确信息:

lspci -n | grep -i 7d

输出:

7d:00.0 0200: 19e5:a222

:backhand_index_pointing_right: 四元组实际为:

  • BOM:暂未知(可查询丝印或 FRU)
  • VendorID:19e5
  • DeviceID:a222
  • AuxID:根据速率能力确定(如 10G、25G),示例为 0222

因此,正确的 SR 文件名应为:

14220247_19e5a222_0222.sr

:red_exclamation_mark: 否则 BMC 不会加载该配置


:white_check_mark: 第二步:编写正确的 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
  }
}

:magnifying_glass_tilted_left: 关键点说明:

  • MediumType: "FiberOptic":标识为光口
  • OpticalModule_X 必须存在并绑定父端口
  • NetworkPortCount 要与实际数量一致

:white_check_mark: 第三步:确保 CSR 加载机制正确

根据文档 《网卡开发指南》:

  • OCP 和 PCIe 卡一般采用 IdentifyMode = 2
  • 需在 BMC 中预先配置 PcieAddrInfo 对象,关联物理位置

确保以下配置存在于系统全局配置中(如 silkconfig.json):

"PcieAddrInfo": [
  {
    "BDF": "7d:0:0",
    "DeviceType": 83,
    "SlotId": 7
  }
]

:white_check_mark: 第四步:验证光模块信息获取逻辑

光模块状态不上报的可能原因:

  • network_adapter.lua 报告光模块数量为 0 → 表明配置未加载
  • 日志中未发现 metric_analyzer 的光模块上树打印 → 获取流程中断

:white_check_mark: 建议查看日志:

journalctl -u network_adapter
tail -f /tmp/log/mdb_info.log

搜索关键字:optical module, NCSI, NetworkPort


:hammer_and_wrench: 排查建议清单

检查项 是否完成 说明
:white_check_mark: SR 文件名是否匹配四元组 :cross_mark:/:white_check_mark: 必须为 BOM_ID_AUXID.sr,ID 为 19e5a222
:white_check_mark: MediumType 是否设为 FiberOptic :cross_mark:/:white_check_mark: 决定是否作为光口处理
:white_check_mark: 是否定义了 OpticalModule_X 对象 :cross_mark:/:white_check_mark: 缺少则无光模块信息
:white_check_mark: @Parent 关系是否正确 :cross_mark:/:white_check_mark: 必须绑定到 NetworkPort_X
:white_check_mark: Bus 编号是否准确 :cross_mark:/:white_check_mark: 需匹配 lspci -tv
:white_check_mark: 是否启用 NCSI 支持 :warning: 若需带外通信,需配置协议支持

:books: 参考文档支持

  1. 《网卡适配流程》:新网卡必须配置 SR 文件,提供名称、型号、端口数、介质类型等。
  2. 《网卡CSR1.0配置指导》:明确指出光口需配置 OpticalModule_X 并与 NetworkPort_X 关联。
  3. 《openUBMC 182x大板管理特性设计说明书.md》:强调光模块映射关系由硬件决定,软件需正确建模。
  4. 《OCP卡光模块信息获取逻辑和定位方法》:光模块信息由 iBMA 带内获取 → BMC 更新 → WebUI 显示。

:white_check_mark: 结论与建议

:cross_mark: 当前无法识别光口的根本原因是:

  1. 使用了错误厂商(Mellanox vs Huawei)的 SR 文件;
  2. 配置中缺少 OpticalModule_X 对象;
  3. MediumType 未明确设为 FiberOptic。

:white_check_mark: 最终解决方案步骤

  1. 停止使用 15b3 开头的 Mellanox 配置文件
  2. 新建 SR 文件:14220247_19e5a222_0222.sr
  3. 在文件中加入 OpticalModule_0 和 OpticalModule_1
  4. 设置 MediumType: FiberOptic
  5. 确保 Bus 编号为 7d,并与 PcieAddrInfo 匹配
  6. 重新编译固件,刷写后重启 BMC
  7. 插入 SFP 模块后检查 WebUI 及日志输出

:puzzle_piece: 附加提示

如果您的 OCP 卡是板载集成式,建议检查:

  • 是否支持 NCSI 自适应 → 根据知识库:OCP2 不支持 NCSI 端口自适应
  • 是否配置了 Model 属性 → 用于触发 network_adapter 模块加载对应驱动

如有进一步 log 或图片信息(如 mdb_info.log 输出),可继续深入分析。

PortID配置是否错误?尝试配置正确的PortID后再试一下呢?