【微知】Mellanox网卡网线插入后驱动的几个日志?(Cable plugged;IPv6 ... link becomes ready)

概要

本文是一个简单的信息记录。记录的是当服务器网卡的光模块插入后内核的日志打印。通过这种日志打印,可以在定位分析问题的时候,知道进行过一次模块插拔。

日志

截图版:

文字版:

bash 复制代码
[32704.121294] mlx5_core 0000:01:00.0: Port module event: module 0, Cable plugged
[32707.399693] mlx5_core 0000:01:00.1: Port module event: module 1, Cable plugged
[32710.060490] mlx5_core 0000:01:00.0 enp1s0f0: Link up
[32710.060509] IPv6: ADDRCONF(NETDEV_CHANGE): enp1s0f0: link becomes ready
[32710.060809] mlx5_core 0000:01:00.1 enp1s0f1: Link up
[32710.061629] IPv6: ADDRCONF(NETDEV_CHANGE): enp1s0f1: link becomes ready

简要信息:

  1. 光模块插拔处理是在mlx5_core中出现的
  2. 在打印的信息中有module x表示第几个port
  3. 成功后会打印Link up。
  4. 插拔后会通知IPv6,并且显示link becomes ready
  5. 插拔后驱动会产生事件触发到对应模块比如IPv6 比如bond

代码

收到MLX5_EVENT_TYPE_PORT_MODULE_EVENT的事件。

触发机制:

事件注册的地方:

可看到是注册到eq上面的mlx5_eq_notifier_register

最后会放到eq的table表里面

初始化的时候会将这个eq与中断绑定:

然后创建3种eq:

这个setup_async_eq比较深,最终会下发cmd到网卡NIC上,下发方式是通过create_eq_in的方式 用MLX5_SET(create_eq_in, in, opcode, MLX5_CMD_OP_CREATE_EQ);

于是当网卡NIC上有事件发生会通过eq上报。更多参考:Mellanox OFED驱动中eq的event与中断关系?通过什么机制调用不同event处理?注册的2种形式?

综述

本文记录往下插拔的关键日志以及通知机制,可以看到是网卡固件通过中断,在msi中断中用eq上报事件,并通过内核的notifier block机制通知到注册回调函数。最终在port_module的回调函数中(属于mlx5_core模块)进行打印,从而看到了上面的日志。

另外就是看到Cable plue就说明有一次插拔。这里的插拔不一定是网卡插拔,可能是光模块异常,可能是交换机异常。但是抓住本质和网卡机制,对于分析此类问题比较方便。

相关推荐
北冥有鱼被烹1 个月前
【问题记录】如何编译nv_peer_memory模块?依赖OFED的4个目录和2类文件?如何解决没有rdma/peer_mem.h文件?
gpu·mellanox
北冥有鱼被烹5 个月前
微知-ib_write_bw的各种参数汇总(-d -q -s -R --run_infinitely)
rdma·mellanox
北冥有鱼被烹6 个月前
NVIDIA Bluefield DPU上的启动流程4个阶段分别是什么?作用是什么?
dpu·mellanox
北冥有鱼被烹6 个月前
微知-Bluefield DPU使用flint烧录固件报错MFE_NO_FLASH_DETECTED是什么?MFE是什么?
dpu·mellanox·bluefield
北冥有鱼被烹1 年前
【DPU系列之】Bluefield 2 DPU卡的功能图,ConnectX网卡、ARM OS、Host OS的关系?(通过PCIe Switch连接)
rdma·dpu·mellanox