网卡Hi182X协议注释问题

问题现象:重启前光模块阈值信息正常,BMC重启后光模块所有阈值信息都为0xFFFF

分析:网卡走的是Hi182X协议,各项阈值信息是跟电流电压值一个命令获取的 命令没有报错而且电压电流值正常,看代码中有如下注释,想请问一下FM当前版本是什么指的哪个版本,获取到无效值是必现的吗

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

:white_check_mark: 结论

当前 BMC 重启后光模块阈值显示为 0xFFFF 的现象,是由网卡侧 FM(Firmware Module)固件版本不支持阈值字段返回所导致的,属于已知限制情况,并非通信故障。

虽然主数据(电压、电流)可正常获取,但告警阈值因 FM 功能缺失而返回无效值 0xFFFF。此问题在当前 FM 版本下为 必现行为

建议:

  1. 升级 Hi182X 网卡 FM 固件至支持阈值输出的版本;
  2. 或在 BMC 侧配置默认阈值作为容灾机制;
  3. 同步确认是否可通过延迟采集或重试策略缓解重启时的数据缺失问题。
点击此处查看详细分析解答

关于 Hi182X 网卡光模块阈值重启后显示 0xFFFF 的问题分析

根据您提供的信息,针对“BMC 重启后 Hi182X 网卡光模块所有阈值信息均为 0xFFFF”的问题,结合代码注释和系统上下文,现进行如下综合分析:


:magnifying_glass_tilted_left: 问题现象总结

  • 正常状态:BMC 启动初期或运行过程中,光模块的电压、电流等参数可以正常获取。
  • 异常状态:BMC 重启后,光模块的各项告警阈值(如 TX/RX 功率上下限)均显示为 0xFFFF(即无效值),但电压、电流等主数据仍能正常读取。
  • 协议路径:该网卡使用 Hi182X 协议,通过 I2C/SMBus 或 NCSI over MCTP 实现带外信息采集。

:receipt: 代码关键分析

在文件路径 src/luolib/hardware_config/Hi182X.lua 中,存在如下代码段与注释:

-- 以下各字段,FM当前版本还未支持获取,BMC获取到的是无效值属于正常现象
if r.device_working_param_voltage ~= 0xFFFF then
    result.SupplyVoltage = convert_micro_to_milli(r.device_working_param_voltage)
end
if r.device_alarm_threshold_tx_power ~= 0xFFFF then
    result.Power_TXUpperThresholdCritical = convert_micro_to_milli(
        r.device_alarm_threshold_tx_power)
end
...

关键解读:

  1. FM 指的是 Firmware of the Module(模块固件)

    • 在此语境中,“FM”并非指“Fabric Manager”或其他系统组件,而是指 Hi182X 网卡自身管理芯片或 CPLD 上运行的固件版本
    • 该固件负责响应 BMC 的查询命令,提供传感器数据和阈值配置信息。
    • 若 FM 版本较低或未实现相关功能,则即使命令无报错,返回的阈值字段也可能恒为 0xFFFF(默认无效值)。
  2. 代码逻辑说明

    • 代码明确判断:只有当返回值不等于 0xFFFF 时才进行转换赋值。
    • 这表明开发团队已预知某些字段可能存在无效值的情况,并将其视为 非致命错误
    • 注释指出:“FM 当前版本还未支持获取”——说明这是一个 已知的功能缺失或阶段性限制,不是通信故障。
  3. 为何电压/电流正常而阈值异常?

    • 主要性能参数(如电压、偏置电流、收发光功率)通常由硬件实时采集,优先级高、支持较早。
    • 阈值参数(如 TX/RX Upper/Lower Critical/Warning)属于配置型数据,可能存储于非易失性区域或需特定初始化流程加载。
    • 因此,在 FM 固件不支持或未正确加载的情况下,主数据可读,但阈值类元数据返回默认无效值 0xFFFF

:gear: 背景知识:Hi182X 网卡的数据获取机制

