Intel® Ethernet Adapters and Devices User Guide

ID Date Version Classification
705831 11/27/2024 Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

Install Linux* Drivers

The instructions below apply to the following device series and drivers:

Device Series

Driver Name

Intel Adapter Virtual Functions

iavf

Intel Ethernet 800 Series

ice

Intel Ethernet 700 Series

i40e

Intel Ethernet 500 Series

ixgbe

Intel Ethernet 300 Series

igb

You have several options to install Linux* drivers:

In the instructions below:

  • <driver> is the driver name, such as ice or iavf

  • x.x.x is the driver version as indicated in the name of the driver tar file

Locations for Linux Driver Files

Source code for Linux drivers is available to download from the following locations:

Note:

RPM packages are not available on GitHub.

Manually Build the Linux Driver from Source

  1. Move the base driver tar file to the directory of your choice. For example, use /home/username/<driver> or /usr/local/src/<driver>.

  2. Untar/unzip the archive:

    tar zxf <driver>-<x.x.x>.tar.gz
    
  3. Change to the driver src directory:

    cd <driver>-<x.x.x>/src/
    
  4. Compile the driver module:

    make install
    

    The binary will be installed as:

    /lib/modules/<KERNEL VER>/updates/drivers/net/ethernet/intel/<driver>/<driver>.ko
    

    The install location listed above is the default location. This may differ for various Linux distributions.

    Note:

    For ice devices:

    • To build the driver using the schema for unified ethtool statistics, use the following command:

      make CFLAGS_EXTRA='-DUNIFIED_STATS' install
      
    • To compile the ice driver with ADQ (Application Device Queues) flags set, use the following command, where <nproc> is the number of logical cores:

      make -j<nproc> CFLAGS_EXTRA='-DADQ_PERF_COUNTERS' install
      

      (This will also apply the above make install command.)

    Note:

    For i40e devices: To gather and display additional statistics, use the I40E_​ADD_​PROBES pre-processor macro:

    make CFLAGS_EXTRA=-DI40E_ADD_PROBES
    

    Please note that this additional statistics gathering can impact performance.

    Note:

    For devices that support RDMA: You may see warnings from depmod related to unknown RDMA symbols during the make of the out-of-tree (OOT) base driver. These warnings are normal and appear because the in-tree RDMA driver will not work with the OOT base driver. To address the issue, you need to install the latest OOT versions of the base and RDMA drivers.

  5. Load the module using the modprobe command.

    To check the version of the driver and then load it:

    modinfo <driver>
    modprobe <driver>
    

    Alternately, make sure that any older device drivers are removed from the kernel before loading the new module:

    rmmod <driver>; modprobe <driver>
    
  6. Assign an IP address to the interface by entering the following, where <ethX> is the interface name that was shown in dmesg after modprobe:

    ip address add <IP_address>/<netmask bits> dev <ethX>
    
  1. Verify that the interface works. Enter the following, where <IP_​address> is the IP address for another machine on the same subnet as the interface that is being tested:

    ping <IP_address>
    
Note:

For certain distributions like (but not limited to) Red Hat* Enterprise Linux* 7 and Ubuntu*, once the driver is installed, you may need to update the initrd/initramfs file to prevent the OS loading old versions of the driver.

For Red Hat distributions:

dracut --force

For Ubuntu:

update-initramfs -u

Build a Binary RPM Package of the Linux Driver

Note:

RPM functionality has only been tested in Red Hat distributions.

  1. Run the following command, where <x.x.x> is the version number for the driver tar file:

    rpmbuild -tb <driver>-<x.x.x>.tar.gz
    
    Note:

    For the build to work properly, the currently running kernel MUST match the version and configuration of the installed kernel sources. If you have just recompiled the kernel, reboot the system before building.

  2. After building the RPM, the last few lines of the tool output contain the location of the RPM file that was built. Install the RPM with one of the following commands, where <RPM> is the location of the RPM file:

    rpm -Uvh <RPM>
    

    or:

    dnf/yum localinstall <RPM>
    
  3. For ice, i40e, and iavf devices only: If your distribution or kernel does not contain inbox support for auxiliary bus, you must also install the auxiliary RPM:

    rpm -Uvh <driver RPM> <auxiliary RPM>
    

    or:

    dnf/yum localinstall <driver RPM> <auxiliary RPM>
    
    Note:

    On some distributions, the auxiliary RPM may fail to install due to missing kernel-devel headers. To workaround this issue, specify --excludepath during installation. For example:

    rpm -Uvh auxiliary-1.0.0-1.x86_64.rpm
    --excludepath=/lib/modules/3.10.0-957.el7.x86_64/source/include/linux/auxiliary_bus.h
    
  • To compile the driver on some kernel/arch combinations, you may need to install a package with the development version of libelf (e.g., libelf-dev, libelf-devel, elfutils-libelf-devel).

  • When compiling an out-of-tree driver, details will vary by distribution. However, you will usually need a kernel-devel RPM or some RPM that provides the kernel headers at a minimum. The RPM kernel-devel will usually fill in the link at /lib/modules/'uname -r'/build.

Install Linux Drivers via Prebuilt RPM Packages

Intel provides prebuilt RPM Package Manager (RPM) files for the following distributions on the Intel Download Center:

  • For Red Hat distributions: KMOD RPM files

  • For SUSE distributions: Kernel Module Package (KMP) RPM files

See the following webpages on the RHEL and SLES websites for more information on installing RPM packages:

Linux Secure Boot Mode

This software release includes RPM packages that contain:

  • Device driver signed with Intel’s private key in precompiled kernel module form

  • RDMA driver

  • Complete source code for above drivers

  • Intel’s public key

This release includes the Intel public key to allow you to authenticate the signed driver in secure boot mode. To authenticate the signed driver, you must place Intel’s public key in the UEFI Secure Boot key database.

  • The driver kernel module for a specific kernel version can be used with errata kernels within the same minor OS version, unless the errata kernel broke kABI. Whenever you update your kernel with an errata kernel, you must reinstall the driver RPM package.

  • The RDMA driver will be installed if you reinstall the driver RPM package. If you want to remove the RDMA driver, you will have to do so every time you install the RPM package (for example, when you update your kernel with an errata kernel).

  • If you decide to recompile the .ko module from the provided source files, the new .ko module will not be signed with any key. To use this .ko module in Secure Boot mode, you must sign it yourself with your own private key and add your public key to the UEFI Secure Boot key database.