鲲鹏bmc调试网卡部件,如何开启打印协议通信报文

求助,在鲲鹏服务器下调试网卡mctp等协议,鲲鹏的bmc是否可以开启调试模式,打印和部件之间的通信报文,便于协议对接调试,当前正在调试mctp over pcie/smbus。还请了解的同学不吝赐教。

MCTP报文捕获注入步骤

1. 创建注入文件

/data/ 目录下新建待注入的文件 test_mctp_capture.lua,内容如下:

local c_mctp_engine = require 'mctp_engine'
local mctp_engine = c_mctp_engine.new()
mctp_engine:enable_pcie_capture()

2. 查找硬件子系统进程

使用以下命令查询各个skynet进程的console端口,找到hardware子系统进程:

netstat -anp | grep 0.0.0.0:400

3. 连接进程并注入代码

使用telnet连接进程:

telnet ip 40030

连接成功后:

  1. 使用 list 命令找到mctp主服务
  2. 执行如下代码注入命令,即可实现报文打印:
inject :0000000e /data/test_mctp_capture.lua

4. 查看日志

日志存放到 /var/log/app.log 中:

  • SEND 代表从mctp发出的报文
  • RECV 表示mctp收到的报文
2 个赞

local c_mctp_mdb_mgmt = require ‘mctp_mdb_mgmt’
local mctp_mdb_mgmt = c_mctp_mdb_mgmt.new()
mctp_mdb_mgmt:reinit_all_smbus_ep()

把注入内容换成上面的内容

你好,执行这个c_mctp_mdb_mgmt 的inject报了截图中的错误,想问下报错的原因是什么?这个报错对get_endpoint_and_transport会有什么影响吗?
image

你Endpoint对象的MediumType是怎么配置的

配的128

不可能,这里是根据MediumType查cmdcode,2和128都有对应的,这里封装数据失败肯定是没匹配上,请再确认下是否改过CSR

还是你注入的skynet服务不对

代码注入命令写的有问题(可能某个字符不对),手动敲一下,不要使用复制粘贴的方式

好的,谢谢。找到报错原因了,sr文件里之前添加了多个endpoint对象,只有一个匹配了mctpbinding对象,删除多余endpoint后,inject成功了。

注入后获取的报文都是PCIe capture ,想问一下MCTP over SMBus的报文打印如何开启
mctpd打印MCTP over SMBus通信报文 - Hardware SIG - openUBMC 论坛