vhost: disable reply-ack feature if IOMMU disabled
[dpdk.git] / doc / guides / rel_notes / release_17_11.rst
1 DPDK Release 17.11
2 ==================
3
4 .. **Read this first.**
5
6    The text in the sections below explains how to update the release notes.
7
8    Use proper spelling, capitalization and punctuation in all sections.
9
10    Variable and config names should be quoted as fixed width text:
11    ``LIKE_THIS``.
12
13    Build the docs and view the output file to ensure the changes are correct::
14
15       make doc-guides-html
16
17       xdg-open build/doc/html/guides/rel_notes/release_17_11.html
18
19
20 New Features
21 ------------
22
23 .. This section should contain new features added in this release. Sample
24    format:
25
26    * **Add a title in the past tense with a full stop.**
27
28      Add a short 1-2 sentence description in the past tense. The description
29      should be enough to allow someone scanning the release notes to
30      understand the new feature.
31
32      If the feature adds a lot of sub-features you can use a bullet list like
33      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      This section is a comment. do not overwrite or remove it.
41      Also, make sure to start the actual text at the margin.
42      =========================================================
43
44 * **Extended port_id range from uint8_t to uint16_t.**
45
46   Increased port_id range from 8 bits to 16 bits in order to support more than
47   256 ports in dpdk. All ethdev APIs which have port_id as parameter are changed
48   in the meantime.
49
50 * **Modified the return type of rte_eth_stats_reset.**
51
52   Changed return type of ``rte_eth_stats_reset`` from ``void`` to ``int``
53   so the caller may know whether a device supports the operation or not
54   and if the operation was carried out.
55
56 * **Added a new driver for Marvell Armada 7k/8k devices.**
57
58   Added the new mrvl net driver for Marvell Armada 7k/8k devices. See the
59   "Network Interface Controller Drivers" document for more details on this new
60   driver.
61
62 * **Updated mlx5 driver.**
63
64   Updated the mlx5 driver including the following changes:
65
66    * Enabled PMD to run on top of upstream linux kernel and rdma-core libs.
67      By that removed the dependency on specific Mellanox OFED libraries.
68    * Improved PMD latency performance.
69    * Improved PMD memory footprint.
70    * Supported vectorized Rx/Tx burst for ARMv8.
71    * Supported secondary process.
72    * Supported flow counters.
73    * Supported Rx hardware timestamp offload.
74    * Supported device removal event.
75
76 * **Added SoftNIC PMD.**
77
78   Added new SoftNIC PMD. This virtual device offers applications a software
79   fallback support for traffic management.
80
81 * **Added support for NXP DPAA Devices.**
82
83   Added support for NXP's DPAA devices - LS104x series. This includes:
84
85   * DPAA Bus driver
86   * DPAA Mempool driver for supporting offloaded packet memory pool
87   * DPAA PMD for DPAA devices
88
89   See the "Network Interface Controller Drivers" document for more details of
90   this new driver.
91
92 * **Updated support for Cavium OCTEONTX Device.**
93
94   Updated support for Cavium's OCTEONTX device(CN83xx). This includes:
95
96   * OCTEONTX Mempool driver for supporting offloaded packet memory pool
97   * OCTEONTX Ethdev PMD
98   * OCTEONTX Eventdev-Ethdev Rx adapter
99
100   See the "Network Interface Controller Drivers" document for more details of
101   this new driver.
102
103 * **nfp: Added PF support.**
104
105   Previously Netronome's NFP PMD had just support for VFs. PF support is
106   just as a basic DPDK port and has no VF management yet.
107
108   PF support comes with firmware upload support which allows the PMD to
109   independently work from kernel netdev NFP drivers.
110
111   NFP 4000 devices are also now supported along with previous 6000 devices.
112
113 * **Updated bnxt PMD.**
114
115   Major enhancements include:
116
117    * Support for Flow API
118    * Support for Tx and Rx descriptor status functions
119
120 * **Add bus agnostic functions to cryptodev for PMD initialisation**
121
122   Adds new PMD assist functions ``rte_cryptodev_pmd_parse_input_args()``,
123   ``rte_cryptodev_pmd_create()`` and ``rte_cryptodev_pmd_destroy()`` which
124   are bus independent for driver to manage creation and destruction of new
125   device instances.
126
127 * **Updated QAT crypto PMD.**
128
129   Performance enhancements:
130
131   * Removed atomics from the internal queue pair structure.
132   * Coalesce writes to HEAD CSR on response processing.
133   * Coalesce writes to TAIL CSR on request processing.
134
135   Additional support for:
136
137   * AES CCM algorithm.
138
139 * **Updated the AESNI MB PMD.**
140
141   The AESNI MB PMD has been updated with additional support for:
142
143   * DES CBC algorithm.
144   * DES DOCSIS BPI algorithm.
145
146   This requires the IPSec Multi-buffer library 0.47. For more details,
147   check out the AESNI MB PMD documenation.
148
149 * **Updated the OpenSSL PMD.**
150
151   The OpenSSL PMD has been updated with additional support for:
152
153   * DES CBC algorithm.
154   * AES CCM algorithm.
155
156 * **Added NXP DPAA SEC crypto PMD.**
157
158   A new "dpaa_sec" hardware based crypto PMD for NXP DPAA devices has been
159   added. See the "Crypto Device Drivers" document for more details on this
160   driver.
161
162 * **Added MRVL crypto PMD.**
163
164   A new crypto PMD has been added, which provides several ciphering and hashing
165   algorithms. All cryptography operations use the MUSDK library crypto API.
166
167 * **Add new benchmarking mode to dpdk-test-crypto-perf application.**
168
169   Added new "PMD cyclecount" benchmark mode to dpdk-test-crypto-perf application
170   that displays more detailed breakdown of CPU cycles used by hardware
171   acceleration.
172
173 * **Added IOMMU support to libvhost-user**
174
175   Implemented device IOTLB in Vhost-user backend, and enabled Virtio's IOMMU
176   feature.
177
178 * **Added the Event Ethernet Adapter Library.**
179
180   Added the Event Ethernet Adapter library. It provices APIs for
181   eventdev applications to configure the ethdev to eventdev packet flow.
182
183 * **Added Membership library (rte_member).**
184
185   Added membership library. It provides an API for DPDK applications to insert a
186   new member, delete an existing member, or query the existence of a member in a
187   given set, or a group of sets. For the case of a group of sets the library
188   will return not only whether the element has been inserted before in one of
189   the sets but also which set it belongs to.
190
191   The Membership Library is an extension and generalization of a traditional
192   filter (for example Bloom Filter) structure that has multiple usages in a wide
193   variety of workloads and applications. In general, the Membership Library is a
194   data structure that provides a “set-summary” and responds to set-membership
195   queries whether a certain member belongs to a set(s).
196
197   See the :ref:`Membership Library <Member_Library>` documentation in
198   the Programmers Guide document, for more information.
199
200 * **Added the Generic Segmentation Offload Library.**
201
202   Added the Generic Segmentation Offload (GSO) library to enable
203   applications to split large packets (e.g. MTU is 64KB) into small
204   ones (e.g. MTU is 1500B). Supported packet types are:
205
206   * TCP/IPv4 packets.
207   * VxLAN packets, which must have an outer IPv4 header, and contain
208     an inner TCP/IPv4 packet.
209   * GRE packets, which must contain an outer IPv4 header, and inner
210     TCP/IPv4 headers.
211
212   The GSO library doesn't check if the input packets have correct
213   checksums, and doesn't update checksums for output packets.
214   Additionally, the GSO library doesn't process IP fragmented packets.
215
216 * **Added the Flow Classification Library.**
217
218   Added the Flow Classification library, it provides an API for DPDK
219   applications to classify an input packet by matching it against a set of flow
220   rules. It uses the librte_table API to manage the flow rules.
221
222
223 Resolved Issues
224 ---------------
225
226 .. This section should contain bug fixes added to the relevant
227    sections. Sample format:
228
229    * **code/section Fixed issue in the past tense with a full stop.**
230
231      Add a short 1-2 sentence description of the resolved issue in the past
232      tense.
233
234      The title should contain the code/lib section like a commit message.
235
236      Add the entries in alphabetic order in the relevant sections below.
237
238    This section is a comment. do not overwrite or remove it.
239    Also, make sure to start the actual text at the margin.
240    =========================================================
241
242
243 EAL
244 ~~~
245
246 * **Service core fails to call service callback due to atomic lock**
247
248   In a specific configuration of multi-thread unsafe services and service
249   cores, a service core previously did not correctly release the atomic lock
250   on the service. This would result in the cores polling the service, but it
251   looked like another thread was executing the service callback. The logic for
252   atomic locking of the services has been fixed and refactored for readability.
253
254 Drivers
255 ~~~~~~~
256
257
258 Libraries
259 ~~~~~~~~~
260
261
262 Examples
263 ~~~~~~~~
264
265
266 Other
267 ~~~~~
268
269
270 Known Issues
271 ------------
272
273 .. This section should contain new known issues in this release. Sample format:
274
275    * **Add title in present tense with full stop.**
276
277      Add a short 1-2 sentence description of the known issue in the present
278      tense. Add information on any known workarounds.
279
280    This section is a comment. do not overwrite or remove it.
281    Also, make sure to start the actual text at the margin.
282    =========================================================
283
284
285 API Changes
286 -----------
287
288 .. This section should contain API changes. Sample format:
289
290    * Add a short 1-2 sentence description of the API change. Use fixed width
291      quotes for ``rte_function_names`` or ``rte_struct_names``. Use the past
292      tense.
293
294    This section is a comment. do not overwrite or remove it.
295    Also, make sure to start the actual text at the margin.
296    =========================================================
297
298 * **Ethdev device name length increased**
299
300   The size of internal device name is increased to 64 characters
301   to allow for storing longer bus specific name.
302
303 * **Ethdev flag RTE_ETH_DEV_DETACHABLE was removed**
304
305   This flag is not necessary anymore, with the new hotplug implementation.
306   It is now removed from the ether library. Its semantic is expressed at the bus
307   and PMD level.
308
309 * **Service cores API updated for usability**
310
311   The service cores API has been changed, removing pointers from the API
312   where possible, instead using integer IDs to identify each service. This
313   simplifed application code, aids debugging, and provides better
314   encapsulation. A summary of the main changes made is as follows:
315
316   * Services identified by ID not by ``rte_service_spec`` pointer
317   * Reduced API surface by using ``set`` functions instead of enable/disable
318   * Reworked ``rte_service_register`` to provide the service ID to registrar
319   * Rework start and stop APIs into ``rte_service_runstate_set``
320   * Added API to set runstate of service implementation to indicate readyness
321
322 * **The following changes made in mempool library**
323
324   * Moved ``flags`` datatype from int to unsigned int for ``rte_mempool``.
325   * Removed ``__rte_unused int flag`` param from ``rte_mempool_generic_put``
326     and ``rte_mempool_generic_get`` API.
327   * Added ``flags`` param in ``rte_mempool_xmem_size`` and
328     ``rte_mempool_xmem_usage``.
329
330 * Xen dom0 in EAL was removed, as well as xenvirt PMD and vhost_xen.
331
332 * ``rte_mem_phy2mch`` was used in Xen dom0 to obtain the physical address;
333   remove this API as Xen dom0 support was removed.
334
335 * **Some data type, structure members and functions related to physical address
336   are deprecated and have new alias with IOVA wording.**
337
338   * ``phys_addr_t`` can be often replaced by ``rte_iova_t`` of same size.
339   * ``RTE_BAD_PHYS_ADDR`` is often replaced by ``RTE_BAD_IOVA`` of same value.
340   * ``rte_memseg.phys_addr`` is aliased with ``rte_memseg.iova_addr``.
341   * ``rte_mem_virt2phy()`` can often be replaced by ``rte_mem_virt2iova``.
342   * ``rte_malloc_virt2phy`` is aliased with ``rte_malloc_virt2iova``.
343   * ``rte_memzone.phys_addr`` is aliased with ``rte_memzone.iova``.
344   * ``rte_mempool_objhdr.physaddr`` is aliased with ``rte_mempool_objhdr.iova``.
345   * ``rte_mempool_memhdr.phys_addr`` is aliased with ``rte_mempool_memhdr.iova``.
346   * ``rte_mempool_virt2phy()`` can be replaced by ``rte_mempool_virt2iova()``.
347   * ``rte_mempool_populate_phys*()`` are aliased with ``rte_mempool_populate_iova*()``
348   * ``rte_mbuf.buf_physaddr`` is aliased with ``rte_mbuf.buf_iova``.
349   * ``rte_mbuf_data_dma_addr*()`` are aliased with ``rte_mbuf_data_iova*()``.
350   * ``rte_pktmbuf_mtophys*`` are aliased with ``rte_pktmbuf_iova*()``.
351
352 * **PCI bus API moved outside of the EAL**
353
354   The PCI bus previously implemented within the EAL has been moved.
355   A first part has been added as an RTE library providing PCI helpers to
356   parse device locations or other such utilities.
357   A second part consisting in the actual bus driver has been moved to its
358   proper subdirectory, without changing its functionalities.
359
360   As such, several PCI-related functions are not proposed by the EAL anymore:
361
362   * rte_pci_detach
363   * rte_pci_dump
364   * rte_pci_ioport_map
365   * rte_pci_ioport_read
366   * rte_pci_ioport_unmap
367   * rte_pci_ioport_write
368   * rte_pci_map_device
369   * rte_pci_probe
370   * rte_pci_probe_one
371   * rte_pci_read_config
372   * rte_pci_register
373   * rte_pci_scan
374   * rte_pci_unmap_device
375   * rte_pci_unregister
376   * rte_pci_write_config
377
378   These functions are made available either as part of ``librte_pci`` or
379   ``librte_bus_pci``.
380
381 * **Add return value to stats_get dev op API**
382
383   The ``stats_get`` dev op API return value has been changed to be int.
384   By this way PMDs can return an error value in case of failure at stats
385   getting process time.
386
387 * **Modified the rte_cryptodev_allocate_driver function in the cryptodev library.**
388
389   The function ``rte_cryptodev_allocate_driver()`` has been modified.
390   An extra parameter ``struct cryptodev_driver *crypto_drv`` has been added.
391
392 * **Removed virtual device bus specific functions from librte_cryptodev.**
393
394   The functions ``rte_cryptodev_vdev_parse_init_params()`` and
395   ``rte_cryptodev_vdev_pmd_init()`` have been removed from librte_cryptodev
396   and have been replaced by non bus specific functions
397   ``rte_cryptodev_pmd_parse_input_args()`` and ``rte_cryptodev_pmd_create()``.
398
399 * **Removed PCI device bus specific functions from librte_cryptodev.**
400
401   The functions ``rte_cryptodev_pci_generic_probe()`` and
402   ``rte_cryptodev_pci_generic_remove()`` have been removed from librte_cryptodev
403   and have been replaced by non bus specific functions
404   ``rte_cryptodev_pmd_create()`` and ``rte_cryptodev_pmd_destroy()``.
405
406 * **Removed deprecated functions to manage log level or type.**
407
408   The functions ``rte_set_log_level()``, ``rte_get_log_level()``,
409   ``rte_set_log_type()`` and ``rte_get_log_type()`` have been removed.
410   They are respectively replaced by ``rte_log_set_global_level()``,
411   ``rte_log_get_global_level()``, ``rte_log_set_level()`` and
412   ``rte_log_get_level()``.
413
414 * **Removed ``mbuf`` flags ``PKT_RX_VLAN_PKT`` and ``PKT_RX_QINQ_PKT``.**
415
416   The ``mbuf`` flags ``PKT_RX_VLAN_PKT`` and ``PKT_RX_QINQ_PKT`` have
417   been removed since their behavior were not properly described.
418
419 * **Added ``mbuf`` flags ``PKT_RX_VLAN`` and ``PKT_RX_QINQ``.**
420
421   Two ``mbuf`` flags have been added to indicate that the VLAN
422   identifier has been saved in in the ``mbuf`` structure. For instance:
423
424   - if VLAN is not stripped and TCI is saved: ``PKT_RX_VLAN``
425   - if VLAN is stripped and TCI is saved: ``PKT_RX_VLAN | PKT_RX_VLAN_STRIPPED``
426
427 * **Modified the vlan_offload_set_t function prototype in the ethdev library.**
428
429   Changed the function prototype of ``vlan_offload_set_t``.  The return value
430   has been changed from ``void`` to ``int`` so the caller to knows whether
431   the backing device supports the operation or if the operation was
432   successfully performed.
433
434
435 ABI Changes
436 -----------
437
438 .. This section should contain ABI changes. Sample format:
439
440    * Add a short 1-2 sentence description of the ABI change that was announced
441      in the previous releases and made in this release. Use fixed width quotes
442      for ``rte_function_names`` or ``rte_struct_names``. Use the past tense.
443
444    This section is a comment. do not overwrite or remove it.
445    Also, make sure to start the actual text at the margin.
446    =========================================================
447
448 * **Extended port_id range.**
449
450   The size of the field ``port_id`` in the ``rte_eth_dev_data`` structure
451   changed, as described in the `New Features` section.
452
453
454 Removed Items
455 -------------
456
457 .. This section should contain removed items in this release. Sample format:
458
459    * Add a short 1-2 sentence description of the removed item in the past
460      tense.
461
462    This section is a comment. do not overwrite or remove it.
463    Also, make sure to start the actual text at the margin.
464    =========================================================
465
466 * The crypto performance unit tests have been removed,
467   replaced by the dpdk-test-crypto-perf application.
468
469
470 Shared Library Versions
471 -----------------------
472
473 .. Update any library version updated in this release and prepend with a ``+``
474    sign, like this:
475
476      librte_acl.so.2
477    + librte_cfgfile.so.2
478      librte_cmdline.so.2
479
480    This section is a comment. do not overwrite or remove it.
481    =========================================================
482
483
484 The libraries prepended with a plus sign were incremented in this version.
485
486 .. code-block:: diff
487
488      librte_acl.so.2
489    + librte_bitratestats.so.2
490      librte_cfgfile.so.2
491      librte_cmdline.so.2
492    + librte_cryptodev.so.4
493      librte_distributor.so.1
494    + librte_eal.so.6
495    + librte_ethdev.so.8
496    + librte_eventdev.so.3
497    + librte_flow_classify.so.1
498      librte_gro.so.1
499    + librte_gso.so.1
500      librte_hash.so.2
501      librte_ip_frag.so.1
502      librte_jobstats.so.1
503      librte_kni.so.2
504      librte_kvargs.so.1
505      librte_latencystats.so.1
506      librte_lpm.so.2
507      librte_mbuf.so.3
508    + librte_mempool.so.3
509      librte_meter.so.1
510      librte_metrics.so.1
511      librte_net.so.1
512    + librte_pci.so.1
513    + librte_pdump.so.2
514      librte_pipeline.so.3
515    + librte_pmd_bnxt.so.2
516    + librte_pmd_bond.so.2
517    + librte_pmd_i40e.so.2
518    + librte_pmd_ixgbe.so.2
519      librte_pmd_ring.so.2
520    + librte_pmd_softnic.so.1
521    + librte_pmd_vhost.so.2
522      librte_port.so.3
523      librte_power.so.1
524      librte_reorder.so.1
525      librte_ring.so.1
526      librte_sched.so.1
527    + librte_security.so.1
528    + librte_table.so.3
529      librte_timer.so.1
530      librte_vhost.so.3
531
532
533 Tested Platforms
534 ----------------
535
536 .. This section should contain a list of platforms that were tested with this
537    release.
538
539    The format is:
540
541    * <vendor> platform with <vendor> <type of devices> combinations
542
543      * List of CPU
544      * List of OS
545      * List of devices
546      * Other relevant details...
547
548    This section is a comment. do not overwrite or remove it.
549    Also, make sure to start the actual text at the margin.
550    =========================================================