FreeBSD 12.1 能在 PCI 总线上看到 QLogic FastLinQ QL41112 SFP+ 网卡,但没有驱动挂载
我维护一小批 FreeBSD 主机,正准备给其中一台加上 10G。网卡装上去了,机器也正常启动,但操作系统就是不肯把它变成一个接口。
- 服务器运行 FreeBSD 12.1-RELEASE-p1,标准的 GENERIC 内核
- QLogic FastLinQ QL41112 双口 10GbE SFP+ 网卡
- 两个笼位都插着 SFP+ 光模块,交换机那边已经配置好在等
- /boot/loader.conf 里除了默认内容没有任何自定义配置
网卡在总线上是能看到的,但也就到此为止了,两个功能口的情况完全一样:
pci7: <network, ethernet> at device 0.0 (no driver attached)
没有创建出任何接口,所以既没有东西可配置,也完全没办法读取光模块状态。
已经做过的:
- 把网卡换到另一个插槽,还是同样的信息
- 把两个光模块在两个笼位之间对调,以防其中一个坏了
- 翻遍 ifconfig,找不到除 lo0 和板载网卡之外的任何东西
既然 PCI 设备明明白白地被枚举出来了,我猜这是驱动的问题,而不是光模块的问题,但我搞不清楚在这个版本上到底哪个驱动服务这块网卡。我需要哪个模块,是不是得自己编译?
Comments 3
这块网卡由 qlnxe(4) 驱动服务,在这个版本上它不会被自动加载,这正是为什么你只看到 PCI 那一行,后面什么都没有。把这个模块加到 loader 里,然后重启:
写进 /boot/loader.conf。重启之后,按这个顺序检查,能省去不少瞎猜:
kldstat能证明这个模块是真的被加载了,而不只是写进了配置文件;dmesg这时候应该出现挂载信息,而不再是 no driver attached;pciconf -l用来确认设备还在原来的位置。等接口出现之后,你再回头去操心光模块的事。有一点要提醒:这个驱动只覆盖特定几款 FastLinQ 型号,所以要去读厂商驱动包附带的发布说明,确认你这块板子具体是哪一款,而不是想当然。有人用一块 25GbE 的 QL41000 系列网卡加载了这个驱动,结果还是什么都没有,这正是为什么上面这套流程值得认真跑一遍,而不是走个形式。对一块 12.1 上的 10G QL41112 来说,这就是标准的修复方法。
在做别的之前,先确认清楚机器到底看到了什么。贴一下这两条命令的输出:
再用
kldstat确认加载了些什么。在一个标准的 GENERIC 内核上,很有可能答案就是这个系列的驱动模块没有被自动加载,而接口缺失正是这种情况的表现。在驱动挂载成功之前,光模块的事都无关紧要,先别再折腾它们了。有道理。
uname -a确认是 12.1-RELEASE-p1。pciconf -l列出了两个功能口,设备名都是 none,而不是某个驱动名,说明没有任何东西认领它们。kldstat显示的是内核本身和一小撮常见模块,没有任何看起来和 QLogic 有关的东西。所以看起来确实是单纯缺驱动,而不是硬件坏了。