FreeBSD ixgbe 驱动程序不工作

FreeBSD ixgbe 驱动程序不工作

我最近买了一台全新的 Dell PowerEdge R610 服务器,我在其上安装了 VMWare ESXi 5.0,并尝试安装 FreeBSD 作为 squid 缓存的客户操作系统。

该服务器有一个 PCI-E Intel X520-T2 10Gig 网卡 Coper 双端口,用于网关和缓存服务器之间的高速数据传输,但我现在无法在 FreeBSD 下使用它。

我最初安装了两个 FreeBSD 盒子,并将 10gig 卡作为 e1000 添加到它们中,它可以工作,但显然只有大约 1gig/s 的性能,这真的很差。然后我尝试将 NIC 添加为 VMxNet2 和 VMxNet3,它们没有工作,因为 FreeBSD 的 VMWare-Tool 在 FreeBSD 9 上损坏,并且 open-vm-tools 编译、安装,甚至没有检测到接口,原因不明。

因此,我最终发现直通可能是一个好主意,于是我配置了 VMWare ESXi 以直通两个 10gig 接口,并将它们作为 PCI 设备添加到我的 FreeBSD 盒中。我以为这样 FreeBSD 应该可以检测到硬件并为 NIC 分配合适的驱动程序,但事实并非如此。

我遇到的问题是,我尝试在启用 ixgbe 设备的情况下重新编译内核,系统正确检测到设备,分配了驱动程序版本 2.3.3,并且我能够从 ifconfig 中看到 ix0 接口。但是我无法 ping 通,无法连接任何东西,因为设备的状态是“无载体”。我在 Google 上搜索了错误消息,结果发现这是驱动程序问题,因此我从英特尔官方网站下载了最新版本的 ixgbe,编译并安装了驱动程序,现在系统可以检测并为接口分配驱动程序 2.4.4,但我仍然收到无载体错误消息。

我现在无法访问服务器,所以我无法提供任何输出,一旦我可以获得日志,我就会更新我的问题。

顺便说一句,我相信我拥有的 FreeBSD 是最新的,FreeBSD9-Stable,其 src 于 2012 年 2 月 16 日更新。

PS. 我尝试安装带有通用内核的 FreeBSD 9 发布版本,但遇到了同样的问题。

谁能给我提供任何链接、想法或故障排除方法,非常感谢。

问候,海浪

以下是服务器输出。

OmniSquid# dmesg | grep ix0
ix0:端口 0x4000-0x401f 内存 0xd2600000-0xd27fffff、0xd2400000-0xd2403fff irq 18 位于 pci3 上的设备 0.0
ix0:使用带有 5 个向量的 MSIX 中断
ix0:以太网地址:00:1b:21:d8:d7:b2
ix0:PCI Express 总线:速度 5.0Gb/s 未知

OmniSquid# pciconf -l -cv | grep ix
ix0@pci0:3:0:0: class=0x020000 card=0xa03c8086 chip=0x151c8086 rev=0x01 hdr=0x00

OmniSquid# ifconfig ix0
ix0:flags=8843 metric 0 mtu 1500
options=401bb
ether 00:1b:21:d8:d7:b2
inet 10.10.10.1 netmask 0xffffff00 broadcast 10.10.10.255
inet6 fe80::21b:21ff:fed8:d7b2%ix0 prefixlen 64 scopeid 0x4
nd6 options=29
media: Ethernet autoselect
status: no carrier

另一个有趣的发现是,FreeBSD 9 内核附带的默认驱动程序 2.3.1 似乎无法检测媒体类型。

OmniSquid# dmesg | grep ix0
ix0:端口 0x4000-0x401f 内存 >0xd2600000-0xd27fffff,0xd2400000-0xd2403fff irq 18 在 pci3 上的设备 0.0 处
ix0:使用带有 5 个向量的 MSIX 中断
ix0:以太网地址:00:1b:21:d8:d7:b2
ix0:PCI Express 总线:速度 5.0Gb/s 未知

OmniSquid# ifconfig ix0 10.10.10.1 网络掩码 255.255.255.0 媒体
ifconfig:“media”需要参数

OmniSquid# ifconfig -m ix0
ix0: flags=8843 metric 0 mtu 1500
options=401bb
capabilities=505bb
ether 00:1b:21:d8:d7:b2
nd6 options=29
media: 以太网自动选择
status: 不
支持的运营商 media:
media autoselect
media autoselect

但是我从英特尔下载的那个可以检测到

ix0:端口 0x4000-0x401f 内存 0xd2600000-0xd27fffff、0xd2400000-0xd2403fff irq 18 位于 pci3 上的设备 0.0
ix0:使用带有 5 个向量的 MSIX 中断
ix0:以太网地址:00:1b:21:d8:d7:b2
ix0:PCI Express 总线:速度 5.0Gb/s 未知

OmniSquid# ifconfig -m ix0
ix0:flags=8843 metric 0 mtu 1500
options=401bb
capabilities=505bb
ether 00:1b:21:d8:d7:b2
nd6 options=29
介质:以太网自动选择
状态:不
支持的运营商介质:
介质自动选择
介质 10Gbase-T

我从这里读到也许驱动程序不会尝试自动协商,所以我尝试手动定义接口的媒体类型。

OmniSquid# ifconfig ix0 10.10.10.1 网络掩码 255.255.255.0 媒体 10Gbase-T
ifconfig:SIOCSIFMEDIA(媒体):参数无效

dmesg 显示

ix0:仅自动媒体类型
ix0:仅自动媒体类型
ix0:仅自动媒体类型

OmniSquid# ifconfig ix0 10.10.10.1 网络掩码 255.255.255.0 媒体 10Gbase-T mediaopt 全双工
ifconfig:SIOCSIFMEDIA(媒体):设备未配置

OmniSquid# ifconfig ix0 10.10.10.1 网络掩码 255.255.255.0 媒体 10Gbase-T mediaopt 全双工 mtu 1500
ifconfig:SIOCSIFMEDIA(媒体):设备未配置

而且,我使用相同的硬件、相同的驱动程序(英特尔官方驱动程序)和相同的电缆安装了两个 Linux VM,并且运行正常,所以我的配置或驱动程序本身一定有问题。

相关内容