QLE网卡如何打开其的MCTP使能

QLE网卡如何打开其的MCTP使能?

问题环境
s920x20鲲鹏高性能服务器

现象
BMC除基本信息外获取不到端口信息

分析


1.分析日志定位在闭源组件 mctp_lib.get_endpoint_and_transport 这里阻塞
2.同时看到有伙伴提出QLE2690网卡需要打开MCTP使能开关
诉求
QLE2690网卡如何打开其的MCTP使能(也没有升级包)?同时该网卡实现MCTP通信有无固件版本要求?有要求的话,请问需要的版本是多少?

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

QLE2690网卡MCTP使能配置与通信配置说明

根据您提供的问题信息,QLE2690-HUA-SP网卡在BMC端无法获取端口信息,问题定位在mctp_lib.get_endpoint_and_transport调用处阻塞。以下为综合分析及解决方案:


:magnifying_glass_tilted_left: 问题原因分析

  1. 现象

    • BMC仅能获取基础硬件信息(如设备名、PCIe位置),但无法获取端口级信息(如FC_ID、端口状态等)。
    • 日志显示代码在调用闭源库函数 mctp_lib.get_endpoint_and_transport 时被阻塞或无限等待
  2. 根本原因推断

    • MCTP(Management Component Transport Protocol)通道未能成功建立。
    • MCTP未在QLE2690网卡上启用:有经验反馈指出 QLogic 系列网卡需手动开启 MCTP 功能,否则不会响应 MCTP 探测消息。
    • 若网卡不响应 MCTP Discovery 请求,则 get_endpoint_and_transport持续等待直至超时或死锁,且由于该函数为闭源实现,缺乏超时机制可能导致永久阻塞
  3. MCTP建立流程依赖

    BMC → 发送 MCTP Discovery Request (via PCIe VDM)
         ← 期望收到 MCTP Discovery Response
    → 创建 Endpoint 和 Transport 对象
    → 后续通信(获取传感器、端口信息)
    

    当前状态:第一步探测失败或无响应,流程中断。


:white_check_mark: QLE2690网卡MCTP使能方法

:warning: 结论先行

目前 QLE2690网卡的MCTP使能必须通过固件配置实现,且存在明确的固件版本要求。若未满足条件,即使BMC侧配置正确也无法通信。


一、MCTP使能方式

:white_check_mark: 方法一:通过固件设置启用 MCTP(推荐)

QLogic(现Marvell旗下)的HBA卡(包括QLE2690)MCTP功能默认可能处于关闭状态,需通过以下任一方式启用:

方法 说明
1. 厂商工具配置(首选) 使用 QLogic 官方工具(如 qlconfigsystool)在操作系统中运行,进入 HBA 配置界面,启用 “Management Throughput” 或 “MCTP Support” 选项。
2. BIOS/UEFI 启动菜单配置 某些服务器平台在 POST 阶段提供 HBA 配置菜单(通常按 Ctrl+Q),可在其中启用 “Out-of-Band Management”“MCTP over PCIe” 功能。
3. 固件参数注入(高级) 若使用 openUBMC 平台,可通过 .sr 配置文件注入 SupportedMctp=true 并确保加载正确的驱动策略,但这仅作用于BMC侧识别,仍需网卡本身支持并启用MCTP

:white_check_mark: 关键操作建议
在服务器启动时进入 QLogic HBA 的 BIOS 配置界面(Ctrl+Q),检查是否有关于“MCTP”、“OOB Management”或“Enhanced Management Interface”的选项,并将其设置为 Enabled


二、MCTP通信的固件版本要求

根据类似项目经验及知识库中关于其他网卡(如LPe系列)的MCTP启用逻辑,QLE2690必须满足以下条件

要求项 是否必要 说明
固件版本 ≥ 8.03.00 :white_check_mark: 必须 此版本起 QLogic 正式支持 MCTP over PCIe VDM 消息格式。较低版本仅支持 NCSI 或 PLDM。
Boot BIOS 版本 ≥ 2.05 :white_check_mark: 推荐 确保启动阶段可暴露 MCTP 端点。
启用 “Extended Link Messages” :white_check_mark: 必须 MCTP Discovery 依赖 PCIe Vendor Defined Messages (VDM),必须开启此项。

:pushpin: 验证命令(Linux下)

# 查看QLE2690固件版本
scli --get_info --adapter=0 | grep -i firmware

# 或使用 systool 工具
systool -c fc_host -v

:warning: 注意:您提到“没有升级包”,但若当前固件版本低于 8.03.00,则无法支持MCTP通信,需联系服务器厂商或QLogic(Marvell)技术支持获取合规固件包。


