How to compile and install ixgbe driver in Linux


This article introduces the knowledge about how to compile and install the ixgbe driver in Linux. During the operation of the actual case, many people will encounter such a dilemma. Next, let the editor guide you to learn how to deal with these Situation! I hope you read it carefully and learn something!

The first step: installation prerequisites

Before installation, you need to install the matching kernel header files and development kits.

$ sudo apt-get install linux-headers-$(uname -r) $ sudo apt-get install gcc make

Step 2: Compile the ixgbe driver

Download the source code from the latest ixgbe driver.

$ wget

Compile ixgbe as follows drive.

$ tar xvfvz ixgbe-3.23.2.tar.gz $ cd ixgbe-3.23.2/src $ make

Step 3: Check the ixgbe driver

After compiling, you will see that ixgbe is created under the ixgbe-3.23.2/src directory .ko. This is the ixgbe driver 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 (such as ./ixgbe.ko or /home/xmodulo/ixgbe/ixgbe-3.23.2/src/ixgbe.ko). The version of the ixgbe kernel will be displayed in the output.

$ modinfo ./ixgbe.ko

filename: /home/xmodulo/ixgbe/ixgbe-3.23.2/src/ixgbe.ko version: 3.23.2 license: gpl description: intel(r) 10 gigabit pci express network driver author: intel corporation, srcversion: 2ada5e537923e983fa9dae2 alias: pci:v00008086d00001560sv*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:v00008086d0000151csv*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:v00008086d00001507sv*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:v00008086d000010dbsv*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:v00008086d000010c7sv*sd*bc*sc*i* alias: pci:v00008086d000010c6sv*sd*bc*sc*i* alias: pci:v00008086d000010b6sv*sd*bc*sc*i* 

depends: ptp,dca 

vermagic: 3.11.0-19-generic smp mod_unload modversions 

parm: interrupttype:change interrupt mode (0=legacy, 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:disable or enable direct cache access, 0=disabled, 1=descriptor only, 2=descriptor and data (array of int) 

parm: rss:number of receive-side scaling descriptor 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 this many vfs (array of int) parm: vepa:vepa bridge mode: 0 = veb (default), 1 = vepa (array of int) parm: interruptthrottlerate: maximum interrupts per 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 ethernet protocol type (array of int) 

parm: llivlanp:low latency interrupt on vlan priority threshold (array of int) 

parm: fdirpballoc:flow director packet 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 atrtx 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), default 1 = on (array of int) 

parm: allow_unsupported_sfp: allow unsupported and untested sfp+ modules on 82599 based adapters, default 0 = disable (array of int)

Step 4: Test ixgbe driver

Before testing the new module, you need to remove the old version ixgbe module if it exists in your kernel.

$ sudo rmmod ixgbe

Then use the insmod command to insert the newly compiled ixgbe module. Make sure to specify an absolute path to a module.

$ sudo insmod ./ixgbe.ko

If the above command runs successfully, no information will be displayed.

If you need, you can try adding additional parameters. For example, set the number of rss queues to 16:

$ sudo insmod ./ixgbe.ko rss=16

Check /var/log/kern.log to see if the ixgbe driver is successful activation. Look at the intel(r) 10 gigabit pci express network driver in the logs. The version information of ixgbe should be the same as the previous modinfo display.

sep 18 14:48:52 spongebob kernel: [684717.906254] intel(r) 10 gigabit pci express network driver - version 3.22.3

Step 5: Install ixgbe driver

Once you have verified that the new ixgbe driver can be loaded successfully, the final step is to install the driver on your system.

$ sudo make install

ixgbe.ko will be installed under /lib/modules//kernel/drivers/net/ethernet/intel/ixgbe.

From this step, you can use the following modprobe command to load the ixgbe driver. Note that you no longer have to specify an absolute path.

$ sudo modprobe ixgbe

If you want to load the ixgbe driver at startup, you can add ixgbe at the end of /etc/modules.

Copyright Description:No reproduction without permission。

Knowledge sharing community for developers。

Let more developers benefit from it。

Help developers share knowledge through the Internet。

Follow us