Installing ixgbe driver on Ubuntu Server 14.04 LTS

This guide is loosely based on the this post but I was unable to complete the installation because of the following error:

hendri@techedemic: /var/tmp/ixgbe-4.1.2/src $ dmesg
......snipped......
[12270.405508] ixgbe: Unknown symbol vxlan_get_rx_port (err 0)
[12428.182904] ixgbe: Unknown symbol vxlan_get_rx_port (err 0)
[13448.131090] ixgbe: Unknown symbol vxlan_get_rx_port (err 0)
[18947.596474] ixgbe: Unknown symbol vxlan_get_rx_port (err 0)
[18975.603555] ixgbe: Unknown symbol vxlan_get_rx_port (err 0)
......snipped......

So, here follows the same guide, but with the missing steps I needed to complete the installation.
As a reference, I was running Kernel 3.13.0-20 before this.

Step 1: Move Ubuntu to the Hardware Enablement LTS stack. This is LTS safe. See this link

# install packages
sudo apt-get install linux-generic-lts-utopic xserver-xorg-lts-utopic libegl1-mesa-drivers-lts-utopic xserver-xorg-video-all-lts-utopic xserver-xorg-input-all-lts-utopic
 
# reboot system into latest running kernel as installed by above packages
sudo init 6

Step 2: Download the latest version of the ixgbe driver. At the time of this writing, it is 4.1.2
The working directory in this example is /var/tmp

user@techedemic:/var/tmp$ cd /var/tmp
user@techedemic:/var/tmp$ wget http://sourceforge.net/projects/e1000/files/ixgbe%20stable/4.1.2/ixgbe-4.1.2.tar.gz/download

Step 3: Extract files

user@techedemic:/var/tmp$ tar -zxvf ixgbe-4.1.2.tar.gz

Step 4: Build the driver/module

user@techedemic:$ cd /var/tmp/ixgbe-4.1.2/src
user@techedemic:/var/tmp/ixgbe-4.1.2/src$ sudo make clean #not required but advisable
user@techedemic:/var/tmp/ixgbe-4.1.2/src$ sudo make
user@techedemic:/var/tmp/ixgbe-4.1.2/src$ sudo make install

Step 5: View module details for the newly built module. Pay special attention to the ‘depends’ section

user@techedemic:/var/tmp/ixgbe-4.1.2/src$ modinfo ./ixgbe.ko
filename:       /var/tmp/ixgbe-4.1.2/src/./ixgbe.ko
version:        4.1.2
license:        GPL
description:    Intel(R) 10 Gigabit PCI Express Network Driver
author:         Intel Corporation, <linux.nics@intel.com>
srcversion:     11CE41D9B741B44F4507285
alias:          pci:v00008086d000015ADsv*sd*bc*sc*i*
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,vxlan
vermagic:       3.16.0-45-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 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), 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)
parm:           dmac_watchdog:DMA coalescing watchdog in microseconds (0,41-10000), default 0 = off (array of int)
parm:           vxlan_rx:VXLAN receive checksum offload (0,1), default 1 = Enable (array of int)

Step 6: Load the vxlan module

user@techedemic:/var/tmp/ixgbe-4.1.2/src$ sudo modprobe vxlan

Step 7: Install the module. If successful there should be no output.

user@techedemic:/var/tmp/ixgbe-4.1.2/src$ sudo insmod ./ixgbe.ko

Step 8: Run dmesg and check to see if new interfaces are detected after loading the new module. Example output included below

user@techedemic:/var/tmp/ixgbe-4.1.2/src$ dmesg
[19097.752081] Intel(R) 10 Gigabit PCI Express Network Driver - version 4.1.2
[19097.752090] Copyright (c) 1999-2015 Intel Corporation.
[19097.752414] ACPI Warning: \_SB_.PCI0.BR2C._PRT: Return Package has no elements (empty) (20140424/nsprepkg-126)
[19099.110658] ixgbe 0000:03:00.0: irq 85 for MSI/MSI-X
                                 <-----snipped for easier reading----->
[19099.110835] ixgbe 0000:03:00.0: irq 101 for MSI/MSI-X
[19099.335410] ixgbe 0000:03:00.0 eth0: MAC: 5, PHY: 6, PBA No: 020000-000
[19099.335422] ixgbe 0000:03:00.0: 00:25:90:5d:0f:7e
[19099.335432] ixgbe 0000:03:00.0 eth0: Enabled Features: RxQ: 16 TxQ: 16 FdirHash RSC vxlan_rx
[19099.354019] ixgbe 0000:03:00.0 eth0: Intel(R) 10 Gigabit Network Connection
[19101.100611] ixgbe 0000:03:00.1: irq 102 for MSI/MSI-X
                                 <-----snipped for easier reading----->
[19101.100790] ixgbe 0000:03:00.1: irq 118 for MSI/MSI-X
[19101.321945] ixgbe 0000:03:00.1 eth1: MAC: 5, PHY: 6, PBA No: 020000-000
[19101.321959] ixgbe 0000:03:00.1: 00:25:90:5d:0f:7f
[19101.321969] ixgbe 0000:03:00.1 eth1: Enabled Features: RxQ: 16 TxQ: 16 FdirHash RSC vxlan_rx
[19101.341933] ixgbe 0000:03:00.1 eth1: Intel(R) 10 Gigabit Network Connection
[19161.564788] ixgbe 0000:03:00.0: registered PHC device on eth0
[19163.468677] ixgbe 0000:03:00.1: registered PHC device on eth1

As can be seen above, my dual port 10gbps interfaces have been detected as eth0 and eth1.

Step 9: Configure your interfaces in /etc/network/interfaces as you would for any other (not shown here) and bring them up. You can then use ethtool to see supported modes.

user@techedemic: /var/tmp/ixgbe-4.1.2/src$ sudo ifup eth0 && sudo ifup eth1
 
user@techedemic: /var/tmp/ixgbe-4.1.2/src$ ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:25:90:5d:0f:7e
          inet6 addr: fe80::225:90ff:fe5d:f7e/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:648 (648.0 B)
 
user@techedemic: /var/tmp/ixgbe-4.1.2/src$ sudo ethtool eth0
Settings for eth0:
        Supported ports: [ TP ]
        Supported link modes:   1000baseT/Full
                                10000baseT/Full
        Supported pause frame use: No
        Supports auto-negotiation: Yes
        Advertised link modes:  1000baseT/Full
                                10000baseT/Full
        Advertised pause frame use: Symmetric
        Advertised auto-negotiation: Yes
        Speed: 10000Mb/s
        Duplex: Full
        Port: Twisted Pair
        PHYAD: 0
        Transceiver: external
        Auto-negotiation: on
        MDI-X: Unknown
        Supports Wake-on: umbg
        Wake-on: g
        Current message level: 0x00000007 (7)
                               drv probe link
        Link detected: yes

I hope this helps at least 1 person because it cost me 4 hours of my life.

Enjoy!

3 comments

  1. Do you know the source of the ACPI warning you have :
    ACPI Warning: \_SB_.PCI0.BR2C._PRT: Return Package has no elements (empty) (20140424/nsprepkg-126)

    I have the exact same message but I don’t understand it.

Leave a Reply

Your email address will not be published. Required fields are marked *