【待评审】南向1825网卡支持PRBS测试新增方法

背景

PRBS(Pseudo-Random Binary Sequence,伪随机二进制序列)是物理端口研发和生产中用于评估其传输质量的核心测试信号。它模拟真实数据流的随机性,通过对比发送和接收的码流来计算误码率,从而衡量物理端口的性能。

当前 BMC 已支持光模块 PRBS 测试能力,在此基础上还需要1825大板和1825扩展卡的端口和光模块进行PRBS测试。

关联ISSUE

整体方案

在现有光模块 PRBS 测试能力基础上,扩展 PRBS 测试对象到1825大板和1825扩展卡的端口和光模块。

Redfish触发PRBS测试时,整体流程在network_adapter应用层中控制(复用已有NPU 光模块的能力), 应用层发送设备树RPC到南向网卡,再由南向发送smbus报文到网卡触发PRBS测试。

sequenceDiagram
    participant Redfish as Redfish
    participant prbs as network应用层prbs管理
    participant obj as 南向网卡部件
    participant NIC as 1825网卡

    %% 场景1:配置光模块PRBS测试
    Redfish->>prbs: 配置端口/光模块prbs
    prbs->>obj: rpc配置prbs测试
    obj->>NIC: SMBus命令(配置项/测试时长/码型)
    NIC-->>obj: 返回exe_result
    obj-->>prbs: 返回exe_result
    prbs->>prbs: 启动prbs测试监测任务
    loop 轮询
        prbs->>obj: rpc查询prbs结果
        obj->>NIC: SMBus命令
        NIC-->>obj: 返回误码率/失锁等结果
        obj-->>prbs: 返回结果
        prbs-->>prbs: 缓存测试结果
        alt 测试超时则终止任务
            prbs->>obj: rpc下发终止测试
            obj->>NIC: 下发SMBus命令终止测试
            NIC-->>obj: 返回exe_result
            obj-->>prbs: 返回exe_result
            prbs->>prbs: 测试对象从running_test_list移除
        end
    end
    prbs-->>Redfish: 返回配置结果

    %% 场景3:查询光模块PRBS测试结果
    Redfish->>prbs: 查询PRBS测试结果
    prbs-->>Redfish: 从本地缓存中返回查询结果

    %% 场景4:清除光模块PRBS测试统计结果
    Redfish->>prbs: 清除prbs测试统计
    prbs->>obj: rpc清除PRBS统计
    obj->>NIC: SMBus命令
    NIC-->>obj: 返回exe_result
    obj-->>prbs: 返回exe_result
    prbs-->>Redfish: 返回exe_result

    %% 场景5:关闭光模块PRBS测试

    Redfish->>prbs: 触发关闭PRBS测试
    prbs->>obj: rpc关闭prbs测试
    obj->>NIC: SMBus命令
    NIC-->>obj: 返回exe_result
    obj-->>prbs: 返回exe_result
    prbs-->>Redfish: 返回关闭结果

复用NPU光模块prbs控制流程,1825端口和光模块整体控制流程在应用层

评审点

评审点 标题 接口类型
评审点一 新增设备树资源协作接口bmc.dev.PRBSTest 南向接口规范
评审点二 设备树资源协作接口bmc.dev.PRBSTest新增方法GetState 南向接口规范
评审点三 设备树资源协作接口bmc.dev.PRBSTest新增方法Config 南向接口规范
评审点四 设备树资源协作接口bmc.dev.PRBSTest新增方法ClearStatistics 南向接口规范
评审点五 设备树资源协作接口bmc.dev.PRBSTest新增方法GetResult 南向接口规范
评审点六 设备树资源协作接口bmc.dev.PRBSTest新增方法Close 南向接口规范

详细描述

评审点一:新增设备树资源协作接口bmc.dev.PRBSTest

资源协作接口: bmc.dev.PRBSTest

资源路径: /bmc/dev/Systems/${SystemId}/PCIeNicCard/{PCIeNicCardId}

接口描述: 描述南向网卡PRBS测试能力,提供PRBS测试状态查询、配置、清除统计、查询结果和关闭测试等PRBS测试管理方法

评审点二:设备树资源协作接口bmc.dev.PRBSTest新增方法GetState

资源协作接口: bmc.dev.PRBSTest

新增方法

方法名称 请求签名 请求参数描述 响应签名 响应参数描述 方法描述
GetState sy TestType: PRBS测试类型,包括OpticalModule和Port, String类型
TestId: 光模块/端口的Id, U8类型
yyy Result: 返回结果,0:执行成功;1:执行失败;2:不支持prbs, U8类型
SupportedType: 被请求的光模块或者端口的支持的PRBS类型,0-不支持,1-CMIS定义,2-海思自定义, U8类型
TestState: 被请求的光模块或者端口的测试状态,0-非测试状态,1-Tx使能,2-Rx使能,3-TxRx均可以, U8类型
查询光模块或端口的PRBS测试状态

评审点三:设备树资源协作接口bmc.dev.PRBSTest新增方法Config

资源协作接口: bmc.dev.PRBSTest

新增方法

方法名称 请求签名 请求参数描述 响应签名 响应参数描述 方法描述
Config syyyu TestType: PRBS测试类型,包括OpticalModule和Port, String类型
TestId: 光模块/端口的Id, U8类型
ConfigItem: 配置项,0-启动prbs发送,1-启动prbs接口,2-同时启动prbs发送接收, U8类型
PrbsType: prbs码型, U8类型
TestTime: 测试时长,单位秒, U32类型
y Result: 返回结果,0:执行成功;1:执行失败;2:不支持prbs, U8类型 配置光模块或端口的PRBS测试

