xref: /dpdk/doc/guides/rel_notes/release_16_07.rst (revision 68a03efeed657e6e05f281479b33b51102797e15)
1..  SPDX-License-Identifier: BSD-3-Clause
2    Copyright 2016 The DPDK contributors
3
4DPDK 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
22New 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
217Resolved 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
229EAL
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
250Drivers
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
282Libraries
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
292Examples
293~~~~~~~~
294
295
296Other
297~~~~~
298
299
300Known 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
311API 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
354ABI 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
372Shared Library Versions
373-----------------------
374
375.. Update any library version updated in this release and prepend with a ``+`` sign.
376
377The 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
412Tested 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
472Tested 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
539Tested 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