@@ -10,11 +10,15 @@ Copyright(c) 2013-2018 Intel Corporation.
10
10
Contents
11
11
========
12
12
13
+ - Overview
13
14
- Identifying Your Adapter
14
15
- Additional Configurations
15
16
- Known Issues/Troubleshooting
16
17
- Support
17
18
19
+ Overview
20
+ ========
21
+
18
22
This file describes the iavf Linux* Base Driver. This driver was formerly
19
23
called i40evf.
20
24
@@ -27,6 +31,7 @@ The guest OS loading the iavf driver must support MSI-X interrupts.
27
31
28
32
Identifying Your Adapter
29
33
========================
34
+
30
35
The driver in this kernel is compatible with devices based on the following:
31
36
* Intel(R) XL710 X710 Virtual Function
32
37
* Intel(R) X722 Virtual Function
@@ -50,9 +55,10 @@ Link messages will not be displayed to the console if the distribution is
50
55
restricting system messages. In order to see network driver link messages on
51
56
your console, set dmesg to eight by entering the following::
52
57
53
- dmesg -n 8
58
+ # dmesg -n 8
54
59
55
- NOTE: This setting is not saved across reboots.
60
+ NOTE:
61
+ This setting is not saved across reboots.
56
62
57
63
ethtool
58
64
-------
@@ -72,11 +78,11 @@ then requests from that VF to set VLAN tag stripping will be ignored.
72
78
To enable/disable VLAN tag stripping for a VF, issue the following command
73
79
from inside the VM in which you are running the VF::
74
80
75
- ethtool -K <if_name> rxvlan on/off
81
+ # ethtool -K <if_name> rxvlan on/off
76
82
77
83
or alternatively::
78
84
79
- ethtool --offload <if_name> rxvlan on/off
85
+ # ethtool --offload <if_name> rxvlan on/off
80
86
81
87
Adaptive Virtual Function
82
88
-------------------------
@@ -91,21 +97,21 @@ additional features depending on what features are available in the PF with
91
97
which the AVF is associated. The following are base mode features:
92
98
93
99
- 4 Queue Pairs (QP) and associated Configuration Status Registers (CSRs)
94
- for Tx/Rx.
95
- - i40e descriptors and ring format.
96
- - Descriptor write-back completion.
97
- - 1 control queue, with i40e descriptors, CSRs and ring format.
98
- - 5 MSI-X interrupt vectors and corresponding i40e CSRs.
99
- - 1 Interrupt Throttle Rate (ITR) index.
100
- - 1 Virtual Station Interface (VSI) per VF.
100
+ for Tx/Rx
101
+ - i40e descriptors and ring format
102
+ - Descriptor write-back completion
103
+ - 1 control queue, with i40e descriptors, CSRs and ring format
104
+ - 5 MSI-X interrupt vectors and corresponding i40e CSRs
105
+ - 1 Interrupt Throttle Rate (ITR) index
106
+ - 1 Virtual Station Interface (VSI) per VF
101
107
- 1 Traffic Class (TC), TC0
102
108
- Receive Side Scaling (RSS) with 64 entry indirection table and key,
103
- configured through the PF.
104
- - 1 unicast MAC address reserved per VF.
105
- - 16 MAC address filters for each VF.
106
- - Stateless offloads - non-tunneled checksums.
107
- - AVF device ID.
108
- - HW mailbox is used for VF to PF communications (including on Windows).
109
+ configured through the PF
110
+ - 1 unicast MAC address reserved per VF
111
+ - 16 MAC address filters for each VF
112
+ - Stateless offloads - non-tunneled checksums
113
+ - AVF device ID
114
+ - HW mailbox is used for VF to PF communications (including on Windows)
109
115
110
116
IEEE 802.1ad (QinQ) Support
111
117
---------------------------
@@ -117,8 +123,8 @@ VLAN ID, among other uses.
117
123
118
124
The following are examples of how to configure 802.1ad (QinQ)::
119
125
120
- ip link add link eth0 eth0.24 type vlan proto 802.1ad id 24
121
- ip link add link eth0.24 eth0.24.371 type vlan proto 802.1Q id 371
126
+ # ip link add link eth0 eth0.24 type vlan proto 802.1ad id 24
127
+ # ip link add link eth0.24 eth0.24.371 type vlan proto 802.1Q id 371
122
128
123
129
Where "24" and "371" are example VLAN IDs.
124
130
@@ -133,6 +139,19 @@ specific application. This can reduce latency for the specified application,
133
139
and allow Tx traffic to be rate limited per application. Follow the steps below
134
140
to set ADq.
135
141
142
+ Requirements:
143
+
144
+ - The sch_mqprio, act_mirred and cls_flower modules must be loaded
145
+ - The latest version of iproute2
146
+ - If another driver (for example, DPDK) has set cloud filters, you cannot
147
+ enable ADQ
148
+ - Depending on the underlying PF device, ADQ cannot be enabled when the
149
+ following features are enabled:
150
+
151
+ + Data Center Bridging (DCB)
152
+ + Multiple Functions per Port (MFP)
153
+ + Sideband Filters
154
+
136
155
1. Create traffic classes (TCs). Maximum of 8 TCs can be created per interface.
137
156
The shaper bw_rlimit parameter is optional.
138
157
@@ -141,9 +160,9 @@ to 1Gbit for tc0 and 3Gbit for tc1.
141
160
142
161
::
143
162
144
- # tc qdisc add dev <interface> root mqprio num_tc 2 map 0 0 0 0 1 1 1 1
145
- queues 16@0 16@16 hw 1 mode channel shaper bw_rlimit min_rate 1Gbit 2Gbit
146
- max_rate 1Gbit 3Gbit
163
+ tc qdisc add dev <interface> root mqprio num_tc 2 map 0 0 0 0 1 1 1 1
164
+ queues 16@0 16@16 hw 1 mode channel shaper bw_rlimit min_rate 1Gbit 2Gbit
165
+ max_rate 1Gbit 3Gbit
147
166
148
167
map: priority mapping for up to 16 priorities to tcs (e.g. map 0 0 0 0 1 1 1 1
149
168
sets priorities 0-3 to use tc0 and 4-7 to use tc1)
@@ -162,6 +181,10 @@ Totals must be equal or less than port speed.
162
181
For example: min_rate 1Gbit 3Gbit: Verify bandwidth limit using network
163
182
monitoring tools such as ifstat or sar –n DEV [interval] [number of samples]
164
183
184
+ NOTE:
185
+ Setting up channels via ethtool (ethtool -L) is not supported when the
186
+ TCs are configured using mqprio.
187
+
165
188
2. Enable HW TC offload on interface::
166
189
167
190
# ethtool -K <interface> hw-tc-offload on
@@ -171,16 +194,16 @@ monitoring tools such as ifstat or sar –n DEV [interval] [number of samples]
171
194
# tc qdisc add dev <interface> ingress
172
195
173
196
NOTES:
174
- - Run all tc commands from the iproute2 <pathtoiproute2>/tc/ directory.
175
- - ADq is not compatible with cloud filters.
197
+ - Run all tc commands from the iproute2 <pathtoiproute2>/tc/ directory
198
+ - ADq is not compatible with cloud filters
176
199
- Setting up channels via ethtool (ethtool -L) is not supported when the TCs
177
- are configured using mqprio.
200
+ are configured using mqprio
178
201
- You must have iproute2 latest version
179
- - NVM version 6.01 or later is required.
202
+ - NVM version 6.01 or later is required
180
203
- ADq cannot be enabled when any the following features are enabled: Data
181
- Center Bridging (DCB), Multiple Functions per Port (MFP), or Sideband Filters.
204
+ Center Bridging (DCB), Multiple Functions per Port (MFP), or Sideband Filters
182
205
- If another driver (for example, DPDK) has set cloud filters, you cannot
183
- enable ADq.
206
+ enable ADq
184
207
- Tunnel filters are not supported in ADq. If encapsulated packets do arrive
185
208
in non-tunnel mode, filtering will be done on the inner headers. For example,
186
209
for VXLAN traffic in non-tunnel mode, PCTYPE is identified as a VXLAN
@@ -198,6 +221,16 @@ NOTES:
198
221
Known Issues/Troubleshooting
199
222
============================
200
223
224
+ Bonding fails with VFs bound to an Intel(R) Ethernet Controller 700 series device
225
+ ---------------------------------------------------------------------------------
226
+ If you bind Virtual Functions (VFs) to an Intel(R) Ethernet Controller 700
227
+ series based device, the VF slaves may fail when they become the active slave.
228
+ If the MAC address of the VF is set by the PF (Physical Function) of the
229
+ device, when you add a slave, or change the active-backup slave, Linux bonding
230
+ tries to sync the backup slave's MAC address to the same MAC address as the
231
+ active slave. Linux bonding will fail at this point. This issue will not occur
232
+ if the VF's MAC address is not set by the PF.
233
+
201
234
Traffic Is Not Being Passed Between VM and Client
202
235
-------------------------------------------------
203
236
You may not be able to pass traffic between a client system and a
@@ -215,13 +248,28 @@ Do not unload a port's driver if a Virtual Function (VF) with an active Virtual
215
248
Machine (VM) is bound to it. Doing so will cause the port to appear to hang.
216
249
Once the VM shuts down, or otherwise releases the VF, the command will complete.
217
250
251
+ Using four traffic classes fails
252
+ --------------------------------
253
+ Do not try to reserve more than three traffic classes in the iavf driver. Doing
254
+ so will fail to set any traffic classes and will cause the driver to write
255
+ errors to stdout. Use a maximum of three queues to avoid this issue.
256
+
257
+ Multiple log error messages on iavf driver removal
258
+ --------------------------------------------------
259
+ If you have several VFs and you remove the iavf driver, several instances of
260
+ the following log errors are written to the log::
261
+
262
+ Unable to send opcode 2 to PF, err I40E_ERR_QUEUE_EMPTY, aq_err ok
263
+ Unable to send the message to VF 2 aq_err 12
264
+ ARQ Overflow Error detected
265
+
218
266
Virtual machine does not get link
219
267
---------------------------------
220
268
If the virtual machine has more than one virtual port assigned to it, and those
221
269
virtual ports are bound to different physical ports, you may not get link on
222
270
all of the virtual ports. The following command may work around the issue::
223
271
224
- ethtool -r <PF>
272
+ # ethtool -r <PF>
225
273
226
274
Where <PF> is the PF interface in the host, for example: p5p1. You may need to
227
275
run the command more than once to get link on all virtual ports.
@@ -251,12 +299,13 @@ traffic.
251
299
If you have multiple interfaces in a server, either turn on ARP filtering by
252
300
entering::
253
301
254
- echo 1 > /proc/sys/net/ipv4/conf/all/arp_filter
302
+ # echo 1 > /proc/sys/net/ipv4/conf/all/arp_filter
255
303
256
- NOTE: This setting is not saved across reboots. The configuration change can be
257
- made permanent by adding the following line to the file /etc/sysctl.conf::
304
+ NOTE:
305
+ This setting is not saved across reboots. The configuration change can be
306
+ made permanent by adding the following line to the file /etc/sysctl.conf::
258
307
259
- net.ipv4.conf.all.arp_filter = 1
308
+ net.ipv4.conf.all.arp_filter = 1
260
309
261
310
Another alternative is to install the interfaces in separate broadcast domains
262
311
(either in different switches or in a switch partitioned to VLANs).
0 commit comments