Installing and updating the ixgbe driver

I will give an example of installing or updating ixgbe drivers on Linux.

Let’s see the current version (for example, in Ubuntu Server 16.04 for HP 560SFP+, the ixgbe 4.2.1-k version was installed by default):

ethtool -i ens5f0
/sbin/modinfo ixgbe

Download the new drivers from the official site
https://downloadcenter.intel.com/download/14687/Intel-Network-Adapter-Driver-for-PCIe-Intel-10-Gigabit-Ethernet-Network-Connections-Under-Linux-
or
https://sourceforge.net/projects/e1000/files/ixgbe%20stable/

Or a patched version of the driver for the correct distribution of network board interruptions across the processor core when using QinQ
https://github.com/serhepopovych/ixgbe/tree/ixgbe-5.6.3/double-vlan

cd ~
git clone https://github.com/serhepopovych/ixgbe.git

Or:

cd ~
git clone --single-branch --branch ixgbe-5.6.3/double-vlan https://github.com/serhepopovych/ixgbe.git

Install the necessary components in the system:

apt install make gcc

Using the commands below we install the driver, I note that if the Linux kernel has been updated, then we will reboot the server before installing the driver (the module is usually written in /lib/modules/KERNEL_VERSION/updates/drivers/net/ethernet/intel/ixgbe/ixgbe.ko):

cd ixgbe/src/
make install

The error below can be ignored, it just means that make cannot find the keys to sign the driver:

SSL error:02001002:system library:fopen:No such file or directory: bss_file.c:175

After installing the driver, any of the commands will unload the old driver module from memory:

modprobe -r ixgbe
rmmod ixgbe

And load the new one you just installed:

modprobe ixgbe

Check the version:

ethtool -i ens5f0

In order for Ubuntu to load a new driver at system startup, and not the old one, do:

update-initramfs -u

For RedHat:

dracut --force

If necessary, specify the network interface IP address (the name of the network interface can be seen, for example, in the logs by typing the command “dmesg -T”):

ip address add 192.168.2.2/32 dev eth0

I note that on some versions of the drivers the occupied RAM space can quickly increase, usually it becomes noticeable in the graphs after a day or a week. Stable versions in which no memory leaks were noticed were 5.6.3 and 5.3.8.
If it grows, then you can, for example, unload and load the ixgbe module to understand if it has a problem (attention, the connection to the server will disappear):

rmmod ixgbe && modprobe ixgbe

To support third-party SFPs, you may have to load the module with the option:

modprobe ixgbe allow_unsupported_sfp=1

So that when the system starts, the driver also loads with this option, we specify in the /etc/modprobe.d/ixgbe.conf file:

options ixgbe allow_unsupported_sfp=1

And also in the file /etc/default/grub, specify:

GRUB_CMDLINE_LINUX="ixgbe.allow_unsupported_sfp=1"

Apply the changes:

grub-mkconfig -o /boot/grub/grub.cfg

See also my article:
Distribution of network card interrupts across processor cores

Leave a comment

Leave a Reply