背景
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级路由;
整体方案
-
新增NicRouteReg CSR对象类型,参考CpldRestoreReg设计模式
-
每个NicRouteReg对象包含:RouteReg(路由寄存器accessor引用)、FirmwareRoute(升级路由值)、DefaultRoute(默认路由值)、RouteOrder(路由级数顺序)、RefNetworkAdapterFirmware(关联NetworkAdapterFirmware)
-
对象分发时,NicRouteReg通过RefNetworkAdapterFirmware关联到对应的NetworkAdapterFirmware,形成route_regs数组
-
升级时遍历route_regs数组,按RouteOrder排序依次设置/恢复路由
-
保持原有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预审
是
评审结论
评审通过,调整如下:
- 新增的对象名调整为 NicUpgradeRoute;
- 考虑进程异常重启场景,初始化时通过DefaultRoute属性切换到默认路由;