评审点四:设备树资源协作接口bmc.dev.PRBSTest新增方法ClearStatistics

资源协作接口: bmc.dev.PRBSTest

新增方法

方法名称 请求签名 请求参数描述 响应签名 响应参数描述 方法描述
ClearStatistics sy TestType: PRBS测试类型,包括OpticalModule和Port, String类型
TestId: 光模块/端口的Id, U8类型
y Result: 返回结果,0:执行成功;1:执行失败;2:不支持prbs, U8类型 清除光模块或端口的PRBS测试统计结果

评审点五:设备树资源协作接口bmc.dev.PRBSTest新增方法GetResult

资源协作接口: bmc.dev.PRBSTest

新增方法

方法名称 请求签名 请求参数描述 响应签名 响应参数描述 方法描述
GetResult sy TestType: PRBS测试类型,包括OpticalModule和Port, String类型
TestId: 光模块/端口的Id, U8类型
yauuu Result: 返回结果,0:执行成功;1:执行失败;2:不支持prbs, U8类型
ErrorBitRate: 预留8个通道的误码率,每个通道4字节, Array类型
RxLostOfLock: 8个通道测试过程中RX失锁状态位图, U32类型
TxLostOfLock: 8个通道测试过程中Tx失锁状态位图, U32类型
查询光模块或端口的PRBS测试结果

评审点六:设备树资源协作接口bmc.dev.PRBSTest新增方法Close

资源协作接口: bmc.dev.PRBSTest

新增方法

方法名称 请求签名 请求参数描述 响应签名 响应参数描述 方法描述
Close sy TestType: PRBS测试类型,包括OpticalModule和Port, String类型
TestId: 光模块/端口的Id, U8类型
y Result: 返回结果,0:执行成功;1:执行失败;2:不支持prbs, U8类型 关闭光模块或端口的PRBS测试

是否准备好AI预审

评审结论

  • 同意新增资源协作接口
    • 资源协作接口:bmc.dev.PRBSTest
    • 资源路径:/bmc/dev/Systems/${SystemId}/PCIeNicCard/{PCIeNicCardId}
  • 同意资源协作接口新增方法GetState,查询PRBS测试状态
    • 对应接口:bmc.dev.PRBSTest
    • 入参:1、TestType表示PRBS测试类型,类型为string,取值支持"OpticalModule"、“Port”,分别表示光模块和端口。2、TestId表示光模块/端口的Id,类型为U8
    • 响应参数:1、Result表示返回结果,类型为U8,取值:0-执行成功、1-执行失败、2-不支持prbs。2、SupportedType表示被请求的光模块或者端口的支持的PRBS类型,类型为U8,取值:0-不支持、1-CMIS定义、2-海思自定义。3、TestState表示被请求的光模块或者端口的测试状态,类型为U8,取值:0-非测试状态、1-Tx使能、2-Rx使能、3-TxRx均可以
  • 同意资源协作接口新增方法Config,配置PRBS测试
    • 对应接口:bmc.dev.PRBSTest
    • 入参:1、TestType表示PRBS测试类型,类型为string,取值支持"OpticalModule"、“Port”。2、TestId表示光模块/端口的Id,类型为U8。3、ConfigItem表示配置项,类型为U8,取值:0-启动prbs发送、1-启动prbs接口、2-同时启动prbs发送接收。4、PrbsType表示prbs码型,类型为U8。5、TestTime表示测试时长,类型为U32,单位秒
    • 响应参数:1、Result表示返回结果,类型为U8,取值:0-执行成功、1-执行失败、2-不支持prbs
  • 同意资源协作接口新增方法ClearStatistics,清除PRBS测试统计
    • 对应接口:bmc.dev.PRBSTest
    • 入参:1、TestType表示PRBS测试类型,类型为string,取值支持"OpticalModule"、“Port”。2、TestId表示光模块/端口的Id,类型为U8
    • 响应参数:1、Result表示返回结果,类型为U8,取值:0-执行成功、1-执行失败、2-不支持prbs
  • 同意资源协作接口新增方法GetResult,查询PRBS测试结果
    • 对应接口:bmc.dev.PRBSTest
    • 入参:1、TestType表示PRBS测试类型,类型为string,取值支持"OpticalModule"、“Port”。2、TestId表示光模块/端口的Id,类型为U8
    • 响应参数:1、Result表示返回结果,类型为U8,取值:0-执行成功、1-执行失败、2-不支持prbs。2、ErrorBitRate表示预留8个通道的误码率,每个通道4字节。3、RxLostOfLock表示8个通道测试过程中RX失锁状态位图,类型为U32。4、TxLostOfLock表示8个通道测试过程中Tx失锁状态位图,类型为U32
  • 同意资源协作接口新增方法Close,关闭PRBS测试
    • 对应接口:bmc.dev.PRBSTest
    • 入参:1、TestType表示PRBS测试类型,类型为string,取值支持"OpticalModule"、“Port”。2、TestId表示光模块/端口的Id,类型为U8
    • 响应参数:1、Result表示返回结果,类型为U8,取值:0-执行成功、1-执行失败、2-不支持prbs

遗留问题

1、RxLostOfLock和TxLostOfLock的 U8类型需要改成U32, 获取不到时使用全F。
闭环:已修改
2、PrbsType: prbs码型, U8类型 补充一下说明有哪些值

建议把目标对象补到入参里。现在只有 TestType 和报文,多卡多端口时没法确定测的是哪个口。Result 也建议区分“下发成功”和“测试通过”。