For example, I will take an Intel XL710-QDA1 QSFP+ network adapter and a couple more with an Intel chip, for example, HPE 562SFP+, I will install them in an HPE DL380 Gen10 server running Ubuntu Server 18.04.
Switch to root user:
sudo -i
Install the necessary components before updating the driver:
apt install make gcc
Let’s see the current driver version:
lsmod | grep i40e
modinfo i40e | grep ver
ethtool -i ens2
Then I looked to see if there is a new driver version on the official website:
https://downloadcenter.intel.com/ru/download/24411/-Intel-PCIe-40-Linux-
At the time of this writing, the newest version is 2.13.10, which is newer than the one installed by default in Ubuntu Server 18.04.
I also saved it here i40e-2.20.12.tar.gz
Then I downloaded the archive with the driver and unpacked it:
tar -zxvf i40e-2.13.10.tar.gz
I also recommend looking at the official instructions:
less i40e-2.13.10/README
Let’s go to the src directory, which is in the folder with the driver:
cd i40e-2.13.10/src
And install the driver:
make install
Warning! On some operating systems, the names of network interfaces may change and you will either have to rename them as they were or change the network settings to new names. For example, after updating the driver on Ubuntu Server 20.04, all names changed to ethX, but on Ubuntu Server 18.04, the names did not change.
Before executing the commands below, remember the MAC addresses of the required network interfaces in advance, so that later you don’t have to look for which interface:
ip a
lshw -C network | less
Unload and load the new driver:
rmmod i40e; modprobe i40e
update-initramfs -u
Make sure the new driver is being used:
lsmod | grep i40e
modinfo i40e | grep ver
ethtool -i ens2
Let’s reboot the system and make sure that it starts without errors:
reboot
By the way, I used non-original 5m DAC cables stitched for Intel, and also executed the commands below on the Cisco Nexus switch, without them the link did not up:
interface Ethernet1/51
no negotiate auto
duplex full
I want to note that if you update the operating system kernel with the commands below, then most likely the standard version of the i40e driver will be loaded, so you will need to reinstall it:
apt update
apt upgrade
After updating the driver, it is highly recommended to update the firmware to avoid compatibility issues, for example, there is a table with tested versions at the link below:
http://doc.dpdk.org/guides/nics/i40e.html#recommended-matching-list
Important! The new driver may not work with the old firmware, or vice versa, that is, the network will not work, I had such cases, so you need to download the latest driver and network adapter firmware to the server in advance in order to successfully update them.
See also my articles:
- Intel 700 Series Network Adapters Firmware Update
- Solution BUG: Bad page state in process kworker
- Renaming Network Interfaces in Linux
- Installing and updating the ixgbe driver
- How to configure networking with Netplan
- Configuring the Network in Linux