New upstream version 18.08
[deb_dpdk.git] / 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
553