Merge branch 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6
[sfrench/cifs-2.6.git] / Documentation / networking / device_drivers / intel / igb.rst
1 .. SPDX-License-Identifier: GPL-2.0+
2
3 ===========================================================
4 Linux* Base Driver for Intel(R) Ethernet Network Connection
5 ===========================================================
6
7 Intel Gigabit Linux driver.
8 Copyright(c) 1999-2018 Intel Corporation.
9
10 Contents
11 ========
12
13 - Identifying Your Adapter
14 - Command Line Parameters
15 - Additional Configurations
16 - Support
17
18
19 Identifying Your Adapter
20 ========================
21 For information on how to identify your adapter, and for the latest Intel
22 network drivers, refer to the Intel Support website:
23 http://www.intel.com/support
24
25
26 Command Line Parameters
27 ========================
28 If the driver is built as a module, the following optional parameters are used
29 by entering them on the command line with the modprobe command using this
30 syntax::
31
32     modprobe igb [<option>=<VAL1>,<VAL2>,...]
33
34 There needs to be a <VAL#> for each network port in the system supported by
35 this driver. The values will be applied to each instance, in function order.
36 For example::
37
38     modprobe igb max_vfs=2,4
39
40 In this case, there are two network ports supported by igb in the system.
41
42 NOTE: A descriptor describes a data buffer and attributes related to the data
43 buffer. This information is accessed by the hardware.
44
45 max_vfs
46 -------
47 :Valid Range: 0-7
48
49 This parameter adds support for SR-IOV. It causes the driver to spawn up to
50 max_vfs worth of virtual functions.  If the value is greater than 0 it will
51 also force the VMDq parameter to be 1 or more.
52
53 The parameters for the driver are referenced by position. Thus, if you have a
54 dual port adapter, or more than one adapter in your system, and want N virtual
55 functions per port, you must specify a number for each port with each parameter
56 separated by a comma. For example::
57
58     modprobe igb max_vfs=4
59
60 This will spawn 4 VFs on the first port.
61
62 ::
63
64     modprobe igb max_vfs=2,4
65
66 This will spawn 2 VFs on the first port and 4 VFs on the second port.
67
68 NOTE: Caution must be used in loading the driver with these parameters.
69 Depending on your system configuration, number of slots, etc., it is impossible
70 to predict in all cases where the positions would be on the command line.
71
72 NOTE: Neither the device nor the driver control how VFs are mapped into config
73 space. Bus layout will vary by operating system. On operating systems that
74 support it, you can check sysfs to find the mapping.
75
76 NOTE: When either SR-IOV mode or VMDq mode is enabled, hardware VLAN filtering
77 and VLAN tag stripping/insertion will remain enabled. Please remove the old
78 VLAN filter before the new VLAN filter is added. For example::
79
80     ip link set eth0 vf 0 vlan 100      // set vlan 100 for VF 0
81     ip link set eth0 vf 0 vlan 0        // Delete vlan 100
82     ip link set eth0 vf 0 vlan 200      // set a new vlan 200 for VF 0
83
84 Debug
85 -----
86 :Valid Range: 0-16 (0=none,...,16=all)
87 :Default Value: 0
88
89 This parameter adjusts the level debug messages displayed in the system logs.
90
91
92 Additional Features and Configurations
93 ======================================
94
95 Jumbo Frames
96 ------------
97 Jumbo Frames support is enabled by changing the Maximum Transmission Unit (MTU)
98 to a value larger than the default value of 1500.
99
100 Use the ifconfig command to increase the MTU size. For example, enter the
101 following where <x> is the interface number::
102
103     ifconfig eth<x> mtu 9000 up
104
105 Alternatively, you can use the ip command as follows::
106
107     ip link set mtu 9000 dev eth<x>
108     ip link set up dev eth<x>
109
110 This setting is not saved across reboots. The setting change can be made
111 permanent by adding 'MTU=9000' to the file:
112
113 - For RHEL: /etc/sysconfig/network-scripts/ifcfg-eth<x>
114 - For SLES: /etc/sysconfig/network/<config_file>
115
116 NOTE: The maximum MTU setting for Jumbo Frames is 9216. This value coincides
117 with the maximum Jumbo Frames size of 9234 bytes.
118
119 NOTE: Using Jumbo frames at 10 or 100 Mbps is not supported and may result in
120 poor performance or loss of link.
121
122
123 ethtool
124 -------
125 The driver utilizes the ethtool interface for driver configuration and
126 diagnostics, as well as displaying statistical information. The latest ethtool
127 version is required for this functionality. Download it at:
128
129 https://www.kernel.org/pub/software/network/ethtool/
130
131
132 Enabling Wake on LAN* (WoL)
133 ---------------------------
134 WoL is configured through the ethtool* utility.
135
136 WoL will be enabled on the system during the next shut down or reboot. For
137 this driver version, in order to enable WoL, the igb driver must be loaded
138 prior to shutting down or suspending the system.
139
140 NOTE: Wake on LAN is only supported on port A of multi-port devices.  Also
141 Wake On LAN is not supported for the following device:
142 - Intel(R) Gigabit VT Quad Port Server Adapter
143
144
145 Multiqueue
146 ----------
147 In this mode, a separate MSI-X vector is allocated for each queue and one for
148 "other" interrupts such as link status change and errors. All interrupts are
149 throttled via interrupt moderation. Interrupt moderation must be used to avoid
150 interrupt storms while the driver is processing one interrupt. The moderation
151 value should be at least as large as the expected time for the driver to
152 process an interrupt. Multiqueue is off by default.
153
154 REQUIREMENTS: MSI-X support is required for Multiqueue. If MSI-X is not found,
155 the system will fallback to MSI or to Legacy interrupts. This driver supports
156 receive multiqueue on all kernels that support MSI-X.
157
158 NOTE: On some kernels a reboot is required to switch between single queue mode
159 and multiqueue mode or vice-versa.
160
161
162 MAC and VLAN anti-spoofing feature
163 ----------------------------------
164 When a malicious driver attempts to send a spoofed packet, it is dropped by the
165 hardware and not transmitted.
166
167 An interrupt is sent to the PF driver notifying it of the spoof attempt. When a
168 spoofed packet is detected, the PF driver will send the following message to
169 the system log (displayed by the "dmesg" command):
170 Spoof event(s) detected on VF(n), where n = the VF that attempted to do the
171 spoofing
172
173
174 Setting MAC Address, VLAN and Rate Limit Using IProute2 Tool
175 ------------------------------------------------------------
176 You can set a MAC address of a Virtual Function (VF), a default VLAN and the
177 rate limit using the IProute2 tool. Download the latest version of the
178 IProute2 tool from Sourceforge if your version does not have all the features
179 you require.
180
181 Credit Based Shaper (Qav Mode)
182 ------------------------------
183 When enabling the CBS qdisc in the hardware offload mode, traffic shaping using
184 the CBS (described in the IEEE 802.1Q-2018 Section 8.6.8.2 and discussed in the
185 Annex L) algorithm will run in the i210 controller, so it's more accurate and
186 uses less CPU.
187
188 When using offloaded CBS, and the traffic rate obeys the configured rate
189 (doesn't go above it), CBS should have little to no effect in the latency.
190
191 The offloaded version of the algorithm has some limits, caused by how the idle
192 slope is expressed in the adapter's registers. It can only represent idle slopes
193 in 16.38431 kbps units, which means that if a idle slope of 2576kbps is
194 requested, the controller will be configured to use a idle slope of ~2589 kbps,
195 because the driver rounds the value up. For more details, see the comments on
196 :c:func:`igb_config_tx_modes()`.
197
198 NOTE: This feature is exclusive to i210 models.
199
200
201 Support
202 =======
203 For general information, go to the Intel support website at:
204
205 https://www.intel.com/support/
206
207 or the Intel Wired Networking project hosted by Sourceforge at:
208
209 https://sourceforge.net/projects/e1000
210
211 If an issue is identified with the released source code on a supported kernel
212 with a supported adapter, email the specific information related to the issue
213 to e1000-devel@lists.sf.net.