SF400T网卡合入南向组件编译仓后无法获取网卡温度以及网口状态

// 此模板仅供参考,如果不适用可以修改

问题描述

为适配网讯SF400T网卡,2512LTS合入南向组件编译仓。合入后静态信息可以正常显示,但是无法获取网卡温度以及网口状态。

网口0是能正常连接的

环境信息

  • 操作系统:kylin

  • 软件版本:OpenUBMC2512LTS

  • 硬件配置:鲲鹏920B/920BS

期望结果

可以正常获取网卡温度以及网口状态

实际结果

无法正常获取网卡温度以及网口状态

尝试过的解决方案

按这篇帖子的解决方法尝试修改编译component_drivers组件,但是由于CRC32函数报错无法编译组件;修改CRC32函数名为支持版本后可编译组件但无法编译整包,会卡在CRC32函数
25.12版本SF200HT网卡温度获取不到 - 交流互助区 - openUBMC 论坛

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

总结

项目 状态 说明
温度获取失败 :white_check_mark: 已定位 MCTP endpoint未建立,源于devmon服务或驱动配置问题
网口状态异常 :white_check_mark: 已定位 因NCSI over MCTP通信失败,无法获取MAC、LLDP、链路状态
根本原因 南向驱动适配不完整 SR文件、devmon服务、MCTP/NCSI协议栈协同问题
解决方向 启动devmon + 确认SR匹配 + 升级component_drivers

建议优先执行“启动devmon服务”操作,并确认其自动加载机制已在系统启动脚本中启用。

点击此处查看详细分析解答

SF400T网卡合入南向组件后无法获取温度与网口状态问题分析

问题概述

在将网讯SF400T网卡适配至OpenUBMC 2512LTS版本的南向组件编译仓后,虽然静态信息(如网卡名称、厂商、芯片型号等)可以正常显示,但无法获取网卡温度以及网口状态显示异常(全部显示为"–"),系统产生告警:“Failed to obtain data of the PCIe Card 6 (SF400T) temperature”。

根本原因分析

根据上下文信息,该问题是由于南向驱动适配不完整或配置错误导致的,具体可归结为以下几点:

1. 网卡温度获取失败

  • 驱动与协议问题:从知识库中 Document Chunks(DC) 的第2个文档可知,在25.12版本中,SF200HT网卡迁移到南向驱动组件后,通过 MCTP over SMBus 获取温度数据时会因 endpoint没有上树 导致失败。这一现象与当前SF400T的问题高度相似。
  • MCTP endpoint创建失败:日志显示 mctp::request create_endpoint failed, false,说明MCTP通信通道未能成功建立。这通常是由于:
    • 相关驱动模块(如devmon服务)未正确加载
    • 网卡四元组(VID/DID/SVID/SDID)识别错误或SR文件未正确匹配
    • BMC与网卡之间的SMBus/MCTP通信异常
  • Endpoint管理问题devmon 服务负责管理设备发现和endpoint注册。若该服务未启动或配置不当,会导致网卡的管理endpoint无法创建,进而导致温度、MAC地址、LLDP等信息获取失败。

2. 网口状态异常

  • NCSI命令发送失败:日志中多次出现 Error: failed to send NCSI get MAC address commandError: failed to send NCSI get LLDP status command,说明NCSI(Network Controller Sideband Interface)通信失败
  • 链路状态无法更新Error: Failed to update link status 表明链路状态获取机制中断,原因同样是底层通信(MCTP over SMBus)失败。
  • 静态信息正常而动态状态异常ifconfigping 命令证明网卡的OS驱动(ngbe)工作正常,物理层连通性良好。问题仅存在于BMC侧的带外管理层面。

关联证据支持

