xref: /openbmc/linux/Documentation/networking/device_drivers/ethernet/intel/ixgbe.rst (revision 1ac731c529cd4d6adbce134754b51ff7d822b145)
1132db935SJakub Kicinski.. SPDX-License-Identifier: GPL-2.0+
2132db935SJakub Kicinski
3132db935SJakub Kicinski===========================================================================
4132db935SJakub KicinskiLinux Base Driver for the Intel(R) Ethernet 10 Gigabit PCI Express Adapters
5132db935SJakub Kicinski===========================================================================
6132db935SJakub Kicinski
7132db935SJakub KicinskiIntel 10 Gigabit Linux driver.
8132db935SJakub KicinskiCopyright(c) 1999-2018 Intel Corporation.
9132db935SJakub Kicinski
10132db935SJakub KicinskiContents
11132db935SJakub Kicinski========
12132db935SJakub Kicinski
13132db935SJakub Kicinski- Identifying Your Adapter
14132db935SJakub Kicinski- Command Line Parameters
15132db935SJakub Kicinski- Additional Configurations
16132db935SJakub Kicinski- Known Issues
17132db935SJakub Kicinski- Support
18132db935SJakub Kicinski
19132db935SJakub KicinskiIdentifying Your Adapter
20132db935SJakub Kicinski========================
21132db935SJakub KicinskiThe driver is compatible with devices based on the following:
22132db935SJakub Kicinski
23132db935SJakub Kicinski * Intel(R) Ethernet Controller 82598
24132db935SJakub Kicinski * Intel(R) Ethernet Controller 82599
25132db935SJakub Kicinski * Intel(R) Ethernet Controller X520
26132db935SJakub Kicinski * Intel(R) Ethernet Controller X540
27132db935SJakub Kicinski * Intel(R) Ethernet Controller x550
28132db935SJakub Kicinski * Intel(R) Ethernet Controller X552
29132db935SJakub Kicinski * Intel(R) Ethernet Controller X553
30132db935SJakub Kicinski
31132db935SJakub KicinskiFor information on how to identify your adapter, and for the latest Intel
32132db935SJakub Kicinskinetwork drivers, refer to the Intel Support website:
33132db935SJakub Kicinskihttps://www.intel.com/support
34132db935SJakub Kicinski
35132db935SJakub KicinskiSFP+ Devices with Pluggable Optics
36132db935SJakub Kicinski----------------------------------
37132db935SJakub Kicinski
38132db935SJakub Kicinski82599-BASED ADAPTERS
39132db935SJakub Kicinski~~~~~~~~~~~~~~~~~~~~
40132db935SJakub KicinskiNOTES:
41132db935SJakub Kicinski- If your 82599-based Intel(R) Network Adapter came with Intel optics or is an
42132db935SJakub KicinskiIntel(R) Ethernet Server Adapter X520-2, then it only supports Intel optics
43132db935SJakub Kicinskiand/or the direct attach cables listed below.
44132db935SJakub Kicinski- When 82599-based SFP+ devices are connected back to back, they should be set
45132db935SJakub Kicinskito the same Speed setting via ethtool. Results may vary if you mix speed
46132db935SJakub Kicinskisettings.
47132db935SJakub Kicinski
48132db935SJakub Kicinski+---------------+---------------------------------------+------------------+
49132db935SJakub Kicinski| Supplier      | Type                                  | Part Numbers     |
50132db935SJakub Kicinski+===============+=======================================+==================+
51132db935SJakub Kicinski| SR Modules                                                               |
52132db935SJakub Kicinski+---------------+---------------------------------------+------------------+
53132db935SJakub Kicinski| Intel         | DUAL RATE 1G/10G SFP+ SR (bailed)     | FTLX8571D3BCV-IT |
54132db935SJakub Kicinski+---------------+---------------------------------------+------------------+
55132db935SJakub Kicinski| Intel         | DUAL RATE 1G/10G SFP+ SR (bailed)     | AFBR-703SDZ-IN2  |
56132db935SJakub Kicinski+---------------+---------------------------------------+------------------+
57132db935SJakub Kicinski| Intel         | DUAL RATE 1G/10G SFP+ SR (bailed)     | AFBR-703SDDZ-IN1 |
58132db935SJakub Kicinski+---------------+---------------------------------------+------------------+
59132db935SJakub Kicinski| LR Modules                                                               |
60132db935SJakub Kicinski+---------------+---------------------------------------+------------------+
61132db935SJakub Kicinski| Intel         | DUAL RATE 1G/10G SFP+ LR (bailed)     | FTLX1471D3BCV-IT |
62132db935SJakub Kicinski+---------------+---------------------------------------+------------------+
63132db935SJakub Kicinski| Intel         | DUAL RATE 1G/10G SFP+ LR (bailed)     | AFCT-701SDZ-IN2  |
64132db935SJakub Kicinski+---------------+---------------------------------------+------------------+
65132db935SJakub Kicinski| Intel         | DUAL RATE 1G/10G SFP+ LR (bailed)     | AFCT-701SDDZ-IN1 |
66132db935SJakub Kicinski+---------------+---------------------------------------+------------------+
67132db935SJakub Kicinski
68132db935SJakub KicinskiThe following is a list of 3rd party SFP+ modules that have received some
69132db935SJakub Kicinskitesting. Not all modules are applicable to all devices.
70132db935SJakub Kicinski
71132db935SJakub Kicinski+---------------+---------------------------------------+------------------+
72132db935SJakub Kicinski| Supplier      | Type                                  | Part Numbers     |
73132db935SJakub Kicinski+===============+=======================================+==================+
74132db935SJakub Kicinski| Finisar       | SFP+ SR bailed, 10g single rate       | FTLX8571D3BCL    |
75132db935SJakub Kicinski+---------------+---------------------------------------+------------------+
76132db935SJakub Kicinski| Avago         | SFP+ SR bailed, 10g single rate       | AFBR-700SDZ      |
77132db935SJakub Kicinski+---------------+---------------------------------------+------------------+
78132db935SJakub Kicinski| Finisar       | SFP+ LR bailed, 10g single rate       | FTLX1471D3BCL    |
79132db935SJakub Kicinski+---------------+---------------------------------------+------------------+
80132db935SJakub Kicinski| Finisar       | DUAL RATE 1G/10G SFP+ SR (No Bail)    | FTLX8571D3QCV-IT |
81132db935SJakub Kicinski+---------------+---------------------------------------+------------------+
82132db935SJakub Kicinski| Avago         | DUAL RATE 1G/10G SFP+ SR (No Bail)    | AFBR-703SDZ-IN1  |
83132db935SJakub Kicinski+---------------+---------------------------------------+------------------+
84132db935SJakub Kicinski| Finisar       | DUAL RATE 1G/10G SFP+ LR (No Bail)    | FTLX1471D3QCV-IT |
85132db935SJakub Kicinski+---------------+---------------------------------------+------------------+
86132db935SJakub Kicinski| Avago         | DUAL RATE 1G/10G SFP+ LR (No Bail)    | AFCT-701SDZ-IN1  |
87132db935SJakub Kicinski+---------------+---------------------------------------+------------------+
88132db935SJakub Kicinski| Finisar       | 1000BASE-T SFP                        | FCLF8522P2BTL    |
89132db935SJakub Kicinski+---------------+---------------------------------------+------------------+
90132db935SJakub Kicinski| Avago         | 1000BASE-T                            | ABCU-5710RZ      |
91132db935SJakub Kicinski+---------------+---------------------------------------+------------------+
92132db935SJakub Kicinski| HP            | 1000BASE-SX SFP                       | 453153-001       |
93132db935SJakub Kicinski+---------------+---------------------------------------+------------------+
94132db935SJakub Kicinski
95132db935SJakub Kicinski82599-based adapters support all passive and active limiting direct attach
96132db935SJakub Kicinskicables that comply with SFF-8431 v4.1 and SFF-8472 v10.4 specifications.
97132db935SJakub Kicinski
98132db935SJakub KicinskiLaser turns off for SFP+ when ifconfig ethX down
99132db935SJakub Kicinski~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
100132db935SJakub Kicinski"ifconfig ethX down" turns off the laser for 82599-based SFP+ fiber adapters.
101132db935SJakub Kicinski"ifconfig ethX up" turns on the laser.
102132db935SJakub KicinskiAlternatively, you can use "ip link set [down/up] dev ethX" to turn the
103132db935SJakub Kicinskilaser off and on.
104132db935SJakub Kicinski
105132db935SJakub Kicinski
106132db935SJakub Kicinski82599-based QSFP+ Adapters
107132db935SJakub Kicinski~~~~~~~~~~~~~~~~~~~~~~~~~~
108132db935SJakub KicinskiNOTES:
109132db935SJakub Kicinski- If your 82599-based Intel(R) Network Adapter came with Intel optics, it only
110132db935SJakub Kicinskisupports Intel optics.
111132db935SJakub Kicinski- 82599-based QSFP+ adapters only support 4x10 Gbps connections.  1x40 Gbps
112132db935SJakub Kicinskiconnections are not supported. QSFP+ link partners must be configured for
113132db935SJakub Kicinski4x10 Gbps.
114132db935SJakub Kicinski- 82599-based QSFP+ adapters do not support automatic link speed detection.
115132db935SJakub KicinskiThe link speed must be configured to either 10 Gbps or 1 Gbps to match the link
116132db935SJakub Kicinskipartners speed capabilities. Incorrect speed configurations will result in
117132db935SJakub Kicinskifailure to link.
118132db935SJakub Kicinski- Intel(R) Ethernet Converged Network Adapter X520-Q1 only supports the optics
119132db935SJakub Kicinskiand direct attach cables listed below.
120132db935SJakub Kicinski
121132db935SJakub Kicinski+---------------+---------------------------------------+------------------+
122132db935SJakub Kicinski| Supplier      | Type                                  | Part Numbers     |
123132db935SJakub Kicinski+===============+=======================================+==================+
124132db935SJakub Kicinski| Intel         | DUAL RATE 1G/10G QSFP+ SRL (bailed)   | E10GQSFPSR       |
125132db935SJakub Kicinski+---------------+---------------------------------------+------------------+
126132db935SJakub Kicinski
127132db935SJakub Kicinski82599-based QSFP+ adapters support all passive and active limiting QSFP+
128132db935SJakub Kicinskidirect attach cables that comply with SFF-8436 v4.1 specifications.
129132db935SJakub Kicinski
130132db935SJakub Kicinski82598-BASED ADAPTERS
131132db935SJakub Kicinski~~~~~~~~~~~~~~~~~~~~
132132db935SJakub KicinskiNOTES:
133132db935SJakub Kicinski- Intel(r) Ethernet Network Adapters that support removable optical modules
134132db935SJakub Kicinskionly support their original module type (for example, the Intel(R) 10 Gigabit
135132db935SJakub KicinskiSR Dual Port Express Module only supports SR optical modules). If you plug in
136132db935SJakub Kicinskia different type of module, the driver will not load.
137132db935SJakub Kicinski- Hot Swapping/hot plugging optical modules is not supported.
138132db935SJakub Kicinski- Only single speed, 10 gigabit modules are supported.
139132db935SJakub Kicinski- LAN on Motherboard (LOMs) may support DA, SR, or LR modules. Other module
140132db935SJakub Kicinskitypes are not supported. Please see your system documentation for details.
141132db935SJakub Kicinski
142132db935SJakub KicinskiThe following is a list of SFP+ modules and direct attach cables that have
143132db935SJakub Kicinskireceived some testing. Not all modules are applicable to all devices.
144132db935SJakub Kicinski
145132db935SJakub Kicinski+---------------+---------------------------------------+------------------+
146132db935SJakub Kicinski| Supplier      | Type                                  | Part Numbers     |
147132db935SJakub Kicinski+===============+=======================================+==================+
148132db935SJakub Kicinski| Finisar       | SFP+ SR bailed, 10g single rate       | FTLX8571D3BCL    |
149132db935SJakub Kicinski+---------------+---------------------------------------+------------------+
150132db935SJakub Kicinski| Avago         | SFP+ SR bailed, 10g single rate       | AFBR-700SDZ      |
151132db935SJakub Kicinski+---------------+---------------------------------------+------------------+
152132db935SJakub Kicinski| Finisar       | SFP+ LR bailed, 10g single rate       | FTLX1471D3BCL    |
153132db935SJakub Kicinski+---------------+---------------------------------------+------------------+
154132db935SJakub Kicinski
155132db935SJakub Kicinski82598-based adapters support all passive direct attach cables that comply with
156132db935SJakub KicinskiSFF-8431 v4.1 and SFF-8472 v10.4 specifications. Active direct attach cables
157132db935SJakub Kicinskiare not supported.
158132db935SJakub Kicinski
159132db935SJakub KicinskiThird party optic modules and cables referred to above are listed only for the
160132db935SJakub Kicinskipurpose of highlighting third party specifications and potential
161132db935SJakub Kicinskicompatibility, and are not recommendations or endorsements or sponsorship of
162132db935SJakub Kicinskiany third party's product by Intel. Intel is not endorsing or promoting
163132db935SJakub Kicinskiproducts made by any third party and the third party reference is provided
164132db935SJakub Kicinskionly to share information regarding certain optic modules and cables with the
165132db935SJakub Kicinskiabove specifications. There may be other manufacturers or suppliers, producing
166132db935SJakub Kicinskior supplying optic modules and cables with similar or matching descriptions.
167132db935SJakub KicinskiCustomers must use their own discretion and diligence to purchase optic
168132db935SJakub Kicinskimodules and cables from any third party of their choice. Customers are solely
169132db935SJakub Kicinskiresponsible for assessing the suitability of the product and/or devices and
170132db935SJakub Kicinskifor the selection of the vendor for purchasing any product. THE OPTIC MODULES
171132db935SJakub KicinskiAND CABLES REFERRED TO ABOVE ARE NOT WARRANTED OR SUPPORTED BY INTEL. INTEL
172132db935SJakub KicinskiASSUMES NO LIABILITY WHATSOEVER, AND INTEL DISCLAIMS ANY EXPRESS OR IMPLIED
173132db935SJakub KicinskiWARRANTY, RELATING TO SALE AND/OR USE OF SUCH THIRD PARTY PRODUCTS OR
174132db935SJakub KicinskiSELECTION OF VENDOR BY CUSTOMERS.
175132db935SJakub Kicinski
176132db935SJakub KicinskiCommand Line Parameters
177132db935SJakub Kicinski=======================
178132db935SJakub Kicinski
179132db935SJakub Kicinskimax_vfs
180132db935SJakub Kicinski-------
181132db935SJakub Kicinski:Valid Range: 1-63
182132db935SJakub Kicinski
183132db935SJakub KicinskiThis parameter adds support for SR-IOV. It causes the driver to spawn up to
184132db935SJakub Kicinskimax_vfs worth of virtual functions.
185132db935SJakub KicinskiIf the value is greater than 0 it will also force the VMDq parameter to be 1 or
186132db935SJakub Kicinskimore.
187132db935SJakub Kicinski
188132db935SJakub KicinskiNOTE: This parameter is only used on kernel 3.7.x and below. On kernel 3.8.x
189132db935SJakub Kicinskiand above, use sysfs to enable VFs. Also, for Red Hat distributions, this
190132db935SJakub Kicinskiparameter is only used on version 6.6 and older. For version 6.7 and newer, use
191132db935SJakub Kicinskisysfs. For example::
192132db935SJakub Kicinski
193132db935SJakub Kicinski  #echo $num_vf_enabled > /sys/class/net/$dev/device/sriov_numvfs // enable VFs
194132db935SJakub Kicinski  #echo 0 > /sys/class/net/$dev/device/sriov_numvfs               //disable VFs
195132db935SJakub Kicinski
196132db935SJakub KicinskiThe parameters for the driver are referenced by position. Thus, if you have a
197132db935SJakub Kicinskidual port adapter, or more than one adapter in your system, and want N virtual
198132db935SJakub Kicinskifunctions per port, you must specify a number for each port with each parameter
199132db935SJakub Kicinskiseparated by a comma. For example::
200132db935SJakub Kicinski
201132db935SJakub Kicinski  modprobe ixgbe max_vfs=4
202132db935SJakub Kicinski
203132db935SJakub KicinskiThis will spawn 4 VFs on the first port.
204132db935SJakub Kicinski
205132db935SJakub Kicinski::
206132db935SJakub Kicinski
207132db935SJakub Kicinski  modprobe ixgbe max_vfs=2,4
208132db935SJakub Kicinski
209132db935SJakub KicinskiThis will spawn 2 VFs on the first port and 4 VFs on the second port.
210132db935SJakub Kicinski
211132db935SJakub KicinskiNOTE: Caution must be used in loading the driver with these parameters.
212132db935SJakub KicinskiDepending on your system configuration, number of slots, etc., it is impossible
213132db935SJakub Kicinskito predict in all cases where the positions would be on the command line.
214132db935SJakub Kicinski
215132db935SJakub KicinskiNOTE: Neither the device nor the driver control how VFs are mapped into config
216132db935SJakub Kicinskispace. Bus layout will vary by operating system. On operating systems that
217132db935SJakub Kicinskisupport it, you can check sysfs to find the mapping.
218132db935SJakub Kicinski
219132db935SJakub KicinskiNOTE: When either SR-IOV mode or VMDq mode is enabled, hardware VLAN filtering
220132db935SJakub Kicinskiand VLAN tag stripping/insertion will remain enabled. Please remove the old
221132db935SJakub KicinskiVLAN filter before the new VLAN filter is added. For example,
222132db935SJakub Kicinski
223132db935SJakub Kicinski::
224132db935SJakub Kicinski
225132db935SJakub Kicinski  ip link set eth0 vf 0 vlan 100 // set VLAN 100 for VF 0
226132db935SJakub Kicinski  ip link set eth0 vf 0 vlan 0   // Delete VLAN 100
227132db935SJakub Kicinski  ip link set eth0 vf 0 vlan 200 // set a new VLAN 200 for VF 0
228132db935SJakub Kicinski
229132db935SJakub KicinskiWith kernel 3.6, the driver supports the simultaneous usage of max_vfs and DCB
230132db935SJakub Kicinskifeatures, subject to the constraints described below. Prior to kernel 3.6, the
231132db935SJakub Kicinskidriver did not support the simultaneous operation of max_vfs greater than 0 and
232132db935SJakub Kicinskithe DCB features (multiple traffic classes utilizing Priority Flow Control and
233132db935SJakub KicinskiExtended Transmission Selection).
234132db935SJakub Kicinski
235132db935SJakub KicinskiWhen DCB is enabled, network traffic is transmitted and received through
236132db935SJakub Kicinskimultiple traffic classes (packet buffers in the NIC). The traffic is associated
237132db935SJakub Kicinskiwith a specific class based on priority, which has a value of 0 through 7 used
238132db935SJakub Kicinskiin the VLAN tag. When SR-IOV is not enabled, each traffic class is associated
239132db935SJakub Kicinskiwith a set of receive/transmit descriptor queue pairs. The number of queue
240132db935SJakub Kicinskipairs for a given traffic class depends on the hardware configuration. When
241132db935SJakub KicinskiSR-IOV is enabled, the descriptor queue pairs are grouped into pools. The
242132db935SJakub KicinskiPhysical Function (PF) and each Virtual Function (VF) is allocated a pool of
243132db935SJakub Kicinskireceive/transmit descriptor queue pairs. When multiple traffic classes are
244132db935SJakub Kicinskiconfigured (for example, DCB is enabled), each pool contains a queue pair from
245132db935SJakub Kicinskieach traffic class. When a single traffic class is configured in the hardware,
246132db935SJakub Kicinskithe pools contain multiple queue pairs from the single traffic class.
247132db935SJakub Kicinski
248132db935SJakub KicinskiThe number of VFs that can be allocated depends on the number of traffic
249132db935SJakub Kicinskiclasses that can be enabled. The configurable number of traffic classes for
250132db935SJakub Kicinskieach enabled VF is as follows:
251132db935SJakub Kicinski0 - 15 VFs = Up to 8 traffic classes, depending on device support
252132db935SJakub Kicinski16 - 31 VFs = Up to 4 traffic classes
253132db935SJakub Kicinski32 - 63 VFs = 1 traffic class
254132db935SJakub Kicinski
255132db935SJakub KicinskiWhen VFs are configured, the PF is allocated one pool as well. The PF supports
256132db935SJakub Kicinskithe DCB features with the constraint that each traffic class will only use a
257132db935SJakub Kicinskisingle queue pair. When zero VFs are configured, the PF can support multiple
258132db935SJakub Kicinskiqueue pairs per traffic class.
259132db935SJakub Kicinski
260132db935SJakub Kicinskiallow_unsupported_sfp
261132db935SJakub Kicinski---------------------
262132db935SJakub Kicinski:Valid Range: 0,1
263132db935SJakub Kicinski:Default Value: 0 (disabled)
264132db935SJakub Kicinski
265132db935SJakub KicinskiThis parameter allows unsupported and untested SFP+ modules on 82599-based
266132db935SJakub Kicinskiadapters, as long as the type of module is known to the driver.
267132db935SJakub Kicinski
268132db935SJakub Kicinskidebug
269132db935SJakub Kicinski-----
270132db935SJakub Kicinski:Valid Range: 0-16 (0=none,...,16=all)
271132db935SJakub Kicinski:Default Value: 0
272132db935SJakub Kicinski
273132db935SJakub KicinskiThis parameter adjusts the level of debug messages displayed in the system
274132db935SJakub Kicinskilogs.
275132db935SJakub Kicinski
276132db935SJakub Kicinski
277132db935SJakub KicinskiAdditional Features and Configurations
278132db935SJakub Kicinski======================================
279132db935SJakub Kicinski
280132db935SJakub KicinskiFlow Control
281132db935SJakub Kicinski------------
282132db935SJakub KicinskiEthernet Flow Control (IEEE 802.3x) can be configured with ethtool to enable
283132db935SJakub Kicinskireceiving and transmitting pause frames for ixgbe. When transmit is enabled,
284132db935SJakub Kicinskipause frames are generated when the receive packet buffer crosses a predefined
285132db935SJakub Kicinskithreshold. When receive is enabled, the transmit unit will halt for the time
286132db935SJakub Kicinskidelay specified when a pause frame is received.
287132db935SJakub Kicinski
288132db935SJakub KicinskiNOTE: You must have a flow control capable link partner.
289132db935SJakub Kicinski
290132db935SJakub KicinskiFlow Control is enabled by default.
291132db935SJakub Kicinski
292132db935SJakub KicinskiUse ethtool to change the flow control settings. To enable or disable Rx or
293132db935SJakub KicinskiTx Flow Control::
294132db935SJakub Kicinski
295132db935SJakub Kicinski  ethtool -A eth? rx <on|off> tx <on|off>
296132db935SJakub Kicinski
297132db935SJakub KicinskiNote: This command only enables or disables Flow Control if auto-negotiation is
298132db935SJakub Kicinskidisabled. If auto-negotiation is enabled, this command changes the parameters
299132db935SJakub Kicinskiused for auto-negotiation with the link partner.
300132db935SJakub Kicinski
301132db935SJakub KicinskiTo enable or disable auto-negotiation::
302132db935SJakub Kicinski
303132db935SJakub Kicinski  ethtool -s eth? autoneg <on|off>
304132db935SJakub Kicinski
305132db935SJakub KicinskiNote: Flow Control auto-negotiation is part of link auto-negotiation. Depending
306132db935SJakub Kicinskion your device, you may not be able to change the auto-negotiation setting.
307132db935SJakub Kicinski
308132db935SJakub KicinskiNOTE: For 82598 backplane cards entering 1 gigabit mode, flow control default
309132db935SJakub Kicinskibehavior is changed to off. Flow control in 1 gigabit mode on these devices can
310132db935SJakub Kicinskilead to transmit hangs.
311132db935SJakub Kicinski
312132db935SJakub KicinskiIntel(R) Ethernet Flow Director
313132db935SJakub Kicinski-------------------------------
314132db935SJakub KicinskiThe Intel Ethernet Flow Director performs the following tasks:
315132db935SJakub Kicinski
316132db935SJakub Kicinski- Directs receive packets according to their flows to different queues.
317132db935SJakub Kicinski- Enables tight control on routing a flow in the platform.
318132db935SJakub Kicinski- Matches flows and CPU cores for flow affinity.
319132db935SJakub Kicinski- Supports multiple parameters for flexible flow classification and load
320132db935SJakub Kicinski  balancing (in SFP mode only).
321132db935SJakub Kicinski
322132db935SJakub KicinskiNOTE: Intel Ethernet Flow Director masking works in the opposite manner from
323132db935SJakub Kicinskisubnet masking. In the following command::
324132db935SJakub Kicinski
325132db935SJakub Kicinski  #ethtool -N eth11 flow-type ip4 src-ip 172.4.1.2 m 255.0.0.0 dst-ip \
326132db935SJakub Kicinski  172.21.1.1 m 255.128.0.0 action 31
327132db935SJakub Kicinski
328132db935SJakub KicinskiThe src-ip value that is written to the filter will be 0.4.1.2, not 172.0.0.0
329132db935SJakub Kicinskias might be expected. Similarly, the dst-ip value written to the filter will be
330132db935SJakub Kicinski0.21.1.1, not 172.0.0.0.
331132db935SJakub Kicinski
332132db935SJakub KicinskiTo enable or disable the Intel Ethernet Flow Director::
333132db935SJakub Kicinski
334132db935SJakub Kicinski  # ethtool -K ethX ntuple <on|off>
335132db935SJakub Kicinski
336132db935SJakub KicinskiWhen disabling ntuple filters, all the user programmed filters are flushed from
337132db935SJakub Kicinskithe driver cache and hardware. All needed filters must be re-added when ntuple
338132db935SJakub Kicinskiis re-enabled.
339132db935SJakub Kicinski
340132db935SJakub KicinskiTo add a filter that directs packet to queue 2, use -U or -N switch::
341132db935SJakub Kicinski
342132db935SJakub Kicinski  # ethtool -N ethX flow-type tcp4 src-ip 192.168.10.1 dst-ip \
343132db935SJakub Kicinski  192.168.10.2 src-port 2000 dst-port 2001 action 2 [loc 1]
344132db935SJakub Kicinski
345132db935SJakub KicinskiTo see the list of filters currently present::
346132db935SJakub Kicinski
347132db935SJakub Kicinski  # ethtool <-u|-n> ethX
348132db935SJakub Kicinski
349132db935SJakub KicinskiSideband Perfect Filters
350132db935SJakub Kicinski------------------------
351132db935SJakub KicinskiSideband Perfect Filters are used to direct traffic that matches specified
352132db935SJakub Kicinskicharacteristics. They are enabled through ethtool's ntuple interface. To add a
353132db935SJakub Kicinskinew filter use the following command::
354132db935SJakub Kicinski
355132db935SJakub Kicinski  ethtool -U <device> flow-type <type> src-ip <ip> dst-ip <ip> src-port <port> \
356132db935SJakub Kicinski  dst-port <port> action <queue>
357132db935SJakub Kicinski
358132db935SJakub KicinskiWhere:
359132db935SJakub Kicinski  <device> - the ethernet device to program
360132db935SJakub Kicinski  <type> - can be ip4, tcp4, udp4, or sctp4
361132db935SJakub Kicinski  <ip> - the IP address to match on
362132db935SJakub Kicinski  <port> - the port number to match on
363132db935SJakub Kicinski  <queue> - the queue to direct traffic towards (-1 discards the matched traffic)
364132db935SJakub Kicinski
365132db935SJakub KicinskiUse the following command to delete a filter::
366132db935SJakub Kicinski
367132db935SJakub Kicinski  ethtool -U <device> delete <N>
368132db935SJakub Kicinski
369132db935SJakub KicinskiWhere <N> is the filter id displayed when printing all the active filters, and
370132db935SJakub Kicinskimay also have been specified using "loc <N>" when adding the filter.
371132db935SJakub Kicinski
372132db935SJakub KicinskiThe following example matches TCP traffic sent from 192.168.0.1, port 5300,
373132db935SJakub Kicinskidirected to 192.168.0.5, port 80, and sends it to queue 7::
374132db935SJakub Kicinski
375132db935SJakub Kicinski  ethtool -U enp130s0 flow-type tcp4 src-ip 192.168.0.1 dst-ip 192.168.0.5 \
376132db935SJakub Kicinski  src-port 5300 dst-port 80 action 7
377132db935SJakub Kicinski
378132db935SJakub KicinskiFor each flow-type, the programmed filters must all have the same matching
379132db935SJakub Kicinskiinput set. For example, issuing the following two commands is acceptable::
380132db935SJakub Kicinski
381132db935SJakub Kicinski  ethtool -U enp130s0 flow-type ip4 src-ip 192.168.0.1 src-port 5300 action 7
382132db935SJakub Kicinski  ethtool -U enp130s0 flow-type ip4 src-ip 192.168.0.5 src-port 55 action 10
383132db935SJakub Kicinski
384132db935SJakub KicinskiIssuing the next two commands, however, is not acceptable, since the first
385132db935SJakub Kicinskispecifies src-ip and the second specifies dst-ip::
386132db935SJakub Kicinski
387132db935SJakub Kicinski  ethtool -U enp130s0 flow-type ip4 src-ip 192.168.0.1 src-port 5300 action 7
388132db935SJakub Kicinski  ethtool -U enp130s0 flow-type ip4 dst-ip 192.168.0.5 src-port 55 action 10
389132db935SJakub Kicinski
390132db935SJakub KicinskiThe second command will fail with an error. You may program multiple filters
391132db935SJakub Kicinskiwith the same fields, using different values, but, on one device, you may not
392132db935SJakub Kicinskiprogram two TCP4 filters with different matching fields.
393132db935SJakub Kicinski
394132db935SJakub KicinskiMatching on a sub-portion of a field is not supported by the ixgbe driver, thus
395132db935SJakub Kicinskipartial mask fields are not supported.
396132db935SJakub Kicinski
397132db935SJakub KicinskiTo create filters that direct traffic to a specific Virtual Function, use the
398132db935SJakub Kicinski"user-def" parameter. Specify the user-def as a 64 bit value, where the lower 32
399132db935SJakub Kicinskibits represents the queue number, while the next 8 bits represent which VF.
400132db935SJakub KicinskiNote that 0 is the PF, so the VF identifier is offset by 1. For example::
401132db935SJakub Kicinski
402132db935SJakub Kicinski  ... user-def 0x800000002 ...
403132db935SJakub Kicinski
404132db935SJakub Kicinskispecifies to direct traffic to Virtual Function 7 (8 minus 1) into queue 2 of
405132db935SJakub Kicinskithat VF.
406132db935SJakub Kicinski
407132db935SJakub KicinskiNote that these filters will not break internal routing rules, and will not
408132db935SJakub Kicinskiroute traffic that otherwise would not have been sent to the specified Virtual
409132db935SJakub KicinskiFunction.
410132db935SJakub Kicinski
411132db935SJakub KicinskiJumbo Frames
412132db935SJakub Kicinski------------
413132db935SJakub KicinskiJumbo Frames support is enabled by changing the Maximum Transmission Unit (MTU)
414132db935SJakub Kicinskito a value larger than the default value of 1500.
415132db935SJakub Kicinski
416132db935SJakub KicinskiUse the ifconfig command to increase the MTU size. For example, enter the
417132db935SJakub Kicinskifollowing where <x> is the interface number::
418132db935SJakub Kicinski
419132db935SJakub Kicinski  ifconfig eth<x> mtu 9000 up
420132db935SJakub Kicinski
421132db935SJakub KicinskiAlternatively, you can use the ip command as follows::
422132db935SJakub Kicinski
423132db935SJakub Kicinski  ip link set mtu 9000 dev eth<x>
424132db935SJakub Kicinski  ip link set up dev eth<x>
425132db935SJakub Kicinski
426132db935SJakub KicinskiThis setting is not saved across reboots. The setting change can be made
427132db935SJakub Kicinskipermanent by adding 'MTU=9000' to the file::
428132db935SJakub Kicinski
429132db935SJakub Kicinski  /etc/sysconfig/network-scripts/ifcfg-eth<x> // for RHEL
430132db935SJakub Kicinski  /etc/sysconfig/network/<config_file> // for SLES
431132db935SJakub Kicinski
432132db935SJakub KicinskiNOTE: The maximum MTU setting for Jumbo Frames is 9710. This value coincides
433132db935SJakub Kicinskiwith the maximum Jumbo Frames size of 9728 bytes.
434132db935SJakub Kicinski
435132db935SJakub KicinskiNOTE: This driver will attempt to use multiple page sized buffers to receive
436132db935SJakub Kicinskieach jumbo packet. This should help to avoid buffer starvation issues when
437132db935SJakub Kicinskiallocating receive packets.
438132db935SJakub Kicinski
439132db935SJakub KicinskiNOTE: For 82599-based network connections, if you are enabling jumbo frames in
440132db935SJakub Kicinskia virtual function (VF), jumbo frames must first be enabled in the physical
441132db935SJakub Kicinskifunction (PF). The VF MTU setting cannot be larger than the PF MTU.
442132db935SJakub Kicinski
443271225fdSRobert SchlabbachNBASE-T Support
444271225fdSRobert Schlabbach---------------
445271225fdSRobert SchlabbachThe ixgbe driver supports NBASE-T on some devices. However, the advertisement
446271225fdSRobert Schlabbachof NBASE-T speeds is suppressed by default, to accommodate broken network
447271225fdSRobert Schlabbachswitches which cannot cope with advertised NBASE-T speeds. Use the ethtool
448271225fdSRobert Schlabbachcommand to enable advertising NBASE-T speeds on devices which support it::
449271225fdSRobert Schlabbach
450271225fdSRobert Schlabbach  ethtool -s eth? advertise 0x1800000001028
451271225fdSRobert Schlabbach
452271225fdSRobert SchlabbachOn Linux systems with INTERFACES(5), this can be specified as a pre-up command
453271225fdSRobert Schlabbachin /etc/network/interfaces so that the interface is always brought up with
454271225fdSRobert SchlabbachNBASE-T support, e.g.::
455271225fdSRobert Schlabbach
456271225fdSRobert Schlabbach  iface eth? inet dhcp
457271225fdSRobert Schlabbach       pre-up ethtool -s eth? advertise 0x1800000001028 || true
458271225fdSRobert Schlabbach
459132db935SJakub KicinskiGeneric Receive Offload, aka GRO
460132db935SJakub Kicinski--------------------------------
461132db935SJakub KicinskiThe driver supports the in-kernel software implementation of GRO. GRO has
462132db935SJakub Kicinskishown that by coalescing Rx traffic into larger chunks of data, CPU
463132db935SJakub Kicinskiutilization can be significantly reduced when under large Rx load. GRO is an
464132db935SJakub Kicinskievolution of the previously-used LRO interface. GRO is able to coalesce
465132db935SJakub Kicinskiother protocols besides TCP. It's also safe to use with configurations that
466132db935SJakub Kicinskiare problematic for LRO, namely bridging and iSCSI.
467132db935SJakub Kicinski
468132db935SJakub KicinskiData Center Bridging (DCB)
469132db935SJakub Kicinski--------------------------
470132db935SJakub KicinskiNOTE:
471132db935SJakub KicinskiThe kernel assumes that TC0 is available, and will disable Priority Flow
472132db935SJakub KicinskiControl (PFC) on the device if TC0 is not available. To fix this, ensure TC0 is
473132db935SJakub Kicinskienabled when setting up DCB on your switch.
474132db935SJakub Kicinski
475132db935SJakub KicinskiDCB is a configuration Quality of Service implementation in hardware. It uses
476132db935SJakub Kicinskithe VLAN priority tag (802.1p) to filter traffic. That means that there are 8
477132db935SJakub Kicinskidifferent priorities that traffic can be filtered into. It also enables
478132db935SJakub Kicinskipriority flow control (802.1Qbb) which can limit or eliminate the number of
479132db935SJakub Kicinskidropped packets during network stress. Bandwidth can be allocated to each of
480132db935SJakub Kicinskithese priorities, which is enforced at the hardware level (802.1Qaz).
481132db935SJakub Kicinski
482132db935SJakub KicinskiAdapter firmware implements LLDP and DCBX protocol agents as per 802.1AB and
483132db935SJakub Kicinski802.1Qaz respectively. The firmware based DCBX agent runs in willing mode only
484132db935SJakub Kicinskiand can accept settings from a DCBX capable peer. Software configuration of
485132db935SJakub KicinskiDCBX parameters via dcbtool/lldptool are not supported.
486132db935SJakub Kicinski
487132db935SJakub KicinskiThe ixgbe driver implements the DCB netlink interface layer to allow user-space
488132db935SJakub Kicinskito communicate with the driver and query DCB configuration for the port.
489132db935SJakub Kicinski
490132db935SJakub Kicinskiethtool
491132db935SJakub Kicinski-------
492132db935SJakub KicinskiThe driver utilizes the ethtool interface for driver configuration and
493132db935SJakub Kicinskidiagnostics, as well as displaying statistical information. The latest ethtool
494132db935SJakub Kicinskiversion is required for this functionality. Download it at:
495132db935SJakub Kicinskihttps://www.kernel.org/pub/software/network/ethtool/
496132db935SJakub Kicinski
497132db935SJakub KicinskiFCoE
498132db935SJakub Kicinski----
499132db935SJakub KicinskiThe ixgbe driver supports Fiber Channel over Ethernet (FCoE) and Data Center
500132db935SJakub KicinskiBridging (DCB). This code has no default effect on the regular driver
501132db935SJakub Kicinskioperation. Configuring DCB and FCoE is outside the scope of this README. Refer
502132db935SJakub Kicinskito http://www.open-fcoe.org/ for FCoE project information and contact
503132db935SJakub Kicinskiixgbe-eedc@lists.sourceforge.net for DCB information.
504132db935SJakub Kicinski
505132db935SJakub KicinskiMAC and VLAN anti-spoofing feature
506132db935SJakub Kicinski----------------------------------
507132db935SJakub KicinskiWhen a malicious driver attempts to send a spoofed packet, it is dropped by the
508132db935SJakub Kicinskihardware and not transmitted.
509132db935SJakub Kicinski
510132db935SJakub KicinskiAn interrupt is sent to the PF driver notifying it of the spoof attempt. When a
511132db935SJakub Kicinskispoofed packet is detected, the PF driver will send the following message to
512132db935SJakub Kicinskithe system log (displayed by the "dmesg" command)::
513132db935SJakub Kicinski
514132db935SJakub Kicinski  ixgbe ethX: ixgbe_spoof_check: n spoofed packets detected
515132db935SJakub Kicinski
516132db935SJakub Kicinskiwhere "x" is the PF interface number; and "n" is number of spoofed packets.
517132db935SJakub KicinskiNOTE: This feature can be disabled for a specific Virtual Function (VF)::
518132db935SJakub Kicinski
519132db935SJakub Kicinski  ip link set <pf dev> vf <vf id> spoofchk {off|on}
520132db935SJakub Kicinski
521132db935SJakub KicinskiIPsec Offload
522132db935SJakub Kicinski-------------
523132db935SJakub KicinskiThe ixgbe driver supports IPsec Hardware Offload.  When creating Security
524132db935SJakub KicinskiAssociations with "ip xfrm ..." the 'offload' tag option can be used to
525132db935SJakub Kicinskiregister the IPsec SA with the driver in order to get higher throughput in
526132db935SJakub Kicinskithe secure communications.
527132db935SJakub Kicinski
528132db935SJakub KicinskiThe offload is also supported for ixgbe's VFs, but the VF must be set as
529132db935SJakub Kicinski'trusted' and the support must be enabled with::
530132db935SJakub Kicinski
531132db935SJakub Kicinski  ethtool --set-priv-flags eth<x> vf-ipsec on
532132db935SJakub Kicinski  ip link set eth<x> vf <y> trust on
533132db935SJakub Kicinski
534132db935SJakub Kicinski
535132db935SJakub KicinskiKnown Issues/Troubleshooting
536132db935SJakub Kicinski============================
537132db935SJakub Kicinski
538132db935SJakub KicinskiEnabling SR-IOV in a 64-bit Microsoft Windows Server 2012/R2 guest OS
539132db935SJakub Kicinski---------------------------------------------------------------------
540132db935SJakub KicinskiLinux KVM Hypervisor/VMM supports direct assignment of a PCIe device to a VM.
541132db935SJakub KicinskiThis includes traditional PCIe devices, as well as SR-IOV-capable devices based
542132db935SJakub Kicinskion the Intel Ethernet Controller XL710.
543132db935SJakub Kicinski
544132db935SJakub Kicinski
545132db935SJakub KicinskiSupport
546132db935SJakub Kicinski=======
547132db935SJakub KicinskiFor general information, go to the Intel support website at:
548132db935SJakub Kicinskihttps://www.intel.com/support/
549132db935SJakub Kicinski
550132db935SJakub KicinskiIf an issue is identified with the released source code on a supported kernel
551132db935SJakub Kicinskiwith a supported adapter, email the specific information related to the issue
552*8ba732beSTony Nguyento intel-wired-lan@lists.osuosl.org.
553