]> git.proxmox.com Git - ceph.git/blob - ceph/src/spdk/dpdk/doc/guides/rel_notes/release_16_07.rst
update source to Ceph Pacific 16.2.2
[ceph.git] / ceph / src / spdk / dpdk / doc / guides / rel_notes / release_16_07.rst
1 .. SPDX-License-Identifier: BSD-3-Clause
2 Copyright 2016 The DPDK contributors
3
4 DPDK Release 16.07
5 ==================
6
7 .. **Read this first.**
8
9 The text below explains how to update the release notes.
10
11 Use proper spelling, capitalization and punctuation in all sections.
12
13 Variable and config names should be quoted as fixed width text: ``LIKE_THIS``.
14
15 Build the docs and view the output file to ensure the changes are correct::
16
17 make doc-guides-html
18
19 firefox build/doc/html/guides/rel_notes/release_16_07.html
20
21
22 New Features
23 ------------
24
25 .. This section should contain new features added in this release. Sample format:
26
27 * **Add a title in the past tense with a full stop.**
28
29 Add a short 1-2 sentence description in the past tense. The description
30 should be enough to allow someone scanning the release notes to understand
31 the new feature.
32
33 If the feature adds a lot of sub-features you can use a bullet list like this.
34
35 * Added feature foo to do something.
36 * Enhanced feature bar to do something else.
37
38 Refer to the previous release notes for examples.
39
40 * **Removed the mempool cache memory if caching is not being used.**
41
42 The size of the mempool structure is reduced if the per-lcore cache is disabled.
43
44 * **Added mempool external cache for non-EAL thread.**
45
46 Added new functions to create, free or flush a user-owned mempool
47 cache for non-EAL threads. Previously the caching was always disabled
48 on these threads.
49
50 * **Changed the memory allocation scheme in the mempool library.**
51
52 * Added the ability to allocate a large mempool in fragmented virtual memory.
53 * Added new APIs to populate a mempool with memory.
54 * Added an API to free a mempool.
55 * Modified the API of the ``rte_mempool_obj_iter()`` function.
56 * Dropped the specific Xen Dom0 code.
57 * Dropped the specific anonymous mempool code in testpmd.
58
59 * **Added a new driver for Broadcom NetXtreme-C devices.**
60
61 Added the new bnxt driver for Broadcom NetXtreme-C devices. See the
62 "Network Interface Controller Drivers" document for more details on this
63 new driver.
64
65 * **Added a new driver for ThunderX nicvf devices.**
66
67 Added the new thunderx net driver for ThunderX nicvf devices. See the
68 "Network Interface Controller Drivers" document for more details on this new
69 driver.
70
71 * **Added mailbox interrupt support for ixgbe and igb VFs.**
72
73 When the physical NIC link comes up or down, the PF driver will send a
74 mailbox message to notify each VF. To handle this link up/down event,
75 support have been added for a mailbox interrupt to receive the message and
76 allow the application to register a callback for it.
77
78 * **Updated the ixgbe base driver.**
79
80 The ixgbe base driver was updated with changes including the
81 following:
82
83 * Added sgmii link for X550.
84 * Added MAC link setup for X550a SFP and SFP+.
85 * Added KR support for X550em_a.
86 * Added new PHY definitions for M88E1500.
87 * Added support for the VLVF to be bypassed when adding/removing a VFTA entry.
88 * Added X550a flow control auto negotiation support.
89
90 * **Updated the i40e base driver.**
91
92 Updated the i40e base driver including support for new devices IDs.
93
94 * **Updated the enic driver.**
95
96 The enic driver was updated with changes including the following:
97
98 * Optimized the Tx function.
99 * Added Scattered Rx capability.
100 * Improved packet type identification.
101 * Added MTU update in non Scattered Rx mode and enabled MTU of up to 9208
102 with UCS Software release 2.2 on 1300 series VICs.
103
104 * **Updated the mlx5 driver.**
105
106 The mlx5 driver was updated with changes including the following:
107
108 * Data path was refactored to bypass Verbs to improve RX and TX performance.
109 * Removed compilation parameters for inline send, ``MLX5_MAX_INLINE``, and
110 added command line parameter instead, ``txq_inline``.
111 * Improved TX scatter gather support:
112 Removed compilation parameter ``MLX5_PMD_SGE_WR_N``.
113 Scatter-gather elements is set to the maximum value the NIC supports.
114 Removed linearization logic, this decreases the memory consumption of the PMD.
115 * Improved jumbo frames support, by dynamically setting RX scatter gather elements
116 according to the MTU and mbuf size,
117 no need for compilation parameter ``MLX5_PMD_SGE_WR_N``
118
119 * **Added support for virtio on IBM POWER8.**
120
121 The ioports are mapped in memory when using Linux UIO.
122
123 * **Added support for Virtio in containers.**
124
125 Add a new virtual device, named virtio_user, to support virtio for containers.
126
127 Known limitations:
128
129 * Control queue and multi-queue are not supported yet.
130 * Doesn't work with ``--huge-unlink``.
131 * Doesn't work with ``--no-huge``.
132 * Doesn't work when there are more than ``VHOST_MEMORY_MAX_NREGIONS(8)`` hugepages.
133 * Root privilege is required for sorting hugepages by physical address.
134 * Can only be used with the vhost user backend.
135
136 * **Added vhost-user client mode.**
137
138 DPDK vhost-user now supports client mode as well as server mode. Client mode
139 is enabled when the ``RTE_VHOST_USER_CLIENT`` flag is set while calling
140 ``rte_vhost_driver_register``.
141
142 When DPDK vhost-user restarts from an normal or abnormal exit (such as a
143 crash), the client mode allows DPDK to establish the connection again. Note
144 that QEMU version v2.7 or above is required for this feature.
145
146 DPDK vhost-user will also try to reconnect by default when:
147
148 * The first connect fails (for example when QEMU is not started yet).
149 * The connection is broken (for example when QEMU restarts).
150
151 It can be turned off by setting the ``RTE_VHOST_USER_NO_RECONNECT`` flag.
152
153 * **Added NSH packet recognition in i40e.**
154
155 * **Added AES-CTR support to AESNI MB PMD.**
156
157 Now AESNI MB PMD supports 128/192/256-bit counter mode AES encryption and
158 decryption.
159
160 * **Added AES counter mode support for Intel QuickAssist devices.**
161
162 Enabled support for the AES CTR algorithm for Intel QuickAssist devices.
163 Provided support for algorithm-chaining operations.
164
165 * **Added KASUMI SW PMD.**
166
167 A new Crypto PMD has been added, which provides KASUMI F8 (UEA1) ciphering
168 and KASUMI F9 (UIA1) hashing.
169
170 * **Added multi-writer support for RTE Hash with Intel TSX.**
171
172 The following features/modifications have been added to rte_hash library:
173
174 * Enabled application developers to use an extra flag for ``rte_hash``
175 creation to specify default behavior (multi-thread safe/unsafe) with the
176 ``rte_hash_add_key`` function.
177 * Changed the Cuckoo Hash Search algorithm to breadth first search for
178 multi-writer routines and split Cuckoo Hash Search and Move operations in
179 order to reduce transactional code region and improve TSX performance.
180 * Added a hash multi-writer test case to the test app.
181
182 * **Improved IP Pipeline Application.**
183
184 The following features have been added to the ip_pipeline application:
185
186 * Configure the MAC address in the routing pipeline and automatic route
187 updates with change in link state.
188 * Enable RSS per network interface through the configuration file.
189 * Streamline the CLI code.
190
191 * **Added keepalive enhancements.**
192
193 Added support for reporting of core states other than "dead" to
194 monitoring applications, enabling the support of broader liveness
195 reporting to external processes.
196
197 * **Added packet capture framework.**
198
199 * A new library ``librte_pdump`` is added to provide a packet capture API.
200 * A new ``app/pdump`` tool is added to demonstrate capture packets in DPDK.
201
202
203 * **Added floating VEB support for i40e PF driver.**
204
205 A "floating VEB" is a special Virtual Ethernet Bridge (VEB) which does not
206 have an upload port, but instead is used for switching traffic between
207 virtual functions (VFs) on a port.
208
209 For information on this feature, please see the "I40E Poll Mode Driver"
210 section of the "Network Interface Controller Drivers" document.
211
212 * **Added support for live migration of a VM with SRIOV VF.**
213
214 Live migration of a VM with Virtio and VF PMD's using the bonding PMD.
215
216
217 Resolved Issues
218 ---------------
219
220 .. This section should contain bug fixes added to the relevant sections. Sample format:
221
222 * **code/section Fixed issue in the past tense with a full stop.**
223
224 Add a short 1-2 sentence description of the resolved issue in the past tense.
225 The title should contain the code/lib section like a commit message.
226 Add the entries in alphabetic order in the relevant sections below.
227
228
229 EAL
230 ~~~
231
232 * **igb_uio: Fixed possible mmap failure for Linux >= 4.5.**
233
234 The mmaping of the iomem range of the PCI device fails for kernels that
235 enabled the ``CONFIG_IO_STRICT_DEVMEM`` option. The error seen by the
236 user is as similar to the following::
237
238 EAL: pci_map_resource():
239
240 cannot mmap(39, 0x7f1c51800000, 0x100000, 0x0):
241 Invalid argument (0xffffffffffffffff)
242
243 The ``CONFIG_IO_STRICT_DEVMEM`` kernel option was introduced in Linux v4.5.
244
245 The issues was resolve by updating ``igb_uio`` to stop reserving PCI memory
246 resources. From the kernel point of view the iomem region looks like idle
247 and mmap works again. This matches the ``uio_pci_generic`` usage.
248
249
250 Drivers
251 ~~~~~~~
252
253 * **i40e: Fixed vlan stripping from inner header.**
254
255 Previously, for tunnel packets, such as VXLAN/NVGRE, the vlan
256 tags of the inner header will be stripped without putting vlan
257 info to descriptor.
258 Now this issue is fixed by disabling vlan stripping from inner header.
259
260 * **i40e: Fixed the type issue of a single VLAN type.**
261
262 Currently, if a single VLAN header is added in a packet, it's treated
263 as inner VLAN. But generally, a single VLAN header is treated as the
264 outer VLAN header.
265 This issue is fixed by changing corresponding register for single VLAN.
266
267 * **enic: Fixed several issues when stopping then restarting ports and queues.**
268
269 Fixed several crashes related to stopping then restarting ports and queues.
270 Fixed possible crash when re-configuring the number of Rx queue descriptors.
271
272 * **enic: Fixed Rx data mis-alignment if mbuf data offset modified.**
273
274 Fixed possible Rx corruption when mbufs were returned to a pool with data
275 offset other than RTE_PKTMBUF_HEADROOM.
276
277 * **enic: Fixed Tx IP/UDP/TCP checksum offload and VLAN insertion.**
278
279 * **enic: Fixed Rx error and missed counters.**
280
281
282 Libraries
283 ~~~~~~~~~
284
285 * **mbuf: Fixed refcnt update when detaching.**
286
287 Fix the ``rte_pktmbuf_detach()`` function to decrement the direct mbuf's
288 reference counter. The previous behavior was not to affect the reference
289 counter. This lead to a memory leak of the direct mbuf.
290
291
292 Examples
293 ~~~~~~~~
294
295
296 Other
297 ~~~~~
298
299
300 Known Issues
301 ------------
302
303 .. This section should contain new known issues in this release. Sample format:
304
305 * **Add title in present tense with full stop.**
306
307 Add a short 1-2 sentence description of the known issue in the present
308 tense. Add information on any known workarounds.
309
310
311 API Changes
312 -----------
313
314 .. This section should contain API changes. Sample format:
315
316 * Add a short 1-2 sentence description of the API change. Use fixed width
317 quotes for ``rte_function_names`` or ``rte_struct_names``. Use the past tense.
318
319 * The following counters are removed from the ``rte_eth_stats`` structure:
320
321 * ``ibadcrc``
322 * ``ibadlen``
323 * ``imcasts``
324 * ``fdirmatch``
325 * ``fdirmiss``
326 * ``tx_pause_xon``
327 * ``rx_pause_xon``
328 * ``tx_pause_xoff``
329 * ``rx_pause_xoff``
330
331 * The extended statistics are fetched by ids with ``rte_eth_xstats_get``
332 after a lookup by name ``rte_eth_xstats_get_names``.
333
334 * The function ``rte_eth_dev_info_get`` fill the new fields ``nb_rx_queues``
335 and ``nb_tx_queues`` in the structure ``rte_eth_dev_info``.
336
337 * The vhost function ``rte_vring_available_entries`` is renamed to
338 ``rte_vhost_avail_entries``.
339
340 * All existing vhost APIs and callbacks with ``virtio_net`` struct pointer
341 as the parameter have been changed due to the ABI refactoring described
342 below. It is replaced by ``int vid``.
343
344 * The function ``rte_vhost_enqueue_burst`` no longer supports concurrent enqueuing
345 packets to the same queue.
346
347 * The function ``rte_eth_dev_set_mtu`` adds a new return value ``-EBUSY``, which
348 indicates the operation is forbidden because the port is running.
349
350 * The script ``dpdk_nic_bind.py`` is renamed to ``dpdk-devbind.py``.
351 And the script ``setup.sh`` is renamed to ``dpdk-setup.sh``.
352
353
354 ABI Changes
355 -----------
356
357 .. * Add a short 1-2 sentence description of the ABI change that was announced in
358 the previous releases and made in this release. Use fixed width quotes for
359 ``rte_function_names`` or ``rte_struct_names``. Use the past tense.
360
361 * The ``rte_port_source_params`` structure has new fields to support PCAP files.
362 It was already in release 16.04 with ``RTE_NEXT_ABI`` flag.
363
364 * The ``rte_eth_dev_info`` structure has new fields ``nb_rx_queues`` and ``nb_tx_queues``
365 to support the number of queues configured by software.
366
367 * A Vhost ABI refactoring has been made: the ``virtio_net`` structure is no
368 longer exported directly to the application. Instead, a handle, ``vid``, has
369 been used to represent this structure internally.
370
371
372 Shared Library Versions
373 -----------------------
374
375 .. Update any library version updated in this release and prepend with a ``+`` sign.
376
377 The libraries prepended with a plus sign were incremented in this version.
378
379 .. code-block:: diff
380
381 + libethdev.so.4
382 librte_acl.so.2
383 librte_cfgfile.so.2
384 librte_cmdline.so.2
385 librte_cryptodev.so.1
386 librte_distributor.so.1
387 librte_eal.so.2
388 librte_hash.so.2
389 librte_ip_frag.so.1
390 librte_ivshmem.so.1
391 librte_jobstats.so.1
392 librte_kni.so.2
393 librte_kvargs.so.1
394 librte_lpm.so.2
395 librte_mbuf.so.2
396 + librte_mempool.so.2
397 librte_meter.so.1
398 librte_pdump.so.1
399 librte_pipeline.so.3
400 librte_pmd_bond.so.1
401 librte_pmd_ring.so.2
402 + librte_port.so.3
403 librte_power.so.1
404 librte_reorder.so.1
405 librte_ring.so.1
406 librte_sched.so.1
407 librte_table.so.2
408 librte_timer.so.1
409 + librte_vhost.so.3
410
411
412 Tested Platforms
413 ----------------
414
415 .. This section should contain a list of platforms that were tested with this
416 release.
417
418 The format is:
419
420 #. Platform name.
421
422 - Platform details.
423 - Platform details.
424
425 #. SuperMicro 1U
426
427 - BIOS: 1.0c
428 - Processor: Intel(R) Atom(TM) CPU C2758 @ 2.40GHz
429
430 #. SuperMicro 1U
431
432 - BIOS: 1.0a
433 - Processor: Intel(R) Xeon(R) CPU D-1540 @ 2.00GHz
434 - Onboard NIC: Intel(R) X552/X557-AT (2x10G)
435
436 - Firmware-version: 0x800001cf
437 - Device ID (PF/VF): 8086:15ad /8086:15a8
438
439 - kernel driver version: 4.2.5 (ixgbe)
440
441 #. SuperMicro 2U
442
443 - BIOS: 1.0a
444 - Processor: Intel(R) Xeon(R) CPU E5-4667 v3 @ 2.00GHz
445
446 #. Intel(R) Server board S2600GZ
447
448 - BIOS: SE5C600.86B.02.02.0002.122320131210
449 - Processor: Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz
450
451 #. Intel(R) Server board W2600CR
452
453 - BIOS: SE5C600.86B.02.01.0002.082220131453
454 - Processor: Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz
455
456 #. Intel(R) Server board S2600CWT
457
458 - BIOS: SE5C610.86B.01.01.0009.060120151350
459 - Processor: Intel(R) Xeon(R) CPU E5-2699 v3 @ 2.30GHz
460
461 #. Intel(R) Server board S2600WTT
462
463 - BIOS: SE5C610.86B.01.01.0005.101720141054
464 - Processor: Intel(R) Xeon(R) CPU E5-2699 v3 @ 2.30GHz
465
466 #. Intel(R) Server board S2600WTT
467
468 - BIOS: SE5C610.86B.11.01.0044.090120151156
469 - Processor: Intel(R) Xeon(R) CPU E5-2695 v4 @ 2.10GHz
470
471
472 Tested NICs
473 -----------
474
475 .. This section should contain a list of NICs that were tested with this release.
476
477 The format is:
478
479 #. NIC name.
480
481 - NIC details.
482 - NIC details.
483
484 #. Intel(R) Ethernet Controller X540-AT2
485
486 - Firmware version: 0x80000389
487 - Device id (pf): 8086:1528
488 - Driver version: 3.23.2 (ixgbe)
489
490 #. Intel(R) 82599ES 10 Gigabit Ethernet Controller
491
492 - Firmware version: 0x61bf0001
493 - Device id (pf/vf): 8086:10fb / 8086:10ed
494 - Driver version: 4.0.1-k (ixgbe)
495
496 #. Intel(R) Corporation Ethernet Connection X552/X557-AT 10GBASE-T
497
498 - Firmware version: 0x800001cf
499 - Device id (pf/vf): 8086:15ad / 8086:15a8
500 - Driver version: 4.2.5 (ixgbe)
501
502 #. Intel(R) Ethernet Converged Network Adapter X710-DA4 (4x10G)
503
504 - Firmware version: 5.04
505 - Device id (pf/vf): 8086:1572 / 8086:154c
506 - Driver version: 1.4.26 (i40e)
507
508 #. Intel(R) Ethernet Converged Network Adapter X710-DA2 (2x10G)
509
510 - Firmware version: 5.04
511 - Device id (pf/vf): 8086:1572 / 8086:154c
512 - Driver version: 1.4.25 (i40e)
513
514 #. Intel(R) Ethernet Converged Network Adapter XL710-QDA1 (1x40G)
515
516 - Firmware version: 5.04
517 - Device id (pf/vf): 8086:1584 / 8086:154c
518 - Driver version: 1.4.25 (i40e)
519
520 #. Intel(R) Ethernet Converged Network Adapter XL710-QDA2 (2X40G)
521
522 - Firmware version: 5.04
523 - Device id (pf/vf): 8086:1583 / 8086:154c
524 - Driver version: 1.4.25 (i40e)
525
526 #. Intel(R) Corporation I350 Gigabit Network Connection
527
528 - Firmware version: 1.48, 0x800006e7
529 - Device id (pf/vf): 8086:1521 / 8086:1520
530 - Driver version: 5.2.13-k (igb)
531
532 #. Intel(R) Ethernet Multi-host Controller FM10000
533
534 - Firmware version: N/A
535 - Device id (pf/vf): 8086:15d0
536 - Driver version: 0.17.0.9 (fm10k)
537
538
539 Tested OSes
540 -----------
541
542 .. This section should contain a list of OSes that were tested with this release.
543
544 - CentOS 7.0
545 - Fedora 23
546 - Fedora 24
547 - FreeBSD 10.3
548 - Red Hat Enterprise Linux 7.2
549 - SUSE Enterprise Linux 12
550 - Ubuntu 15.10
551 - Ubuntu 16.04 LTS
552 - Wind River Linux 8