README for Intel(R) Ethernet Switch Host Interface Driver =============================================================================== =============================================================================== November 26, 2018 =============================================================================== Contents -------- - Overview - Building and Installation - Command Line Parameters - Additional Features & Configurations - Known Issues Important Notes =============== Configuring SR-IOV for improved network security ------------------------------------------------ In a virtualized environment, on Intel(R) Ethernet Network Adapters that support SR-IOV, the virtual function (VF) may be subject to malicious behavior. Software-generated layer two frames, like IEEE 802.3x (link flow control), IEEE 802.1Qbb (priority based flow-control), and others of this type, are not expected and can throttle traffic between the host and the virtual switch, reducing performance. To resolve this issue, and to ensure isolation from unintended traffic streams, configure all SR-IOV enabled ports for VLAN tagging from the administrative interface on the PF. This configuration allows unexpected, and potentially malicious, frames to be dropped. See "Configuring VLAN Tagging on SR-IOV Enabled Adapter Ports" in this README for configuration instructions. Overview ======== This driver supports kernel versions 2.6.32 and newer. Driver information can be obtained using ethtool, lspci, and iproute2 ip. Instructions on updating ethtool can be found in the section Additional Configurations later in this document. Intel(R) Ethernet SDI Adapter FM10420-100GbE-QDA2 Notes ------------------------------------------------------- The Intel(R) Ethernet SDI Adapter FM10420-100GbE-QDA2 supports the following cables: Supplier Part Number FCI 10121178-2010LF FCI 10121178-4020LF FCI 10121178-4030LF FCI 10121178-4040LF FCI 10121178-4050LF Note: The Intel(R) Ethernet SDI Adapter FM10420-100GbE-QDA2 is a Gen3 x16 card that is electrically bifurcated into two x8 ports. Without a BIOS that supports bifurcation, only 1 port is available. Building and Installation ========================= To build a binary RPM package of this driver -------------------------------------------- Note: RPM functionality has only been tested in Red Hat distributions. 1. Run the following command, where is the version number for the driver tar file. # rpmbuild -tb fm10k-.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 is the location of the RPM file: # rpm -Uvh or # dnf/yum localinstall NOTES: - 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, elfutilsl-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. To find the kernel-devel header sources for a particular kernel, you will usually fill in the link at /lib/modules/'uname -r'/build. To manually build the driver ---------------------------- 1. Move the base driver tar file to the directory of your choice. For example, use '/home/username/fm10k' or '/usr/local/src/fm10k'. 2. Untar/unzip the archive, where is the version number for the driver tar file: # tar zxf fm10k-.tar.gz 3. Change to the driver src directory, where is the version number for the driver tar: # cd fm10k-/src/ 4. Compile the driver module: # make install The binary will be installed as: /lib/modules//updates/drivers/net/ethernet/intel/fm10k/fm10k.ko The install location listed above is the default location. This may differ for various Linux distributions. 5. Load the module using the modprobe command. To check the version of the driver and then load it: # modinfo fm10k # modprobe fm10k [parameter=port1_value,port2_value] Alternately, make sure that any older fm10k drivers are removed from the kernel before loading the new module: # rmmod fm10k; modprobe fm10k 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 / dev ethX NOTE: Before proceeding, ensure that netdev is enabled and that a switch manager is running. To enable netdev, use one of the following commands: # ifconfig up or # ip link set up 7. 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 Note: For certain distributions like (but not limited to) RedHat Enterprise Linux 7 and Ubuntu, once the driver is installed, the initrd/initramfs file may need to be updated to prevent the OS loading old versions of the fm10k driver. The dracut utility may be used on RedHat distributions: # dracut --force For Ubuntu: # update-initramfs -u Command Line Parameters ======================= If the driver is built as a module, the following optional parameters are used by entering them on the command line with the modprobe command using this syntax: # modprobe fm10k [