1 .. SPDX-License-Identifier: GPL-2.0+
3 Linux* Base Driver for the Intel(R) Ethernet 10 Gigabit PCI Express Adapters
4 =============================================================================
6 Intel 10 Gigabit Linux driver.
7 Copyright(c) 1999-2018 Intel Corporation.
12 - Identifying Your Adapter
13 - Command Line Parameters
14 - Additional Configurations
18 Identifying Your Adapter
19 ========================
20 The driver is compatible with devices based on the following:
22 * Intel(R) Ethernet Controller 82598
23 * Intel(R) Ethernet Controller 82599
24 * Intel(R) Ethernet Controller X520
25 * Intel(R) Ethernet Controller X540
26 * Intel(R) Ethernet Controller x550
27 * Intel(R) Ethernet Controller X552
28 * Intel(R) Ethernet Controller X553
30 For information on how to identify your adapter, and for the latest Intel
31 network drivers, refer to the Intel Support website:
32 https://www.intel.com/support
34 SFP+ Devices with Pluggable Optics
35 ----------------------------------
40 - If your 82599-based Intel(R) Network Adapter came with Intel optics or is an
41 Intel(R) Ethernet Server Adapter X520-2, then it only supports Intel optics
42 and/or the direct attach cables listed below.
43 - When 82599-based SFP+ devices are connected back to back, they should be set
44 to the same Speed setting via ethtool. Results may vary if you mix speed
47 +---------------+---------------------------------------+------------------+
48 | Supplier | Type | Part Numbers |
49 +===============+=======================================+==================+
51 +---------------+---------------------------------------+------------------+
52 | Intel | DUAL RATE 1G/10G SFP+ SR (bailed) | FTLX8571D3BCV-IT |
53 +---------------+---------------------------------------+------------------+
54 | Intel | DUAL RATE 1G/10G SFP+ SR (bailed) | AFBR-703SDZ-IN2 |
55 +---------------+---------------------------------------+------------------+
56 | Intel | DUAL RATE 1G/10G SFP+ SR (bailed) | AFBR-703SDDZ-IN1 |
57 +---------------+---------------------------------------+------------------+
59 +---------------+---------------------------------------+------------------+
60 | Intel | DUAL RATE 1G/10G SFP+ LR (bailed) | FTLX1471D3BCV-IT |
61 +---------------+---------------------------------------+------------------+
62 | Intel | DUAL RATE 1G/10G SFP+ LR (bailed) | AFCT-701SDZ-IN2 |
63 +---------------+---------------------------------------+------------------+
64 | Intel | DUAL RATE 1G/10G SFP+ LR (bailed) | AFCT-701SDDZ-IN1 |
65 +---------------+---------------------------------------+------------------+
67 The following is a list of 3rd party SFP+ modules that have received some
68 testing. Not all modules are applicable to all devices.
70 +---------------+---------------------------------------+------------------+
71 | Supplier | Type | Part Numbers |
72 +===============+=======================================+==================+
73 | Finisar | SFP+ SR bailed, 10g single rate | FTLX8571D3BCL |
74 +---------------+---------------------------------------+------------------+
75 | Avago | SFP+ SR bailed, 10g single rate | AFBR-700SDZ |
76 +---------------+---------------------------------------+------------------+
77 | Finisar | SFP+ LR bailed, 10g single rate | FTLX1471D3BCL |
78 +---------------+---------------------------------------+------------------+
79 | Finisar | DUAL RATE 1G/10G SFP+ SR (No Bail) | FTLX8571D3QCV-IT |
80 +---------------+---------------------------------------+------------------+
81 | Avago | DUAL RATE 1G/10G SFP+ SR (No Bail) | AFBR-703SDZ-IN1 |
82 +---------------+---------------------------------------+------------------+
83 | Finisar | DUAL RATE 1G/10G SFP+ LR (No Bail) | FTLX1471D3QCV-IT |
84 +---------------+---------------------------------------+------------------+
85 | Avago | DUAL RATE 1G/10G SFP+ LR (No Bail) | AFCT-701SDZ-IN1 |
86 +---------------+---------------------------------------+------------------+
87 | Finisar | 1000BASE-T SFP | FCLF8522P2BTL |
88 +---------------+---------------------------------------+------------------+
89 | Avago | 1000BASE-T | ABCU-5710RZ |
90 +---------------+---------------------------------------+------------------+
91 | HP | 1000BASE-SX SFP | 453153-001 |
92 +---------------+---------------------------------------+------------------+
94 82599-based adapters support all passive and active limiting direct attach
95 cables that comply with SFF-8431 v4.1 and SFF-8472 v10.4 specifications.
97 Laser turns off for SFP+ when ifconfig ethX down
98 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
99 "ifconfig ethX down" turns off the laser for 82599-based SFP+ fiber adapters.
100 "ifconfig ethX up" turns on the laser.
101 Alternatively, you can use "ip link set [down/up] dev ethX" to turn the
105 82599-based QSFP+ Adapters
106 ~~~~~~~~~~~~~~~~~~~~~~~~~~
108 - If your 82599-based Intel(R) Network Adapter came with Intel optics, it only
109 supports Intel optics.
110 - 82599-based QSFP+ adapters only support 4x10 Gbps connections. 1x40 Gbps
111 connections are not supported. QSFP+ link partners must be configured for
113 - 82599-based QSFP+ adapters do not support automatic link speed detection.
114 The link speed must be configured to either 10 Gbps or 1 Gbps to match the link
115 partners speed capabilities. Incorrect speed configurations will result in
117 - Intel(R) Ethernet Converged Network Adapter X520-Q1 only supports the optics
118 and direct attach cables listed below.
120 +---------------+---------------------------------------+------------------+
121 | Supplier | Type | Part Numbers |
122 +===============+=======================================+==================+
123 | Intel | DUAL RATE 1G/10G QSFP+ SRL (bailed) | E10GQSFPSR |
124 +---------------+---------------------------------------+------------------+
126 82599-based QSFP+ adapters support all passive and active limiting QSFP+
127 direct attach cables that comply with SFF-8436 v4.1 specifications.
132 - Intel(r) Ethernet Network Adapters that support removable optical modules
133 only support their original module type (for example, the Intel(R) 10 Gigabit
134 SR Dual Port Express Module only supports SR optical modules). If you plug in
135 a different type of module, the driver will not load.
136 - Hot Swapping/hot plugging optical modules is not supported.
137 - Only single speed, 10 gigabit modules are supported.
138 - LAN on Motherboard (LOMs) may support DA, SR, or LR modules. Other module
139 types are not supported. Please see your system documentation for details.
141 The following is a list of SFP+ modules and direct attach cables that have
142 received some testing. Not all modules are applicable to all devices.
144 +---------------+---------------------------------------+------------------+
145 | Supplier | Type | Part Numbers |
146 +===============+=======================================+==================+
147 | Finisar | SFP+ SR bailed, 10g single rate | FTLX8571D3BCL |
148 +---------------+---------------------------------------+------------------+
149 | Avago | SFP+ SR bailed, 10g single rate | AFBR-700SDZ |
150 +---------------+---------------------------------------+------------------+
151 | Finisar | SFP+ LR bailed, 10g single rate | FTLX1471D3BCL |
152 +---------------+---------------------------------------+------------------+
154 82598-based adapters support all passive direct attach cables that comply with
155 SFF-8431 v4.1 and SFF-8472 v10.4 specifications. Active direct attach cables
158 Third party optic modules and cables referred to above are listed only for the
159 purpose of highlighting third party specifications and potential
160 compatibility, and are not recommendations or endorsements or sponsorship of
161 any third party's product by Intel. Intel is not endorsing or promoting
162 products made by any third party and the third party reference is provided
163 only to share information regarding certain optic modules and cables with the
164 above specifications. There may be other manufacturers or suppliers, producing
165 or supplying optic modules and cables with similar or matching descriptions.
166 Customers must use their own discretion and diligence to purchase optic
167 modules and cables from any third party of their choice. Customers are solely
168 responsible for assessing the suitability of the product and/or devices and
169 for the selection of the vendor for purchasing any product. THE OPTIC MODULES
170 AND CABLES REFERRED TO ABOVE ARE NOT WARRANTED OR SUPPORTED BY INTEL. INTEL
171 ASSUMES NO LIABILITY WHATSOEVER, AND INTEL DISCLAIMS ANY EXPRESS OR IMPLIED
172 WARRANTY, RELATING TO SALE AND/OR USE OF SUCH THIRD PARTY PRODUCTS OR
173 SELECTION OF VENDOR BY CUSTOMERS.
175 Command Line Parameters
176 =======================
182 This parameter adds support for SR-IOV. It causes the driver to spawn up to
183 max_vfs worth of virtual functions.
184 If the value is greater than 0 it will also force the VMDq parameter to be 1 or
187 NOTE: This parameter is only used on kernel 3.7.x and below. On kernel 3.8.x
188 and above, use sysfs to enable VFs. Also, for Red Hat distributions, this
189 parameter is only used on version 6.6 and older. For version 6.7 and newer, use
192 #echo $num_vf_enabled > /sys/class/net/$dev/device/sriov_numvfs // enable VFs
193 #echo 0 > /sys/class/net/$dev/device/sriov_numvfs //disable VFs
195 The parameters for the driver are referenced by position. Thus, if you have a
196 dual port adapter, or more than one adapter in your system, and want N virtual
197 functions per port, you must specify a number for each port with each parameter
198 separated by a comma. For example::
200 modprobe ixgbe max_vfs=4
202 This will spawn 4 VFs on the first port.
206 modprobe ixgbe max_vfs=2,4
208 This will spawn 2 VFs on the first port and 4 VFs on the second port.
210 NOTE: Caution must be used in loading the driver with these parameters.
211 Depending on your system configuration, number of slots, etc., it is impossible
212 to predict in all cases where the positions would be on the command line.
214 NOTE: Neither the device nor the driver control how VFs are mapped into config
215 space. Bus layout will vary by operating system. On operating systems that
216 support it, you can check sysfs to find the mapping.
218 NOTE: When either SR-IOV mode or VMDq mode is enabled, hardware VLAN filtering
219 and VLAN tag stripping/insertion will remain enabled. Please remove the old
220 VLAN filter before the new VLAN filter is added. For example,
224 ip link set eth0 vf 0 vlan 100 // set VLAN 100 for VF 0
225 ip link set eth0 vf 0 vlan 0 // Delete VLAN 100
226 ip link set eth0 vf 0 vlan 200 // set a new VLAN 200 for VF 0
228 With kernel 3.6, the driver supports the simultaneous usage of max_vfs and DCB
229 features, subject to the constraints described below. Prior to kernel 3.6, the
230 driver did not support the simultaneous operation of max_vfs greater than 0 and
231 the DCB features (multiple traffic classes utilizing Priority Flow Control and
232 Extended Transmission Selection).
234 When DCB is enabled, network traffic is transmitted and received through
235 multiple traffic classes (packet buffers in the NIC). The traffic is associated
236 with a specific class based on priority, which has a value of 0 through 7 used
237 in the VLAN tag. When SR-IOV is not enabled, each traffic class is associated
238 with a set of receive/transmit descriptor queue pairs. The number of queue
239 pairs for a given traffic class depends on the hardware configuration. When
240 SR-IOV is enabled, the descriptor queue pairs are grouped into pools. The
241 Physical Function (PF) and each Virtual Function (VF) is allocated a pool of
242 receive/transmit descriptor queue pairs. When multiple traffic classes are
243 configured (for example, DCB is enabled), each pool contains a queue pair from
244 each traffic class. When a single traffic class is configured in the hardware,
245 the pools contain multiple queue pairs from the single traffic class.
247 The number of VFs that can be allocated depends on the number of traffic
248 classes that can be enabled. The configurable number of traffic classes for
249 each enabled VF is as follows:
250 0 - 15 VFs = Up to 8 traffic classes, depending on device support
251 16 - 31 VFs = Up to 4 traffic classes
252 32 - 63 VFs = 1 traffic class
254 When VFs are configured, the PF is allocated one pool as well. The PF supports
255 the DCB features with the constraint that each traffic class will only use a
256 single queue pair. When zero VFs are configured, the PF can support multiple
257 queue pairs per traffic class.
259 allow_unsupported_sfp
260 ---------------------
262 :Default Value: 0 (disabled)
264 This parameter allows unsupported and untested SFP+ modules on 82599-based
265 adapters, as long as the type of module is known to the driver.
269 :Valid Range: 0-16 (0=none,...,16=all)
272 This parameter adjusts the level of debug messages displayed in the system
276 Additional Features and Configurations
277 ======================================
281 Ethernet Flow Control (IEEE 802.3x) can be configured with ethtool to enable
282 receiving and transmitting pause frames for ixgbe. When transmit is enabled,
283 pause frames are generated when the receive packet buffer crosses a predefined
284 threshold. When receive is enabled, the transmit unit will halt for the time
285 delay specified when a pause frame is received.
287 NOTE: You must have a flow control capable link partner.
289 Flow Control is enabled by default.
291 Use ethtool to change the flow control settings. To enable or disable Rx or
294 ethtool -A eth? rx <on|off> tx <on|off>
296 Note: This command only enables or disables Flow Control if auto-negotiation is
297 disabled. If auto-negotiation is enabled, this command changes the parameters
298 used for auto-negotiation with the link partner.
300 To enable or disable auto-negotiation::
302 ethtool -s eth? autoneg <on|off>
304 Note: Flow Control auto-negotiation is part of link auto-negotiation. Depending
305 on your device, you may not be able to change the auto-negotiation setting.
307 NOTE: For 82598 backplane cards entering 1 gigabit mode, flow control default
308 behavior is changed to off. Flow control in 1 gigabit mode on these devices can
309 lead to transmit hangs.
311 Intel(R) Ethernet Flow Director
312 -------------------------------
313 The Intel Ethernet Flow Director performs the following tasks:
315 - Directs receive packets according to their flows to different queues.
316 - Enables tight control on routing a flow in the platform.
317 - Matches flows and CPU cores for flow affinity.
318 - Supports multiple parameters for flexible flow classification and load
319 balancing (in SFP mode only).
321 NOTE: Intel Ethernet Flow Director masking works in the opposite manner from
322 subnet masking. In the following command::
324 #ethtool -N eth11 flow-type ip4 src-ip 172.4.1.2 m 255.0.0.0 dst-ip \
325 172.21.1.1 m 255.128.0.0 action 31
327 The src-ip value that is written to the filter will be 0.4.1.2, not 172.0.0.0
328 as might be expected. Similarly, the dst-ip value written to the filter will be
329 0.21.1.1, not 172.0.0.0.
331 To enable or disable the Intel Ethernet Flow Director::
333 # ethtool -K ethX ntuple <on|off>
335 When disabling ntuple filters, all the user programmed filters are flushed from
336 the driver cache and hardware. All needed filters must be re-added when ntuple
339 To add a filter that directs packet to queue 2, use -U or -N switch::
341 # ethtool -N ethX flow-type tcp4 src-ip 192.168.10.1 dst-ip \
342 192.168.10.2 src-port 2000 dst-port 2001 action 2 [loc 1]
344 To see the list of filters currently present::
346 # ethtool <-u|-n> ethX
348 Sideband Perfect Filters
349 ------------------------
350 Sideband Perfect Filters are used to direct traffic that matches specified
351 characteristics. They are enabled through ethtool's ntuple interface. To add a
352 new filter use the following command::
354 ethtool -U <device> flow-type <type> src-ip <ip> dst-ip <ip> src-port <port> \
355 dst-port <port> action <queue>
358 <device> - the ethernet device to program
359 <type> - can be ip4, tcp4, udp4, or sctp4
360 <ip> - the IP address to match on
361 <port> - the port number to match on
362 <queue> - the queue to direct traffic towards (-1 discards the matched traffic)
364 Use the following command to delete a filter::
366 ethtool -U <device> delete <N>
368 Where <N> is the filter id displayed when printing all the active filters, and
369 may also have been specified using "loc <N>" when adding the filter.
371 The following example matches TCP traffic sent from 192.168.0.1, port 5300,
372 directed to 192.168.0.5, port 80, and sends it to queue 7::
374 ethtool -U enp130s0 flow-type tcp4 src-ip 192.168.0.1 dst-ip 192.168.0.5 \
375 src-port 5300 dst-port 80 action 7
377 For each flow-type, the programmed filters must all have the same matching
378 input set. For example, issuing the following two commands is acceptable::
380 ethtool -U enp130s0 flow-type ip4 src-ip 192.168.0.1 src-port 5300 action 7
381 ethtool -U enp130s0 flow-type ip4 src-ip 192.168.0.5 src-port 55 action 10
383 Issuing the next two commands, however, is not acceptable, since the first
384 specifies src-ip and the second specifies dst-ip::
386 ethtool -U enp130s0 flow-type ip4 src-ip 192.168.0.1 src-port 5300 action 7
387 ethtool -U enp130s0 flow-type ip4 dst-ip 192.168.0.5 src-port 55 action 10
389 The second command will fail with an error. You may program multiple filters
390 with the same fields, using different values, but, on one device, you may not
391 program two TCP4 filters with different matching fields.
393 Matching on a sub-portion of a field is not supported by the ixgbe driver, thus
394 partial mask fields are not supported.
396 To create filters that direct traffic to a specific Virtual Function, use the
397 "user-def" parameter. Specify the user-def as a 64 bit value, where the lower 32
398 bits represents the queue number, while the next 8 bits represent which VF.
399 Note that 0 is the PF, so the VF identifier is offset by 1. For example::
401 ... user-def 0x800000002 ...
403 specifies to direct traffic to Virtual Function 7 (8 minus 1) into queue 2 of
406 Note that these filters will not break internal routing rules, and will not
407 route traffic that otherwise would not have been sent to the specified Virtual
412 Jumbo Frames support is enabled by changing the Maximum Transmission Unit (MTU)
413 to a value larger than the default value of 1500.
415 Use the ifconfig command to increase the MTU size. For example, enter the
416 following where <x> is the interface number::
418 ifconfig eth<x> mtu 9000 up
420 Alternatively, you can use the ip command as follows::
422 ip link set mtu 9000 dev eth<x>
423 ip link set up dev eth<x>
425 This setting is not saved across reboots. The setting change can be made
426 permanent by adding 'MTU=9000' to the file::
428 /etc/sysconfig/network-scripts/ifcfg-eth<x> // for RHEL
429 /etc/sysconfig/network/<config_file> // for SLES
431 NOTE: The maximum MTU setting for Jumbo Frames is 9710. This value coincides
432 with the maximum Jumbo Frames size of 9728 bytes.
434 NOTE: This driver will attempt to use multiple page sized buffers to receive
435 each jumbo packet. This should help to avoid buffer starvation issues when
436 allocating receive packets.
438 NOTE: For 82599-based network connections, if you are enabling jumbo frames in
439 a virtual function (VF), jumbo frames must first be enabled in the physical
440 function (PF). The VF MTU setting cannot be larger than the PF MTU.
442 Generic Receive Offload, aka GRO
443 --------------------------------
444 The driver supports the in-kernel software implementation of GRO. GRO has
445 shown that by coalescing Rx traffic into larger chunks of data, CPU
446 utilization can be significantly reduced when under large Rx load. GRO is an
447 evolution of the previously-used LRO interface. GRO is able to coalesce
448 other protocols besides TCP. It's also safe to use with configurations that
449 are problematic for LRO, namely bridging and iSCSI.
451 Data Center Bridging (DCB)
452 --------------------------
454 The kernel assumes that TC0 is available, and will disable Priority Flow
455 Control (PFC) on the device if TC0 is not available. To fix this, ensure TC0 is
456 enabled when setting up DCB on your switch.
458 DCB is a configuration Quality of Service implementation in hardware. It uses
459 the VLAN priority tag (802.1p) to filter traffic. That means that there are 8
460 different priorities that traffic can be filtered into. It also enables
461 priority flow control (802.1Qbb) which can limit or eliminate the number of
462 dropped packets during network stress. Bandwidth can be allocated to each of
463 these priorities, which is enforced at the hardware level (802.1Qaz).
465 Adapter firmware implements LLDP and DCBX protocol agents as per 802.1AB and
466 802.1Qaz respectively. The firmware based DCBX agent runs in willing mode only
467 and can accept settings from a DCBX capable peer. Software configuration of
468 DCBX parameters via dcbtool/lldptool are not supported.
470 The ixgbe driver implements the DCB netlink interface layer to allow user-space
471 to communicate with the driver and query DCB configuration for the port.
475 The driver utilizes the ethtool interface for driver configuration and
476 diagnostics, as well as displaying statistical information. The latest ethtool
477 version is required for this functionality. Download it at:
478 https://www.kernel.org/pub/software/network/ethtool/
482 The ixgbe driver supports Fiber Channel over Ethernet (FCoE) and Data Center
483 Bridging (DCB). This code has no default effect on the regular driver
484 operation. Configuring DCB and FCoE is outside the scope of this README. Refer
485 to http://www.open-fcoe.org/ for FCoE project information and contact
486 ixgbe-eedc@lists.sourceforge.net for DCB information.
488 MAC and VLAN anti-spoofing feature
489 ----------------------------------
490 When a malicious driver attempts to send a spoofed packet, it is dropped by the
491 hardware and not transmitted.
493 An interrupt is sent to the PF driver notifying it of the spoof attempt. When a
494 spoofed packet is detected, the PF driver will send the following message to
495 the system log (displayed by the "dmesg" command)::
497 ixgbe ethX: ixgbe_spoof_check: n spoofed packets detected
499 where "x" is the PF interface number; and "n" is number of spoofed packets.
500 NOTE: This feature can be disabled for a specific Virtual Function (VF)::
502 ip link set <pf dev> vf <vf id> spoofchk {off|on}
505 Known Issues/Troubleshooting
506 ============================
508 Enabling SR-IOV in a 64-bit Microsoft* Windows Server* 2012/R2 guest OS
509 -----------------------------------------------------------------------
510 Linux KVM Hypervisor/VMM supports direct assignment of a PCIe device to a VM.
511 This includes traditional PCIe devices, as well as SR-IOV-capable devices based
512 on the Intel Ethernet Controller XL710.
517 For general information, go to the Intel support website at:
519 https://www.intel.com/support/
521 or the Intel Wired Networking project hosted by Sourceforge at:
523 https://sourceforge.net/projects/e1000
525 If an issue is identified with the released source code on a supported kernel
526 with a supported adapter, email the specific information related to the issue
527 to e1000-devel@lists.sf.net.