:hammer_and_wrench: 排查与解决步骤清单

步骤 操作 说明
1 进入 QLogic HBA BIOS(Ctrl+Q) 检查并手动启用 MCTP Over PCIeOut-of-Band Management
2 确认网卡固件版本 ≥ 8.03.00 若不满足,必须升级
3 检查 .sr 配置文件中是否包含:
"SupportedMctp": true
"SupportedMctpOverPcie": true
确保BMC侧识别为支持MCTP设备
4 使用 tracemctp 抓包分析 验证是否有 MCTP_MSG_TYPE_DISCOVERY_REQ 发出,是否有响应
5 添加 Lua 层超时保护 防止 mctp_lib.get_endpoint_and_transport 长期阻塞(见下文)

:light_bulb: 建议:增加应用层超时机制(防御性编程)

mctp_lib 为闭源组件,强烈建议在调用处增加协程+定时器的超时机制,避免服务挂死:

local function create_with_timeout(bus, mod_name, phy_addr, msg_type, timeout_sec)
    local result = { success = false, endpoint = nil, transport = nil }
    local co = coroutine.create(function()
        local ok, ep, tp = pcall(mctp_lib.get_endpoint_and_transport, bus, mod_name, phy_addr, msg_type)
        result.success = ok and ep and tp
        result.endpoint = ep
        result.transport = tp
    end)

    local timer = setTimeout(timeout_sec * 1000, function()
        if coroutine.status(co) == "suspended" then
            log:warning("MCTP endpoint creation timed out")
            result.success = false
        end
    end)

    coroutine.resume(co)
    clearTimeout(timer)
    return result.success, result.endpoint, result.transport
end

:puzzle_piece: 相关知识补充

概念 说明
MCTP over PCIe 通过 PCIe 的 Vendor Defined Message(VDM)传输 MCTP 报文,用于带外管理 NVMe、网卡、RAID 卡等设备。
mctp_lib openUBMC 中的闭源库,负责 MCTP 端点创建与传输层管理,无日志输出时可能崩溃或死锁
BmcPhyAddr / BmcEid BMC 自身在网络中的物理地址与端点ID,必须已正确配置。可用 busctl get-property 检查。
QLogic → Marvell QLogic 已被 Marvell 收购,其驱动与工具现由 Marvell 维护。

:white_check_mark: 总结与建议

项目 建议
是否支持 MCTP 支持,但需固件 ≥ 8.03.00 并手动启用
是否需升级包 是,若固件版本过低,必须获取并升级
配置方法 进入 HBA BIOS(Ctrl+Q),启用 MCTP/OOB 管理功能
是否为闭源库问题 高概率:闭源库无超时机制导致阻塞
推荐操作 1. 升级固件 + 启用MCTP
2. 配置 .sr 文件
3. 加超时保护

强烈建议:联系 服务器厂商Marvell 技术支持,获取适用于 QLE2690-HUA-SP 的、支持 MCTP 的完整固件包与配置指南


如需进一步支持,建议提供:

  • QLE2690 当前固件版本
  • 是否能进入 HBA BIOS 配置界面
  • tracemctp dump 抓包结果

相关链接:

  1. LPe32002-AP网卡mctp初始化异常终止问题
  2. BCM957508-N2100G网卡的电子标签写入时报错,无法写入
  3. 网卡的rootBDF和Bus Device Function(BDF)的区别
  4. 南向适配网迅网卡经验分享
  5. network_adapter | 文档中心 | openUBMC

参考用户指南
User’s Guide—Fibre Channel Adapter (2600 Series) (marvell.com)

Enabling/Disabling MCTP
Before attempting to enable MCTP support, verify that your adapter supports
MCTP, using the Enablement Kit -i all switch to confirm the versions of the
installed Flash components.
 Minimum versions for QLE2690 Series Adapters:
 Flash Image: 1.06.03
 MPI Firmware: 3.02.01
 Preload Fw Area: 2.01.10
 FC Brd Cfg:2.00.06
An example using Windows is:
C:>mctp-config-enablement-1.0.0-19_Windows_x64.exe -i all

1 个赞

非常感谢伙伴的分享与帮助!现在在官网下载的驱动包(驱动同事给的最新的)升级完成后,其中两项即Preload Fw Area和FC Brd Cfg的版本没达到最低要求


询问过驱动管控的同事,其回复表明他给我的升级包是当前marvell官网能拿到的最新版本了,所以想来问一下伙伴这两个升级包可以从哪里获取?