文章目录1.`openbmc`支持`mctp over pcie`(社区`kernel`+应用层`mctpd`方案)说明2.支持2.1 相关文件2.2 基于`AMD`平台修改文件3.代码分析3.1 内核注册`socket()`(驱动层首要实现)3.1 应用层`socket()`函数调用3.2 应用层`bind()`3.3 应用层`setsockopt()`3.4 应用层`recvfrom()`3.5 驱动调用流程`sendto()`3.5.1 用户态到内核态`net/socket.c`3.6 `sk_buff`3.6.1 分析`mctp_sendmsg()`中`sk_buff`3.6.2 分析`mctp_recvmsg()`中`sk_buff`3.6.3 数据分片(segment) TBD3.6.4 网络接口未`up`的处理流程或者`route`不存在4. mctp应用程序流程分析(TBD)4.1 基本框架分析(TBD)5.`wireshark`抓包5.操作步骤5.1 添加`address`5.参考资料6.注意事项6.1 版本信息判断有误7.问题7.1 报错 TBD7.2 获取`bridge routing table`信息,返回的`routing type=0x2`7.3 `kernel`问题之逻辑不健壮--自发自收1.openbmc支持mctp over pcie(社区kernel+应用层mctpd方案)说明本节说明的是使用社区的mctpd方案,支持mctp over pcie功能。基于社区方案,常见的实施对象为amd cpu,intel cpu whitly/birchstream基本上bmc基本上是作为endpoint使用的。参考资料:https://github.com/AMDESE/linux-aspeed主要针对的是仓库:https://github.com/CodeConstruct/mctp官方设计文档: https://github.com/AspeedTech-BMC/linux/blob/aspe