证据来源 内容摘要
KG实体: drivers/pcie_nic_card/wangxun/csr/*.sr 存在多个网讯(Wangxun)网卡SR文件,表明系统已支持此类网卡,但需确保SR文件名(基于BOM+ID+AUXID)与SF400T的硬件信息严格匹配。
KG实体: Event_TempFail 事件"PcieCard.PCIeCardTempFail"用于报告PCIe卡温度获取失败,与当前告警 “Failed to obtain data…” 一致。
KG关系: NIC_OPT0_TempRedfish 温度数据通过Redfish API暴露,若底层采集失败,则Redfish接口也无法提供有效值。
DC文档2 明确指出25.12版本SF200HT网卡存在"endpoint没有上树"问题,直接对应当前现象。
DC文档4 提到devmon服务需手动加载,并可通过setprop修改Presence属性触发重新发现,是关键解决方案之一。

解决方案建议

:white_check_mark: 步骤1:确认SR文件正确配置

确保为SF400T网卡生成了正确的SR文件,命名格式应符合南向驱动规范(如14140130_<VID>_<DID>_<SVID>_<SDID>.sr),并已包含在component_drivers组件中。

参考:manifest文件中列出的SR文件路径 drivers/pcie_nic_card/wangxun/csr/...


:white_check_mark: 步骤2:检查并启动devmon服务

# 检查devmon服务是否存在
ls /opt/bmc/apps/devmon/

# 手动启动devmon服务
cd /opt/bmc/apps/devmon/
./devmon_start.sh  # 或根据实际脚本名称执行

# 查看Connector对象是否创建成功
mdbctl lsobj Connector
mdbctl lsprop Connector

Connector对象未正确识别网卡四元组,则使用setprop手动设置ID和AuxId。


:white_check_mark: 步骤3:验证MCTP Endpoint注册

检查MCTP endpoint是否成功创建:

# 观察系统日志中mctp相关错误
journalctl -u mctp* | grep "create_endpoint"

# 确认endpoint是否上树
mctp-tool list-endpoints

若失败,可尝试手动注入endpoint(适用于早期版本)。


:white_check_mark: 步骤4:修复编译依赖问题(针对CRC32错误)

您提到尝试修改component_drivers时遇到CRC32函数报错:

  • 该问题可能源于Conan包版本不匹配
  • 查看提供的manifest变更记录,component_drivers已从 1.2.2 升级至 1.2.3@openubmc/stable

建议操作

# 确保 build/subsys/stable/framework.yml 中依赖正确:
dependencies:
  - conan: "component_drivers/1.2.3@openubmc/stable"
  - conan: "devmon/1.2.2@openubmc/stable"

同步最新manifest仓库,避免手动修改底层代码导致兼容性问题。


:white_check_mark: 步骤5:配置TemperatureStatus防抖逻辑(可选)

参考知识库中TemperatureStatus的表达式:

"ReadingStatus": "<=/::FruCtrl_1_0.PowerState;<=/NetworkAdapter_1.TemperatureStatus |> expr($1 == ‘OFF’ ? 1 : $2)"

此配置可在网卡下电时自动将TemperatureStatus置为异常(1),防止显示“死值”。


总结

项目 状态 说明
温度获取失败 :white_check_mark: 已定位 MCTP endpoint未建立,源于devmon服务或驱动配置问题
网口状态异常 :white_check_mark: 已定位 因NCSI over MCTP通信失败,无法获取MAC、LLDP、链路状态
根本原因 南向驱动适配不完整 SR文件、devmon服务、MCTP/NCSI协议栈协同问题
解决方向 启动devmon + 确认SR匹配 + 升级component_drivers

建议优先执行“启动devmon服务”操作,并确认其自动加载机制已在系统启动脚本中启用。

能否发一份一键日志收集文件辅助定位。

您好

1,首先确认下网卡硬件上是否支持smbus,卡标签显示recv b04,04之前的卡硬件上不支持smbus。

2,网卡固件10016版本不支持mctp over smbus,要10019及以上版本才支持,需要联系网卡厂商对接人员更新网卡固件。

问题出在扩展板不支持smbus主备切换,更新南向驱动仓至社区330版本,并联系网卡厂商定制固件即可正常获取信息