examples/l2fwd-keepalive: add graceful exit
[dpdk.git] / doc / guides / rel_notes / release_17_05.rst
1 DPDK Release 17.05
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_05.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 * **Reorganized the mbuf structure.**
45
46   * Align fields to facilitate the writing of ``data_off``, ``refcnt``, and
47     ``nb_segs`` in one operation.
48   * Use 2 bytes for port and number of segments.
49   * Move the sequence number in the second cache line.
50   * Add a timestamp field.
51   * Set default value for ``refcnt``, ``next`` and ``nb_segs`` at mbuf free.
52
53 * **Added mbuf raw free API**
54
55   Moved ``rte_mbuf_raw_free()`` and ``rte_pktmbuf_prefree_seg()`` functions to
56   the public API.
57
58 * **Added free Tx mbuf on demand API.**
59
60   Added a new function ``rte_eth_tx_done_cleanup()`` which allows an application
61   to request the driver to release mbufs from their Tx ring that are no longer
62   in use, independent of whether or not the ``tx_rs_thresh`` has been crossed.
63
64 * **Added device removal interrupt.**
65
66   Added a new ethdev event ``RTE_ETH_DEV_INTR_RMV`` to signify
67   the sudden removal of a device.
68   This event can be advertized by PCI drivers and enabled accordingly.
69
70 * **Added EAL dynamic log framework.**
71
72   Added new APIs to dynamically register named log types, and control
73   the level of each type independently.
74
75 * **Added descriptor status ethdev API.**
76
77   Added a new API to get the status of a descriptor.
78
79   For Rx, it is almost similar to the ``rx_descriptor_done`` API, except
80   it differentiates descriptors which are hold by the driver and not
81   returned to the hardware. For Tx, it is a new API.
82
83 * **Increased number of next hops for LPM IPv6 to 2^21.**
84
85   The next_hop field is extended from 8 bits to 21 bits for IPv6.
86
87 * **Added VFIO hotplug support.**
88
89   How hotplug supported with UIO and VFIO drivers.
90
91 * **Added powerpc support in pci probing for vfio-pci devices.**
92
93   sPAPR IOMMU based pci probing enabled for vfio-pci devices.
94
95 * **Kept consistent PMD batching behaviour.**
96
97   Removed the limit of fm10k/i40e/ixgbe TX burst size and vhost RX/TX burst size
98   in order to support the same policy of "make an best effort to RX/TX pkts"
99   for PMDs.
100
101 * **Updated the ixgbe base driver.**
102
103   Updated the ixgbe base driver, including the following changes:
104
105   * Add link block check for KR.
106   * Complete HW initialization even if SFP is not present.
107   * Add VF xcast promiscuous mode.
108
109 * **Added powerpc support for i40e and its vector PMD .**
110
111   i40e PMD and its vector PMD enabled by default in powerpc.
112
113 * **Added VF max bandwidth setting on i40e.**
114
115   i40e HW supports to set the max bandwidth for a VF. Enable this capability.
116
117 * **Added VF TC min bandwidth setting on i40e.**
118
119   i40e HW supports to set the allocated bandwidth for a TC on a VF. Enable this
120   capability.
121
122 * **Added VF TC max bandwidth setting on i40e.**
123
124   i40e HW supports to set the max bandwidth for a TC on a VF. Enable this
125   capability.
126
127 * **Added TC strict priority mode setting on i40e.**
128
129   There're 2 TX scheduling modes supported for TCs by i40e HW, round ribon mode
130   and strict priority mode. By default it's round robin mode. Enable the
131   capability to change the TX scheduling mode for a TC. It's a global setting
132   on a physical port.
133
134 * **Added i40e dynamic device personalization support.**
135
136   * Added dynamic device personalization processing to i40e FW.
137
138 * **Added Cloud Filter for QinQ steering to i40e.**
139
140   * Added a QinQ cloud filter on the i40e PMD, for steering traffic to a VM
141     using both VLAN tags.
142   * QinQ is not supported in Vector Mode on the i40e PMD.
143   * Vector Mode must be disabled when using the QinQ Cloud Filter.
144
145 * **Updated mlx5 PMD.**
146
147   * Supported ether type in flow item.
148   * Extended IPv6 flow item with Vtc flow, Protocol and Hop limit.
149   * Supported flag flow action.
150   * Supported RSS action flow rule.
151   * Supported TSO for tunneled and non-tunneled packets.
152   * Supported hardware checksum offloads for tunneled packets.
153   * Supported user space Rx interrupt event.
154   * Enhanced multi-packet send function for ConnectX-5.
155
156 * **Updated mlx4 PMD.**
157
158   * Supported basic flow items and actions.
159   * Supported device removal event.
160
161 * **Updated the sfc_efx driver.**
162
163   * Generic flow API support for Ethernet, VLAN, IPv4, IPv6, UDP and TCP
164     pattern items with QUEUE action for ingress traffic.
165
166   * Support virtual functions (VFs)
167
168 * **Added LiquidIO network PMD.**
169
170   Added poll mode driver support for Cavium LiquidIO II server adapter VFs.
171
172 * **Added Atomic Rules Arkville PMD.**
173
174   Added a new poll mode driver for the Arkville family of
175   devices from Atomic Rules.   The net/ark PMD supports line-rate
176   agnostic, multi-queue data movement on Arkville core FPGA instances.
177
178 * **Added support for NXP DPAA2 - FSLMC bus.**
179
180   Added the new bus "fslmc" driver for NXP DPAA2 devices. See the
181   "Network Interface Controller Drivers" document for more details on this new
182   driver.
183
184 * **Added support for NXP DPAA2 Network PMD.**
185
186   Added the new "dpaa2" net driver for NXP DPAA2 devices. See the
187   "Network Interface Controller Drivers" document for more details on this new
188   driver.
189
190 * **Added support for the Wind River Systems AVP PMD.**
191
192   Added a new networking driver for the AVP device type. Theses devices are
193   specific to the Wind River Systems virtualization platforms.
194
195 * **Added vmxnet3 version 3 support.**
196
197   Added support for vmxnet3 version 3 which includes several
198   performance enhancements viz. configurable TX data ring, Receive
199   Data Ring, ability to register memory regions.
200
201 * **Updated the tap driver.**
202
203   * Support MTU modification.
204   * Support packet type for Rx.
205   * Support segmented packets on Rx and Tx.
206   * Speed up Rx on tap when no packets are available.
207   * Support capturing traffic from another netdevice.
208   * Dynamically change link status when the underlying interface state changes.
209   * Generic flow API support for Ethernet, VLAN, IPv4, IPv6, UDP and TCP pattern
210     items with DROP, QUEUE and PASSTHRU actions for ingress traffic.
211
212 * **Added MTU feature support to Virtio and Vhost.**
213
214   Implemented new Virtio MTU feature into Vhost and Virtio:
215
216   * Add ``rte_vhost_mtu_get()`` API to Vhost library.
217   * Enable Vhost PMD's MTU get feature.
218   * Get max MTU value from host in Virtio PMD
219
220 * **Added interrupt mode support for virtio-user.**
221
222   Implemented Rxq interrupt mode and LSC support for virtio-user as a virtual
223   device. Supported cases:
224
225   * Rxq interrupt for virtio-user + vhost-user as the backend.
226   * Rxq interrupt for virtio-user + vhost-kernel as the backend.
227   * LSC interrupt for virtio-user + vhost-user as the backend.
228
229 * **Added event driven programming model library (rte_eventdev).**
230
231   This API introduces event driven programming model.
232
233   In a polling model, lcores poll ethdev ports and associated
234   rx queues directly to look for packet. In an event driven model,
235   by contrast, lcores call the scheduler that selects packets for
236   them based on programmer-specified criteria. Eventdev library
237   added support for event driven programming model, which offer
238   applications automatic multicore scaling, dynamic load balancing,
239   pipelining, packet ingress order maintenance and
240   synchronization services to simplify application packet processing.
241
242   By introducing event driven programming model, DPDK can support
243   both polling and event driven programming models for packet processing,
244   and applications are free to choose whatever model
245   (or combination of the two) that best suits their needs.
246
247 * **Added Software Eventdev PMD.**
248
249   Added support for the software eventdev PMD. The software eventdev is a
250   software based scheduler device that implements the eventdev API. This
251   PMD allows an application to configure a pipeline using the eventdev
252   library, and run the scheduling workload on a CPU core.
253
254 * **Added Cavium OCTEONTX Eventdev PMD.**
255
256   Added the new octeontx ssovf eventdev driver for OCTEONTX devices. See the
257   "Event Device Drivers" document for more details on this new driver.
258
259 * **Added information metric library.**
260
261   A library that allows information metrics to be added and updated
262   by producers, typically other libraries, for later retrieval by
263   consumers such as applications. It is intended to provide a
264   reporting mechanism that is independent of other libraries such
265   as ethdev.
266
267 * **Added bit-rate calculation library.**
268
269   A library that can be used to calculate device bit-rates. Calculated
270   bitrates are reported using the metrics library.
271
272 * **Added latency stats library.**
273
274   A library that measures packet latency. The collected statistics are jitter
275   and latency. For latency the minimum, average, and maximum is measured.
276
277 * **Added NXP DPAA2 SEC crypto PMD.**
278
279   A new "dpaa2_sec" hardware based crypto PMD for NXP DPAA2 devices has been
280   added. See the "Crypto Device Drivers" document for more details on this
281   driver.
282
283 * **Updated the Cryptodev Scheduler PMD.**
284
285   * Added packet-size based distribution mode, which distributes the enqueued
286     crypto operations among two slaves, based on their data lengths.
287   * Added fail-over scheduling mode, which enqueues crypto operations to a
288     primary slave first. Then, any operation that cannot be enqueued is
289     enqueued to a secondary slave.
290   * Added mode specific option support, so each scheduleing mode can
291     now be configured individually by the new added API.
292
293 * **Updated the QAT PMD.**
294
295   The QAT PMD has been updated with additional support for:
296
297   * AES DOCSIS BPI algorithm.
298   * DES DOCSIS BPI algorithm.
299   * ZUC EEA3/EIA3 algorithms.
300
301 * **Updated the AESNI MB PMD.**
302
303   The AESNI MB PMD has been updated with additional support for:
304
305   * AES DOCSIS BPI algorithm.
306
307 * **Updated the OpenSSL PMD.**
308
309   The OpenSSL PMD has been updated with additional support for:
310
311   * DES DOCSIS BPI algorithm.
312
313
314 Resolved Issues
315 ---------------
316
317 .. This section should contain bug fixes added to the relevant
318    sections. Sample format:
319
320    * **code/section Fixed issue in the past tense with a full stop.**
321
322      Add a short 1-2 sentence description of the resolved issue in the past
323      tense.
324
325      The title should contain the code/lib section like a commit message.
326
327      Add the entries in alphabetic order in the relevant sections below.
328
329    This section is a comment. do not overwrite or remove it.
330    Also, make sure to start the actual text at the margin.
331    =========================================================
332
333
334 EAL
335 ~~~
336
337
338 Drivers
339 ~~~~~~~
340
341
342 Libraries
343 ~~~~~~~~~
344
345
346 Examples
347 ~~~~~~~~
348
349 * **l2fwd-keepalive: Fixed unclean shutdowns.**
350
351   Added clean shutdown to l2fwd-keepalive so that it can free up
352   stale resources used for inter-process communication.
353
354
355 Other
356 ~~~~~
357
358
359 Known Issues
360 ------------
361
362 .. This section should contain new known issues in this release. Sample format:
363
364    * **Add title in present tense with full stop.**
365
366      Add a short 1-2 sentence description of the known issue in the present
367      tense. Add information on any known workarounds.
368
369    This section is a comment. do not overwrite or remove it.
370    Also, make sure to start the actual text at the margin.
371    =========================================================
372
373 * **LSC interrupt cannot work for virtio-user + vhost-kernel.**
374
375   LSC interrupt cannot be detected when setting the backend, tap device,
376   up/down as we fail to find a way to monitor such event.
377
378
379 API Changes
380 -----------
381
382 .. This section should contain API changes. Sample format:
383
384    * Add a short 1-2 sentence description of the API change. Use fixed width
385      quotes for ``rte_function_names`` or ``rte_struct_names``. Use the past
386      tense.
387
388    This section is a comment. do not overwrite or remove it.
389    Also, make sure to start the actual text at the margin.
390    =========================================================
391
392 * The LPM ``next_hop`` field is extended from 8 bits to 21 bits for IPv6
393   while keeping ABI compatibility.
394
395 * **Reworked rte_ring library**
396
397   The rte_ring library has been reworked and updated. The following changes
398   have been made to it:
399
400   * removed the build-time setting ``CONFIG_RTE_RING_SPLIT_PROD_CONS``
401   * removed the build-time setting ``CONFIG_RTE_LIBRTE_RING_DEBUG``
402   * removed the build-time setting ``CONFIG_RTE_RING_PAUSE_REP_COUNT``
403   * removed the function ``rte_ring_set_water_mark`` as part of a general
404     removal of watermarks support in the library.
405   * added an extra parameter to the burst/bulk enqueue functions to
406     return the number of free spaces in the ring after enqueue. This can
407     be used by an application to implement its own watermark functionality.
408   * added an extra parameter to the burst/bulk dequeue functions to return
409     the number elements remaining in the ring after dequeue.
410   * changed the return value of the enqueue and dequeue bulk functions to
411     match that of the burst equivalents. In all cases, ring functions which
412     operate on multiple packets now return the number of elements enqueued
413     or dequeued, as appropriate. The updated functions are:
414
415     - ``rte_ring_mp_enqueue_bulk``
416     - ``rte_ring_sp_enqueue_bulk``
417     - ``rte_ring_enqueue_bulk``
418     - ``rte_ring_mc_dequeue_bulk``
419     - ``rte_ring_sc_dequeue_bulk``
420     - ``rte_ring_dequeue_bulk``
421
422     NOTE: the above functions all have different parameters as well as
423     different return values, due to the other listed changes above. This
424     means that all instances of the functions in existing code will be
425     flagged by the compiler. The return value usage should be checked
426     while fixing the compiler error due to the extra parameter.
427
428 * **Reworked rte_vhost library**
429
430   The rte_vhost library has been reworked to make it generic enough so that
431   user could build other vhost-user drivers on top of it. To achieve that,
432   following changes have been made:
433
434   * The following vhost-pmd APIs are removed:
435
436     * ``rte_eth_vhost_feature_disable``
437     * ``rte_eth_vhost_feature_enable``
438     * ``rte_eth_vhost_feature_get``
439
440   * The vhost API ``rte_vhost_driver_callback_register(ops)`` is reworked to
441     be per vhost-user socket file. Thus, it takes one more argument:
442     ``rte_vhost_driver_callback_register(path, ops)``.
443
444   * The vhost API ``rte_vhost_get_queue_num`` is deprecated, instead,
445     ``rte_vhost_get_vring_num`` should be used.
446
447   * Following macros are removed in ``rte_virtio_net.h``
448
449     * ``VIRTIO_RXQ``
450     * ``VIRTIO_TXQ``
451     * ``VIRTIO_QNUM``
452
453   * Following net specific header files are removed in ``rte_virtio_net.h``
454
455     * ``linux/virtio_net.h``
456     * ``sys/socket.h``
457     * ``linux/if.h``
458     * ``rte_ether.h``
459
460   * The vhost struct ``virtio_net_device_ops`` is renamed to
461     ``vhost_device_ops``
462
463   * The vhost API ``rte_vhost_driver_session_start`` is removed. Instead,
464     ``rte_vhost_driver_start`` should be used, and no need to create a
465     thread to call it.
466
467   * The vhost public header file ``rte_virtio_net.h`` is renamed to
468     ``rte_vhost.h``
469
470 * **Reworked rte_ethdev library**
471
472   * Changed set of input parameters for ``rte_eth_xstats_get`` and ``rte_eth_xstats_get_names`` functions.
473
474   * Added new functions ``rte_eth_xstats_get_all`` and ``rte_eth_xstats_get_names_all`` to provide backward compatibility for
475     ``rte_eth_xstats_get`` and ``rte_eth_xstats_get_names``
476
477   * Added new function ``rte_eth_xstats_get_id_by_name``
478
479
480 ABI Changes
481 -----------
482
483 .. This section should contain ABI changes. Sample format:
484
485    * Add a short 1-2 sentence description of the ABI change that was announced
486      in the previous releases and made in this release. Use fixed width quotes
487      for ``rte_function_names`` or ``rte_struct_names``. Use the past tense.
488
489    This section is a comment. do not overwrite or remove it.
490    Also, make sure to start the actual text at the margin.
491    =========================================================
492
493 * **Reorganized the mbuf structure.**
494
495   The order and size of the fields in the ``mbuf`` structure changed,
496   as described in the `New Features`_ section.
497
498 * The ``rte_cryptodev_info.sym`` structure has new field ``max_nb_sessions_per_qp``
499   to support drivers which may support limited number of sessions per queue_pair.
500
501
502 Removed Items
503 -------------
504
505 .. This section should contain removed items in this release. Sample format:
506
507    * Add a short 1-2 sentence description of the removed item in the past
508      tense.
509
510    This section is a comment. do not overwrite or remove it.
511    Also, make sure to start the actual text at the margin.
512    =========================================================
513
514 * KNI vhost support removed.
515
516 * dpdk_qat sample application removed.
517
518 Shared Library Versions
519 -----------------------
520
521 .. Update any library version updated in this release and prepend with a ``+``
522    sign, like this:
523
524      librte_acl.so.2
525    + librte_cfgfile.so.2
526      librte_cmdline.so.2
527
528    This section is a comment. do not overwrite or remove it.
529    =========================================================
530
531
532 The libraries prepended with a plus sign were incremented in this version.
533
534 .. code-block:: diff
535
536      librte_acl.so.2
537    + librte_bitratestats.so.1
538      librte_cfgfile.so.2
539      librte_cmdline.so.2
540      librte_cryptodev.so.2
541      librte_distributor.so.1
542    + librte_eal.so.4
543      librte_ethdev.so.6
544      librte_hash.so.2
545      librte_ip_frag.so.1
546      librte_jobstats.so.1
547      librte_kni.so.2
548      librte_kvargs.so.1
549    + librte_latencystats.so.1
550      librte_lpm.so.2
551    + librte_mbuf.so.3
552      librte_mempool.so.2
553      librte_meter.so.1
554    + librte_metrics.so.1
555      librte_net.so.1
556      librte_pdump.so.1
557      librte_pipeline.so.3
558      librte_pmd_bond.so.1
559      librte_pmd_ring.so.2
560      librte_port.so.3
561      librte_power.so.1
562      librte_reorder.so.1
563      librte_ring.so.1
564      librte_sched.so.1
565      librte_table.so.2
566      librte_timer.so.1
567      librte_vhost.so.3
568
569
570 Tested Platforms
571 ----------------
572
573 .. This section should contain a list of platforms that were tested with this
574    release.
575
576    The format is:
577
578    * <vendor> platform with <vendor> <type of devices> combinations
579
580      * List of CPU
581      * List of OS
582      * List of devices
583      * Other relevant details...
584
585    This section is a comment. do not overwrite or remove it.
586    Also, make sure to start the actual text at the margin.
587    =========================================================