Intel's 10G network adapters (for example, 82598, 82599, x540) are supported by the Ixgbe driver. Modern Linux distributions are already powered by Ixgbe, and can be used in the form of loadable modules. However, there are situations where you want to compile and install IXGBE drivers on your machine, for example, when you want to experience the latest features of the IXBGE drive. Similarly, one problem with the kernel default Ixgbe drive is that you are not allowed to customize the driver parameters. If you want a fully customizable Ixgbe driver (such as RSS, multiple queues, interrupt thresholds, and so on), you need to manually compile the Ixgbe driver from the source code.
Here's how to download and install Ixgbe-driven tutorials in Ubuntu, Debian, or their derivative editions.
First step: Installation Prerequisites
Before installing, you need to install a matching kernel header file and development kit.
$ sudo apt-get install linux-headers-$ (uname-r)
$ sudo apt-get install gcc make
Step two: Compile Ixgbe driver
Download the source code from the latest Ixgbe drive.
$ wget http://sourceforge.net/projects/e1000/files/ixgbe%20stable/3.23.2/ixgbe-3.23.2.tar.gz
Compile Ixgbe driver as follows.
$ tar xvfvz ixgbe-3.23.2.tar.gz
$ cd ixgbe-3.23.2/src
$ make
Step three: Check the Ixgbe drive
After compiling, you will see the creation of the Ixgbe.ko in the IXGBE-3.23.2/SRC directory. This is the Ixgbe drive that will be loaded into the kernel.
Check the kernel module information with the Modinfo command. Note that you need to specify the absolute path of the module file (e.g../ixgbe.ko or/home/xmodulo/ixgbe/ixgbe-3.23.2/src/ixgbe.ko). The version of the Ixgbe kernel is displayed in the output.
FileName:/home/xmodulo/ixgbe/ixgbe-3.23.2/src/ixgbe.ko version:3.23.2 license:gpl Description:intel (R) Gigab It PCI Express network Driver author:intel Corporation, srcversion:2ada5e537923e983fa9dae2 alias:pci:v00008086d00 001560sv*sd*bc*sc*i* alias:pci:v00008086d00001558sv*sd*bc*sc*i* alias:pci:v00008086d0000154asv*sd*bc*sc*i* alias: pci:v00008086d00001557sv*sd*bc*sc*i* alias:pci:v00008086d0000154fsv*sd*bc*sc*i* alias:pci:v00008086d0000154dsv* sd*bc*sc*i* alias:pci:v00008086d00001528sv*sd*bc*sc*i* alias:pci:v00008086d000010f8sv*sd*bc*sc*i* alias:pci:v0000 8086d0000151csv*sd*bc*sc*i* alias:pci:v00008086d00001529sv*sd*bc*sc*i* Alias:pci:v00008086d0000152asv*sd*bc*sc*i * alias:pci:v00008086d000010f9sv*sd*bc*sc*i* alias:pci:v00008086d00001514sv*sd*bc*sc*i* alias:pci:v00008086d00001 507sv*sd*bc*sc*i* alias:pci:v00008086d000010fbsv*sd*bc*sc*i* alias:pci:v00008086d00001517sv*sd*bc*sc*i* Alias:pci : v00008086d000010fcsv*sd*bc*sc*i*
alias:pci:v00008086d000010f7sv*sd*bc*sc*i* alias:pci:v00008086d00001508sv*sd*bc*sc*i* alias:pci:v00008086d000010 dbsv*sd*bc*sc*i* alias:pci:v00008086d000010f4sv*sd*bc*sc*i* alias:pci:v00008086d000010e1sv*sd*bc*sc*i* Alias:pci: v00008086d000010f1sv*sd*bc*sc*i* alias:pci:v00008086d000010ecsv*sd*bc*sc*i* ALIAS:PCI:V00008086D000010DDSV*SD*BC *sc*i* alias:pci:v00008086d0000150bsv*sd*bc*sc*i* alias:pci:v00008086d000010c8sv*sd*bc*sc*i* alias:pci:v00008086d 000010c7sv*sd*bc*sc*i* alias:pci:v00008086d000010c6sv*sd*bc*sc*i* alias:pci:v00008086d000010b6sv*sd*bc*sc*i* Depe NDS:PTP,DCA vermagic:3.11.0-19-generic SMP mod_unload modversions parm:InterruptType:Change Interrupt Mode (0=LEGAC Y, 1=msi, 2=msi-x), default Intmode (deprecated) (array of int) Parm:IntMode:Change Interrupt Mode (0=legacy, 1=msi, 2 = MSI-X), default 2 (array of int) parm:MQ:Disable or enable multiple queues, default 1 (array of int) parm:DCA:Disabl E or enable Direct Cache ACCESS, 0=disabled, 1=descriptor only, 2=descriptor and data (array of int) Parm:RSS:Number of receive-side Scaling Tor queues, default 0=number of CPUs (array of int) Parm:VMDQ:Number of Virtual Machine Device queues:0/1 = disable, 2 -16 Enable (default=8) (array of int) Parm:max_vfs:Number of Virtual functions:0 = disable (default), 1-63 = enable th is many VFs (array to int) Parm:VEPA:VEPA Bridge mode:0 = VEB (default), 1 = Vepa (array of int) Parm:interruptthro Ttlerate:maximum interrupts/second, per vector, (0,1,956-488281), default 1 (array of int) Parm:LLIPort:Low Latency
Interrupt TCP Port (0-65535) (array of int) Parm:LLIPush:Low latency Interrupt on TCP Push flag (0,1) (array of int) Parm:LLISize:Low Latency Interrupt on Packet Size (0-1500) (array of int) Parm:LLIEType:Low Latency Interrupt Etherne T Protocol Type (array of int) Parm:LLIVLANP:Low latency Interrupt on VLAN priority threshold (array of int) PARM:FD Irpballoc:flow DirectorPacket buffer allocation level:1 = 8k hash filters or 2k perfect Filters 2 = 16k Hash filters or 4k perfect filters 3 = 32k Hash filters or 8k perfect filters (array of int) Parm:AtrSampleRate:Software ATR Tx Packet sample rate (array of int) parm:FCoE:Disable or enable FCoE offload, default 1 (array of int) Parm:LRO:Large Receive Offload (0,1), DE Fault 1 = ON (array of int) Parm:allow_unsupported_sfp:Allow unsupported and untested sfp+ modules on 82599 based adapt
ERS, default 0 = Disable (array of int)
Fourth step: Test Ixgbe Drive
Before testing a new module, you need to remove it if you already have an older version of the Ixgbe module in your kernel.
Then use the Insmod command to insert the newly compiled Ixgbe module. Make sure that you specify an absolute path for a module.
If the above command runs successfully, no information is displayed.
If you need to, you can try adding extra parameters. For example, the number of queues to set up RSS is 16:
$ sudo insmod./ixgbe.ko rss=16
Check the/var/log/kern.log to see if the Ixgbe drive has been successfully activated. View "Intel (R) Gigabit PCI Express Network Driver" in the log. Ixgbe version information should be the same as the previous modinfo display.
Sep 14:48:52 spongebob Kernel: [684717.906254] Intel (R) Gigabit PCI Express network driver-version 3.22.3
Fifth step: Install Ixgbe Drive
Once you verify that the new Ixgbe driver can be loaded successfully, the final step is to install the drive in your system.
The Ixgbe.ko will be installed under/lib/modules//kernel/drivers/net/ethernet/intel/ixgbe.
From this step, you can load the Ixgbe driver with the following Modprobe command. Note that you no longer have to specify an absolute path.
If you want to load the Ixgbe driver at startup, you can add "Ixgbe" at the end of the/etc/modules.