背景
182x网卡需要支持网卡网口数量的动态配置和切换,实现网卡从2网口模式到4网口模式的灵活切换,满足不同业务场景需求
关联ISSUE
https://gitcode.com/openUBMC/network_adapter/issues/227
整体方案
1、新增资源协作对象和接口承载预加载端口数量,可由web和redfish接口查询和设置;
2、配置两个不同的网卡CSR文件分别对应2网口和4网口,自发现根据预加载端口数量选择加载不同的网卡CSR文件;
"NetworkAdapterPreload_1": {
"PortCount": 2,
"PortCountAllowableValues": [2, 4]
},
"Connector_PCIE_2Port": {
"Bom": "14140130",
"Slot": 3,
"Presence": "<=/NetworkAdapterPreload_1.PortCount|> expr($1 == 2 ? 1 : 0)",
"Id": "111",
"AuxId": "222"
},
"Connector_PCIE_4Port": {
"Bom": "14140130",
"Slot": 3,
"Presence": "<=/NetworkAdapterPreload_1.PortCount|> expr($1 == 4 ? 1 : 0)",
"Id": "aaa",
"AuxId": "bbb"
}
评审点
1、新增资源
path:/bmc/kepler/Systems/:SystemId/NetworkAdapterPreloads/:ID
interface:bmc.kepler.Systems.NetworkAdapter.PortConfig
详细描述
属性评审点
| 属性名称 | 签名 | 只读 | 变化通知 | 属性描述 | 访问权限 | 属性来源 | 持久化类型 | 易变属性 |
|---|---|---|---|---|---|---|---|---|
| PortCount | y | true | true | 预加载端口数量 | Read: ReadOnly | CSR配置 | 掉电持久化 | false |
| PortCountAllowableValues | ay | true | false | 预加载端口数量取值,例如[2,4]表示支持配置成2口或4口 | Read: ReadOnly | CSR配置 | 无 | false |
| NodeId | s | true | false | 唯一标识,由网卡名加槽位号拼接而成,用于匹配该对象管理的网卡,例如EthernetAdapter1 | Read: ReadOnly | CSR配置 | 掉电持久化 | false |
方法评审点
需新增资源协作方法设置PortCount属性;
新增方法的原因:
用户设置了预加载网口数量后,BMC需要先给网卡发送命令下发此配置,再把原来的网卡相关对象卸载掉,加载新的网卡CSR文件。如果北向接口直接修改PortCount属性会出现以下问题:例如PortCount从4变到2,Connector_PCIE_4Port的presence会从1变到0,它之前加载的下一级网卡对象会被卸载,没有网卡对象就不能发送命令,因此需要新增资源协作方法保证先给网卡发送命令,再修改PortCount属性;
| 方法名 | 请求签名 | 请求参数描述 | 响应签名 | 响应参数描述 | 方法描述 | 访问权限 |
|---|---|---|---|---|---|---|
| SetPortCount | y | PortCount:预加载端口数量 | - | - | 设置预加载端口数量 | BasicSetting |
评审结论
同意新增如下资源协作对象路径和接口,用于定义网卡设备识别时的预加载配置
path:/bmc/kepler/Systems/:SystemId/NetworkAdapterPreloads/:Id
interface:bmc.kepler.Systems.NetworkAdapter.PortConfig
属性:
- PortCount,签名为y,只读,读权限为RedOnly,来源于CSR,属性变化后发送通知信号,掉电持久化;
- PortCountAllowableValues,签名为aq,只读,读权限为RedOnly,来源于CSR,无持久化;
- NodeId,签名为s,只读,读权限为ReadOnly,来源于CSR,掉电持久化;
方法:
- SetPortCount,权限为BasicSetting;
遗留问题
- Count命名不准确,建议改为下一次生效的数量;
结论:已闭环,修改为PortCount; - CountPool命名不准确,改成属性名 + AllowableValues;
结论:已闭环,修改为PortCountAllowableValues; - path和interface命名需要重新定义,体现网卡的网口分配;
结论:已闭环,path 修改为/bmc/kepler/Systems/:SystemId/NetworkAdapterPreloads/:Id,interface修改为bmc.kepler.Systems.NetworkAdapter.PortConfig