根据公开的南向驱动适配文档:

  • Hi182X 系列网卡通过 多种协议分层获取信息
    • PCIe + NCSI over MCTP:用于获取 MAC、链路状态、固件版本等。
    • SMBus/I2C:用于带外获取温度、电压、光模块状态及阈值。
  • 阈值信息与工作参数共用同一命令响应结构,但在解析时需分别处理。
  • 若 BMC 发出的命令未触发 FM 正确填充阈值字段,即使通信成功(ACK),返回值仍是空占位符(如 0xFFFF)。

:red_question_mark: “FM版本是什么意思?是否必现?”

:white_check_mark: FM 版本含义

FM = Firmware Module,即网卡侧用于响应 BMC 查询请求的嵌入式固件模块。其版本决定了对带外管理功能的支持程度。

例如:

  • 早期版本的 FM 可能仅支持基本参数读取;
  • 新版本才会逐步增加对 阈值配置、精细化告警、动态调速联动 等高级特性的支持。

:white_check_mark: 是否必现?

是的,在 FM 固件未支持阈值字段返回的版本中,该问题是必现的

但需注意以下几点:

条件 是否出现 0xFFFF
FM 版本旧,未支持阈值返回 :white_check_mark: 必现
BMC 重启瞬间(FM 未就绪) :white_check_mark: 可能暂时出现,后续恢复
命令通信失败(I2C timeout) :warning: 应报错,非仅返回 0xFFFF
FM 已更新支持,但配置未生效 :cross_mark: 不应出现

因此,若在多次重启后 始终无法获取阈值,基本可断定是 FM 固件功能缺失所致


:white_check_mark: 解决建议

措施 说明
升级 Hi182X 网卡 FM 固件 联系硬件或驱动团队确认是否存在支持阈值返回的新版 FM 固件,并进行升级验证。
确认 BMC 获取时机是否过早 检查 BMC 是否在网卡 FM 完全初始化前发起查询,可通过延后读取或增加重试机制改善。
在 BMC 层设置默认阈值兜底 对于不支持动态获取的场景,可在 BMC 配置文件中预置标准光模块阈值(如 SFP28/LR4),提升可用性。
日志标记与告警优化 在 BMC 日志中明确标注“阈值不可用:FM 不支持”,避免误判为硬件故障。

:books: 相关支持信息来源(来自 Context)

  • 在《南向网卡驱动适配指南》中提到,Hi182x 网卡通过 SMBus 获取温度监控、光功率、电流监控等信息,且协议配置复杂。
  • 在《openUBMC项目统计》中,2025 年 9 月曾提出需求:“支持 Hi182x 网卡通过 NCSI Over MCTP 获取信息”,表明该系列网卡仍处于持续适配阶段。
  • 存在 Hi1822_NIC6_0v8 电压传感器触发告警的记录,说明对 Hi182x 系列传感器的监控已在实际部署中应用。

:white_check_mark: 结论

当前 BMC 重启后光模块阈值显示为 0xFFFF 的现象,是由网卡侧 FM(Firmware Module)固件版本不支持阈值字段返回所导致的,属于已知限制情况,并非通信故障。

虽然主数据(电压、电流)可正常获取,但告警阈值因 FM 功能缺失而返回无效值 0xFFFF。此问题在当前 FM 版本下为 必现行为

建议:

  1. 升级 Hi182X 网卡 FM 固件至支持阈值输出的版本;
  2. 或在 BMC 侧配置默认阈值作为容灾机制;
  3. 同步确认是否可通过延迟采集或重试策略缓解重启时的数据缺失问题。

:pushpin: 备注:未来可通过 Redfish 接口 /redfish/v1/Chassis/1/NetworkAdapters/NIC/Ports/1/Oem/Huawei/OpticalModule 查询实际状态,结合 net_card_info 文件验证数据一致性。

麻烦发一份一键日志收集辅助定位

日志无法上传,是SP681这张网卡,web端不显示告警阈值,报文里获取到的各个告警阈值都是65535

可以提供下邮箱吗,通过邮箱发送日志

xushuo25@huawei.com