I recently got a brand new Dell PowerEdge R610 server, I installed VMWare ESXi 5.0 on it and attempted to install FreeBSD as guest OS for squid caching.
The server has a PCI-E Intel X520-T2 10Gig Network Card Coper Dual Port, which is intended to be used for high speed data transfer between gateway and cache servers, but I'm now having trouble make it work under FreeBSD.
I initially install two FreeBSD boxes and added the 10gig card as e1000 to both of them, it worked but apparently with only around 1gig/s performance, which is really poor. Then I tried adding the NIC as VMxNet2 and VMxNet3, they didn't work 'cause the VMWare-Tool for FreeBSD is broken on FreeBSD 9, and the open-vm-tools compiled, installed, and didn't even detect the interface for unknown reason.
So finally I found that passthrough might be a great idea and I configured VMWare ESXi to passthrough both of the 10gig interfaces, and added them as PCI devices to my FreeBSD boxes. I thought this way the FreeBSD should detects the hardware and assign suitable driver for the NIC, but it didn't.
The problem I'm getting is I tried to re-compile kernel with ixgbe device enabled, the system detects the device correctly, assigned the driver version 2.3.3, and I was able to see ix0 interface from ifconfig. But I can't ping, can't connect to anything since the status of the device is "no carrier". I googled the error message and turns out that is a driver problem, so I downloaded the newest version of ixgbe from Intel official website, compiled and installed the driver, now the system can detect and assign driver 2.4.4 for the interface, but I'm still getting no carrier erro message.
I don't have access to the server right now, so I can't provide any output, I'll update my question once I can obtain logs.
BTW, the I believe the FreeBSD I have is the newest one, FreeBSD9-Stable, with src updated on 16 Feb 2012.
PS. I tried installing FreeBSD 9 Release version with GENERAL kernel, same problem.
Could anyone please provide me any link, thought, or troubleshoot method, thank you very much.
Regards, Hai Lang
Here comes server outputs.
OmniSquid# dmesg | grep ix0
ix0: port 0x4000-0x401f mem 0xd2600000-0xd27fffff,0xd2400000-0xd2403fff irq 18 at device 0.0 on pci3
ix0: Using MSIX interrupts with 5 vectors
ix0: Ethernet address: 00:1b:21:d8:d7:b2
ix0: PCI Express Bus: Speed 5.0Gb/s UnknownOmniSquid# pciconf -l -cv | grep ix
ix0@pci0:3:0:0: class=0x020000 card=0xa03c8086 chip=0x151c8086 rev=0x01 hdr=0x00OmniSquid# 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
Another interesting finding, the default driver 2.3.1 which comes with the FreeBSD 9 kernel does not seem detects media type.
OmniSquid# dmesg | grep ix0
ix0: port 0x4000-0x401f mem >0xd2600000-0xd27fffff,0xd2400000-0xd2403fff irq 18 at device 0.0 on pci3
ix0: Using MSIX interrupts with 5 vectors
ix0: Ethernet address: 00:1b:21:d8:d7:b2
ix0: PCI Express Bus: Speed 5.0Gb/s UnknownOmniSquid# ifconfig ix0 10.10.10.1 netmask 255.255.255.0 media
ifconfig: 'media' requires argumentOmniSquid# 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: Ethernet autoselect
status: no carrier
supported media:
media autoselect
media autoselect
But the one I downloaded from Intel can detect
ix0: port 0x4000-0x401f mem 0xd2600000-0xd27fffff,0xd2400000-0xd2403fff irq 18 at device 0.0 on pci3
ix0: Using MSIX interrupts with 5 vectors
ix0: Ethernet address: 00:1b:21:d8:d7:b2
ix0: PCI Express Bus: Speed 5.0Gb/s UnknownOmniSquid# 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: Ethernet autoselect
status: no carrier
supported media:
media autoselect
media 10Gbase-T
I read from here that maybe the driver does not attempt to auto negotiate, so I tried to manually define the media type for the interface.
OmniSquid# ifconfig ix0 10.10.10.1 netmask 255.255.255.0 media 10Gbase-T
ifconfig: SIOCSIFMEDIA (media): Invalid argument
And the dmesg displays
ix0: Only auto media type
ix0: Only auto media type
ix0: Only auto media typeOmniSquid# ifconfig ix0 10.10.10.1 netmask 255.255.255.0 media 10Gbase-T mediaopt full-duplex
ifconfig: SIOCSIFMEDIA (media): Device not configuredOmniSquid# ifconfig ix0 10.10.10.1 netmask 255.255.255.0 media 10Gbase-T mediaopt full-duplex mtu 1500
ifconfig: SIOCSIFMEDIA (media): Device not configured
And, I installed two Linux VMs using the same hardware, same driver (Intel official one), and same cables, and works perfectly, so there gotta be something wrong with my configuration or the driver itself.