【已评审】新增NicRouteReg对象支持网卡固件升级配置多级路由

背景

1825网卡固件升级新增场景,走SPI链路升级,链路上有扩展:
在升级固件时,需要先控制管理板CPLD将SPI选通到网卡板,再由网卡板的CPLD把SPI分别透传到1825Flash;

graph LR
    subgraph BMC管理板
        A[("BMC")]
        B[("管理板CPLD")]
        C[("SFC MUX")]
    end

    subgraph 网卡板
        D[("1825 CPLD")]
        E[("BIOS Flash")]
        F[("1825 Flash *4")]
    end

    A --> |"Localbus"|B
    A --> |"SFC"|C
    B --> |"控制选通"|C
    C --> |"信号输出"|D
    C --> |"信号输出"|E
    D --> |"SPI *4"|F

    style A fill:#e1f5ff,stroke:#01579b,stroke-width:2px
    style B fill:#fff3e0,stroke:#e65100,stroke-width:2px
    style C fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
    style D fill:#e8f2e9,stroke:#2e7d32,stroke-width:2px
    style E fill:#fce4ec,stroke:#c2185b,stroke-width:2px
    style F fill:#fff8e1,stroke:#ff8f00,stroke-width:2px

目前实现:

"NetworkAdapterFirmware_1": {
    ...
    "Protocol": "SFC",
    "Route": "#/Accesspr_RNIC_Switch.Value",
    "DefaultRoute": 0,
    "FirmwareRoute": 1
    ...
}

目前的功能仅支持在CSR中配置1个路由寄存器,需要补充支持配置2级路由;

整体方案

  1. 新增NicRouteReg CSR对象类型,参考CpldRestoreReg设计模式

  2. 每个NicRouteReg对象包含:RouteReg(路由寄存器accessor引用)、FirmwareRoute(升级路由值)、DefaultRoute(默认路由值)、RouteOrder(路由级数顺序)、RefNetworkAdapterFirmware(关联NetworkAdapterFirmware)

  3. 对象分发时,NicRouteReg通过RefNetworkAdapterFirmware关联到对应的NetworkAdapterFirmware,形成route_regs数组

  4. 升级时遍历route_regs数组,按RouteOrder排序依次设置/恢复路由

  5. 保持原有Route/DefaultRoute/FirmwareRoute属性不变,实现向后兼容

涉及组件

network_adapter

评审点

新增对象NicRouteReg,用于网卡升级过程中配置多级路由寄存器

详细描述

新增对象NicRouteReg对象

属性名称 涉及对象 资源path 变化类型 属性说明 持久化类型 取值说明
RouteReg network_adapter组件的NicRouteReg对象 无 新增私有属性 待设置与恢复的路由寄存器对象 不持久化 关联Accessor寄存器对象,格式#/Accessor_*.Value
FirmwareRoute network_adapter组件的NicRouteReg对象 无 新增私有属性 升级时设置的路由值 不持久化 取值为U8,升级时写入RouteReg的值
DefaultRoute network_adapter组件的NicRouteReg对象 无 新增私有属性 升级后恢复的默认路由值 不持久化 取值为U8,升级完成后写入RouteReg的值
RouteOrder network_adapter组件的NicRouteReg对象 无 新增私有属性 路由级数顺序 不持久化 取值为U8,1=一级路由,2=二级路由…默认值:0
RefNetworkAdapterFirmware network_adapter组件的NicRouteReg对象 无 新增私有属性 该对象关联的NetworkAdapterFirmware对象 不持久化 关联NetworkAdapterFirmware对象

配置举例:

"NetworkAdapterFirmware_1": {
    ...
    "Protocol": "SFC",
    ...
},
"NicRouteReg_1": {
    "RouteReg": "#/Accessor_NicRoute1.Value",
    "FirmwareRoute": 5,
    "DefaultRoute": 0,
    "RouteOrder": 1,
    "RefNetworkAdapterFirmware": "#/NetworkAdapterFirmware_1"
},
"NicRouteReg_2": {
    "RouteReg": "#/Accessor_NicRoute2.Value",
    "FirmwareRoute": 10,
    "DefaultRoute": 0,
    "RouteOrder": 2,
    "RefNetworkAdapterFirmware": "#/NetworkAdapterFirmware_1"
}

以上配置含义中,各路由寄存器的配置策略如下:

  • NicRouteReg_1:一级路由,升级时设置RouteReg为5,升级后恢复为0
  • NicRouteReg_2:二级路由,升级时设置RouteReg为10,升级后恢复为0

是否准备好AI预审

是

评审结论

评审通过,调整如下:

  1. 新增的对象名调整为 NicUpgradeRoute;
  2. 考虑进程异常重启场景,初始化时通过DefaultRoute属性切换到默认路由;