No, Canonical does not provide the latest stable Intel i40e driver in the latest version of Ubuntu Server. In fact it’s 12 months old.
No, Intel does not keep the most current version of the i40e driver on Intel.com. It’s on SourceForge.
/HeadDesk
Let’s look at all of the REALLY IMPORTANT changes made to the i40e driver since version 2.3.2 that’s installed by default in Ubuntu 18.10:
Changelog for i40e 2.7.11 =========================================================================== Implement ADq feature Add support for configuring VFs through sysfs Add XDP support Add support Forward Error Correction (FEC) on 25G links Allow disabling FW LLDP (requires updated firmware) Fix bug where link could be forced down after MTU change Add support for new kernel APIs Fix WARN_ON() if MSI-X not available Fix issue with lost link when forcing link mode on some adapters Add support to allow the FW update tool to upgrade/downgrade from any FW version to any other FW version Note: this may require a power cycle as an intermediate step. Fix kernel panic with repeated quick enable/disable of VFs Fix possible TX timeout with DCB on some kernels Re-enable TSO after MTU change Fix potential panic on shutdown with many MSI-X vectors Add VEB stats to ethtool Fix panic on suspend with RDMA client driver active Fix timing issue with assigning VFs to VMs using virsh Restore TCPv4 input set when re-enabling ATR Performance fixes with Adaptive ITR Code cleanups Minor bug fixes Add support for RHEL 7.5 Add support for SLES12SP3 Source: README.txt, updated 2018-10-26
Changelog for i40e 2.4.10 =========================================================================== Add support for RHEL 7.5 Fix synchronization issue with simultaneous resets on multiple ports Source: README.txt, updated 2018-06-08
Changelog for i40e 2.4.6 =========================================================================== - fix unnecessary PF resets issue - update Flow Director User documentation - fix compilation error on kernel 4.15.1 Source: README.txt, updated 2018-04-03
Changelog for i40e 2.4.3 =========================================================================== - fix issue on X722 with netdev close removing RDMA instance - performance updates - fix some issues with link reporting - fix issue with tx timeouts on systems with > 128 cores - fix issue with promiscuous mode disappearing across resets - fix issue with flow director filters not working on fragmented IPv4 - fix issue with duplicate flow director filters not being updated to HW Source: README.txt, updated 2017-12-07
Changelog for i40e-linux-2.3.6 =========================================================================== - Fix mac filter removal timing issue - Sync i40e_ethtool.c with upstream - Fixes for TX hangs - Some fixes for reset of VFs - Fix build error with packet split disabled - Fix memory leak related to filter programming status - Add and modify branding strings - Fix kdump failure - Implement an ethtool private flag to stop LLDP in FW - Add delay after EMP reset for firmware to recover - Fix incorrect default ITR values on driver load - Fixes for programming cloud filters - Some performance improvements - Enable XPS with QoS on newer kernels - Enable support for VF VLAN tag stripping control - Build fixes to force perl to load specific ./SpecSetup.pm file - Fix the updating of pci.ids - Use 16 byte descriptors by default - Fixes for DCB - Don't close client in debug mode - Add change MTU log in VF driver - Fix for adding multiple ethtool filters on the same location - Add new branding strings for OCP XXV710 devices - Remove X722 Support for Destination IP Cloud Filter - Allow turning off offloads when the VF has VLAN set Source: README.txt, updated 2017-10-31
/HeadDesk
I have already updated the X710-DA4 firmware (to 6.01) prior to updating the driver, but I have not read anywhere that updating the firmware first is necessary.
I started by looking at my installed drivers, but this is not needed, and does not show the versions of the driver:
ls -R /lib/modules/`uname -r`/kernel/ > drivers.log
Show current i40e driver:
ethtool -i enp1s0f0
Output:
driver: i40e version: 2.3.2-k firmware-version: 6.01 0x800035ce 1.1747.0 expansion-rom-version: bus-info: 0000:01:00.0 supports-statistics: yes supports-test: yes supports-eeprom-access: yes supports-register-dump: yes supports-priv-flags: yes
Install dependencies:
sudo apt install make gcc
Download the latest driver:
wget https://cfhcable.dl.sourceforge.net/project/e1000/i40e%20stable/2.7.11/i40e-2.7.11.tar.gz
Unzip:
tar -xf i40e-2.7.11.tar.gz
Instructions are in the README — read them:
vim i40e-2.7.11/README
Install. This was performed while my X710-DA4 was not being used nor had assigned IPs:
sudo su
cd i40e-2.7.11/src/
make install
rmmod i40e; modprobe i40e
update-initramfs -u
exit
Confirm updated driver:
ethtool -i enp1s0f0
Output:
driver: i40e version: 2.7.11 firmware-version: 6.01 0x800035ce 1.1747.0 expansion-rom-version: bus-info: 0000:01:00.0 supports-statistics: yes supports-test: yes supports-eeprom-access: yes supports-register-dump: yes supports-priv-flags: yes
Don’t forget to read the included README for performance tuning options, and the over 2 year old Intel Ethernet Controller X710/XL710 and Intel Ethernet Converged Network Adapter X710/XL710 Family Linux Performance Tuning Guide from March 2016:
Oh and:
sudo vim /etc/default/grub
Like this:
GRUB_DEFAULT=0 GRUB_TIMEOUT_STYLE=hidden GRUB_TIMEOUT=2 GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian` GRUB_CMDLINE_LINUX_DEFAULT="intel_iommu=on iommu=pt pcie_aspm=off" GRUB_CMDLINE_LINUX="intel_iommu=on iommu=pt pcie_aspm=off"
sudo update-grub
sudo shutdown -r now