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

概要

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

日志

截图版:
在这里插入图片描述

文字版:

[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就说明有一次插拔。这里的插拔不一定是网卡插拔,可能是光模块异常,可能是交换机异常。但是抓住本质和网卡机制,对于分析此类问题比较方便。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值