Intel萬兆網卡82599linux驅動安裝


在Debian系的Linux中編譯並安裝ixgbe驅動的教程

復制於在Debian系的Linux中編譯並安裝ixgbe驅動的教程

Intel的10G網卡(比如,82598、 82599、 x540)由ixgbe驅動支持。現代的Linux發行版已經帶有了ixgbe驅動,通過可加載模塊的方式使用。然而,有些情況你希望在你機器上的自己編譯安裝ixgbe驅動,比如,你想要體驗ixbge驅動的最新特性時。同樣,內核默認自帶的ixgbe驅動中的一個問題是不允許你自定義驅動的參數。如果你想要一個完全定制的ixgbe驅動(比如 RSS、多隊列、中斷閾值等等),你需要手動從源碼編譯ixgbe驅動。
這里是如何在Ubuntu、Debian或者它們的衍生版中下載安裝ixgbe驅動的教程。

第一步: 安裝前提
安裝之前,需要安裝匹配的內核頭文件和開發工具包。

$ sudo apt-get install linux-headers-$(uname -r)
$ sudo apt-get install gcc make
第二步: 編譯Ixgbe驅動
從最新的ixgbe驅動中下載源碼。

$ wget http://sourceforge.net/projects/e1000/files/ixgbe%20stable/3.23.2/ixgbe-3.23.2.tar.gz
如下編譯ixgbe驅動。

$ tar xvfvz ixgbe-3.23.2.tar.gz
$ cd ixgbe-3.23.2/src
$ make
第三步: 檢查Ixgbe驅動
編譯之后,你會看到在ixgbe-3.23.2/src目錄下創建了ixgbe.ko。這就是會加載到內核之中的ixgbe驅動。
用modinfo命令檢查內核模塊的信息。注意你需要指定模塊文件的絕對路徑(比如 ./ixgbe.ko 或者 /home/xmodulo/ixgbe/ixgbe-3.23.2/src/ixgbe.ko)。輸出中會顯示ixgbe內核的版本。

$ 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 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)
第四步: 測試Ixgbe驅動
在測試新的模塊之前,如果你內核中已存在舊版本ixgbe模塊的話你需要先移除它。

$ sudo rmmod ixgbe
接着使用insmod命令插入新編譯的ixgbe模塊。確保指定一個模塊的絕對路徑。

$ sudo insmod ./ixgbe.ko
如果上面的命令成功運行,就不會顯示任何的信息。
如果你需要,你可以嘗試加入額外的參數。比如,設置RSS的隊列數量為16:

$ sudo insmod ./ixgbe.ko RSS=16
檢查/var/log/kern.log來查看ixgbe驅動是否成功激活。查看日志中的“Intel(R) 10 Gigabit PCI Express Network Driver”。ixgbe的版本信息應該和之前的modinfo的顯示應該相同。
Sep 18 14:48:52 spongebob kernel: [684717.906254] Intel(R) 10 Gigabit PCI Express Network Driver - version 3.22.3
第五步: 安裝Ixgbe驅動
一旦你驗證新的ixgbe驅動可以成功加載,最后一步是在你的系統中安裝驅動。

$ sudo make install
ixgbe.ko 會安裝在/lib/modules//kernel/drivers/net/ethernet/intel/ixgbe 下。
從這一步起,你可以用下面的modprobe命令加載ixgbe驅動了。注意你不必再指定絕對路徑。

$ sudo modprobe ixgbe
如果你希望在啟動時加載ixgbe驅動,你可以在/etc/modules的最后加入“ixgb

遇到bug

我安裝的是最新版的5.3.7驅動版本.
在使用這個教程的過程里:
在中途出現了

insmod: ERROR: could not insert module ./ixgbe.ko: Unknown symbol in module

在使用dmesg的時候可以看到

Unknown symbol vxlan_get_rx_port (err 0)

實測可以使用的:

這個我是基於Debian安裝的,因為是root用戶,所以不需要使用sudo,而且Debian沒有sudo.
只執行到了第七步…后面的沒有繼續執行下去.
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
cd /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

tar -zxvf ixgbe-4.1.2.tar.gz

Step 4: Build the driver/module

cd /var/tmp/ixgbe-4.1.2/src
sudo make clean
#not required but advisable
sudo make
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

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,vxlanver
magic:       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 eth0Settings 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

failed to load because an unsupported SFP+ module type was detected.的解決

參考地址:https://blog.csdn.net/esonbest1234/article/details/51804181
隨着寬帶技術的快速發展,服務器使用萬兆網卡的概率越來越高。最近裝了幾台服務器都用的萬兆網卡,為了圖便宜,網卡和模塊都是淘寶上買的,這部還真遇到不少問題。

我的服務器都是centos6.4 64位的,網卡裝上后,lspci | grep 82599 能看到網卡
執行lspci |grep 82599能看到網卡在pci設備中
04:00.0 Ethernet controller: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection (rev 01)
但是ifcfg -a 看不到網卡比如eth0
(這個和我遇到的一模一樣)

使用dmesg | grep ixgbe 發現報錯,說發現不支持的光模塊,查看intel82599使用手冊嘿,里面還真說了,那些網卡經過測試, 意思這些默認是支持的。
ixgbe 0000:04:00.0: setting latency timer to 64
ixgbe 0000:04:00.0: failed to load because an unsupported SFP+ module type was detected.
ixgbe 0000:04:00.0: Reload the driver after installing a supported module.
后然百度發現有篇文章說到光模塊兼容性問題,馬上試了一下,果然解決了。
rmmod ixgbe 先刪除驅動
重新加載驅動,

modprobe ixgbe allow_unsupported_sfp=1,1 

驅動對allow_unsupported_sfp的解釋為:
allow_unsupported_sfp:Allow unsupported and untested SFP+ modules on 82599-based adapters (uint),即允
許82599網卡使用不兼容SFP+模塊。
重新加載后,大部分情況下ifconfig就能夠看到網卡信息了。
另外如果遇到安裝驅動等問題,可以參考intel網卡的readme,里面很全面,不過是英文的。

warning信息

WARNING: Intel (R) Network Connections are quality tested using Intel (R) Ethernet Optics. 
Using untested modules is not supported and may cause unstable operation or damage to the module or the adapter. 
Intel Corporation is not responsible for any harm caused by using untested modules.

dmesg的時候,會看到warning信息…
還是使用Intel配套的光模塊更合適


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM