评审点1:新增资源协作接口 bmc.kepler.Systems.Mctp.MctpCmd
接口描述
本接口用于让业务组件把「自己能响应的一条 MCTP 上层协议命令」发布到资源树。业务组件为每一条命令创建一个对象、实现本接口并挂到命令路径下;mctpd 接收主动部件(网卡)主动发起的 MCTP over PCIe 请求,解析出命令三元组(协议类型、协议子类型、命令字)后按对象路径路由到对应命令对象,调用其 GetResponse 方法获取响应数据,再由 mctpd 组 MCTP 报文回发给请求方。
新增属性
| 属性名称 | 签名 | 只读 | 变化通知 | 属性描述 | 访问权限 | 属性来源 | 持久化类型 | 易变属性 |
|---|---|---|---|---|---|---|---|---|
| ServiceName | s | True | false | 实现本命令的业务组件模块名,如 “storage”;用于调用身份校验、冲突排查与日志定位。 | Read: ReadOnly | 组件注册时动态设置,非 CSR | 无 | false |
| MessageType | y | True | false | MCTP 消息类型(协议类型),对应对象路径中的 :MsgType 层级。与 SubType、CommandCode 共同唯一确定本对象承载的命令,三元组即命令身份。取值须在白名单内(见下表),声明白名单外的取值即拒绝整个对象 | Read: ReadOnly | 组件注册时动态设置,非 CSR | 无 | false |
| SubType | y | True | false | 上层协议子类型,对应对象路径中的 :SubType 层级(两位大写十六进制,补零)。PLDM 为报文类型 PldmType;无子类型的协议(SPDM、VDPCI)填 0,路径中写作 00 | Read: ReadOnly | 组件注册时动态设置,非 CSR | 无 | false |
| CommandCode | y | True | false | 命令字,对应对象路径中的 :CommandCode 层级(两位大写十六进制,补零),取协议自身的命令标识:PLDM 取报文头中的命令代码 CommandCode、SPDM 取请求响应码 RequestResponseCode、VDPCI 取位于报文体的厂商定义命令字。本字段是命令身份的最后一段,与 MessageType、SubType 共同唯一确定一条命令 | Read: ReadOnly | 组件注册时动态设置,非 CSR | 无 | false |
对象创建后取值固定,不产生变化通知。业务如需修改,须注销原对象后按新取值重新注册。
属性 MessageType 的白名单取值
| 取值 | 协议 | 是否开放注册 |
|---|---|---|
| 0x00 | MCTP Control | 否。由 mctpd 框架内建响应,声明该值即拒绝整个对象 |
| 0x01 | PLDM | 是 |
| 0x05 | SPDM | 否 |
| 0x7E | VDPCI | 否 |
新增方法
| 方法名称 | 请求签名 | 请求参数描述 | 响应签名 | 响应参数描述 | 方法描述 | 访问权限 |
|---|---|---|---|---|---|---|
| GetResponse | ay | Data:对端请求报文体(U8[]),已剥离 MCTP 消息头与上层协议报文头。长度与字段约束由业务按命令定义自行校验 | ayy | Data:响应报文体(U8[]),不含任何协议头,由 mctpd 负责补齐 MCTP 头与上层报文头 CompletionCode:完成码(U8),0 表示成功;PLDM 协议下直接作为响应完成码,其余协议含义由各协议层解释 |
mctpd 解析出入站请求的命令三元组、按对象路径路由到对应命令对象后,回调本方法获取响应数据 | 不涉及(预期调用方为 mctpd,非用户会话入口) |
新增信号
| 信号名称 | 签名 | 参数描述 | 信号描述 |
|---|---|---|---|
| 无 | - | - | 本接口采用同步拉取模型,由 mctpd 调用方法直接取回响应,无需信号。业务组件的上下线通过资源协作框架标准的 InterfacesAdded、InterfacesRemoved 信号表达,mctpd 据此维护命令表 |
新增接口影响
对已有资源协作路径无影响。
评审点2:新增资源协作路径 /bmc/kepler/Systems/:SystemId/Mctp/Cmds/:MsgType/:SubType/:CommandCode
路径声明
Cmds.json:/bmc/kepler/Systems/:SystemId/Mctp/Cmds/:MsgType/:SubType/:CommandCode,接口为 bmc.kepler.Systems.Mctp.MctpCmd。
路径描述
MCTP 命令响应者的注册路径。/Mctp/Cmds 下按命令三元组逐层展开,每个叶子对象承载且仅承载一条命令。
实现接口
| 实现接口 | 实现接口描述 | CSR 配置影响 | 持久化影响 | 其他影响 |
|---|---|---|---|---|
| bmc.kepler.Systems.Mctp.MctpCmd | 实现 ServiceName、MessageType、SubType、CommandCode 四个只读属性与 GetResponse 方法,提供「MCTP 单命令响应者注册」能力:业务组件为每条命令注册一个对象后,mctpd 即可接收对端主动请求并回调其 GetResponse 方法 | 不涉及。属性非 CSR 配置项,由注册组件通过 mdb.register_object 动态设置 | 不涉及。无持久化表,无兼容性问题;重启后由业务组件重新注册,命令表由 mctpd 重建 | 不涉及 |
路径示例
| 命令 | 路径 |
|---|---|
| PLDM Base GetTID | /bmc/kepler/Systems/1/Mctp/Cmds/01/00/02 |
| PLDM BIOS GetDateTime | /bmc/kepler/Systems/1/Mctp/Cmds/01/03/0C |