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:
Intel i40e driver update
Configuring the Network in Linux
Distribution of network card interrupts across processor cores