Tuesday, May 12, 2015

Xeon Processor D-1540: 10GbE Driver in Linux (8086:15ad)

If you reach this post via some search engine, you know what title means, right! :)

Well. Today, I receive a SuperMicro server with Xeon Processor D-1540. It comes with 2 x 1GbE ports (Intel I350) and 2 x 10GbE ports (Intel, too). After some checking inside the chassis, I decided to install the operating system.

Firstly, I boot up the server via my disk-less CentOS 6.6. Opps! No 10GbE network interfaces are shown up.

# lspci -nn | grep Ethernet
03:00.0 Ethernet controller [0200]: Intel Corporation Device [8086:15ad]
03:00.1 Ethernet controller [0200]: Intel Corporation Device [8086:15ad]

I search on PCI Database and there is no such 15ad, as of May 12, 2015.

Check around, I have found some information said that such interfaces maybe X552 and the like. ixgbe kernel module should work well with such devices.

Therefore, I decided to try the just-released Debian 8 with newer kernel 3.16. But, oppps, again, no 10GbE network interfaces shown up too.

Ok! I will try the latest ixgbe driver. It should work since I have a similar experience with AWS xlarge nodes.

# apt-get install linux-headers-`uname -r`
# wget http://sourceforge.net/projects/e1000/files/ixgbe%20stable/4.0.3/ixgbe-4.0.3.tar.gz
# tar zxf ixgbe-4.0.3.tar.gz
# cd ixgbe-4.0.3/src
# make
# modprobe -r ixgbe
# make install
# modprobe ixgbe
# ifconfig -a

And I see what I want to see :).

To recompile that kernel module automatically with new installed kernels, I make a kmod.

# apt-get install dkms
# tar zxf ixgbe-4.0.3.tar.gz -C /usr/src
# cat > /usr/src/ixgbe-4.0.3/dkms.conf <<EOF
CLEAN="cd src/; make clean"
MAKE="cd src/; make BUILD_KERNEL=\${kernelver}"
# dkms add -m ixgbe -v 4.0.3
# dkms build -m ixgbe -v 4.0.3
# dkms install -m ixgbe -v 4.0.3

If you need to use virtual functions, do the similar steps with the latest stable ixgbevf.