doc: update mlx release notes
[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
350 Other
351 ~~~~~
352
353
354 Known Issues
355 ------------
356
357 .. This section should contain new known issues in this release. Sample format:
358
359    * **Add title in present tense with full stop.**
360
361      Add a short 1-2 sentence description of the known issue in the present
362      tense. Add information on any known workarounds.
363
364    This section is a comment. do not overwrite or remove it.
365    Also, make sure to start the actual text at the margin.
366    =========================================================
367
368 * **LSC interrupt cannot work for virtio-user + vhost-kernel.**
369
370   LSC interrupt cannot be detected when setting the backend, tap device,
371   up/down as we fail to find a way to monitor such event.
372
373
374 API Changes
375 -----------
376
377 .. This section should contain API changes. Sample format:
378
379    * Add a short 1-2 sentence description of the API change. Use fixed width
380      quotes for ``rte_function_names`` or ``rte_struct_names``. Use the past
381      tense.
382
383    This section is a comment. do not overwrite or remove it.
384    Also, make sure to start the actual text at the margin.
385    =========================================================
386
387 * The LPM ``next_hop`` field is extended from 8 bits to 21 bits for IPv6
388   while keeping ABI compatibility.
389
390 * **Reworked rte_ring library**
391
392   The rte_ring library has been reworked and updated. The following changes
393   have been made to it:
394
395   * removed the build-time setting ``CONFIG_RTE_RING_SPLIT_PROD_CONS``
396   * removed the build-time setting ``CONFIG_RTE_LIBRTE_RING_DEBUG``
397   * removed the build-time setting ``CONFIG_RTE_RING_PAUSE_REP_COUNT``
398   * removed the function ``rte_ring_set_water_mark`` as part of a general
399     removal of watermarks support in the library.
400   * added an extra parameter to the burst/bulk enqueue functions to
401     return the number of free spaces in the ring after enqueue. This can
402     be used by an application to implement its own watermark functionality.
403   * added an extra parameter to the burst/bulk dequeue functions to return
404     the number elements remaining in the ring after dequeue.
405   * changed the return value of the enqueue and dequeue bulk functions to
406     match that of the burst equivalents. In all cases, ring functions which
407     operate on multiple packets now return the number of elements enqueued
408     or dequeued, as appropriate. The updated functions are:
409
410     - ``rte_ring_mp_enqueue_bulk``
411     - ``rte_ring_sp_enqueue_bulk``
412     - ``rte_ring_enqueue_bulk``
413     - ``rte_ring_mc_dequeue_bulk``
414     - ``rte_ring_sc_dequeue_bulk``
415     - ``rte_ring_dequeue_bulk``
416
417     NOTE: the above functions all have different parameters as well as
418     different return values, due to the other listed changes above. This
419     means that all instances of the functions in existing code will be
420     flagged by the compiler. The return value usage should be checked
421     while fixing the compiler error due to the extra parameter.
422
423 * **Reworked rte_vhost library**
424
425   The rte_vhost library has been reworked to make it generic enough so that
426   user could build other vhost-user drivers on top of it. To achieve that,
427   following changes have been made:
428
429   * The following vhost-pmd APIs are removed:
430
431     * ``rte_eth_vhost_feature_disable``
432     * ``rte_eth_vhost_feature_enable``
433     * ``rte_eth_vhost_feature_get``
434
435   * The vhost API ``rte_vhost_driver_callback_register(ops)`` is reworked to
436     be per vhost-user socket file. Thus, it takes one more argument:
437     ``rte_vhost_driver_callback_register(path, ops)``.
438
439   * The vhost API ``rte_vhost_get_queue_num`` is deprecated, instead,
440     ``rte_vhost_get_vring_num`` should be used.
441
442   * Following macros are removed in ``rte_virtio_net.h``
443
444     * ``VIRTIO_RXQ``
445     * ``VIRTIO_TXQ``
446     * ``VIRTIO_QNUM``
447
448   * Following net specific header files are removed in ``rte_virtio_net.h``
449
450     * ``linux/virtio_net.h``
451     * ``sys/socket.h``
452     * ``linux/if.h``
453     * ``rte_ether.h``
454
455   * The vhost struct ``virtio_net_device_ops`` is renamed to
456     ``vhost_device_ops``
457
458   * The vhost API ``rte_vhost_driver_session_start`` is removed. Instead,
459     ``rte_vhost_driver_start`` should be used, and no need to create a
460     thread to call it.
461
462   * The vhost public header file ``rte_virtio_net.h`` is renamed to
463     ``rte_vhost.h``
464
465 * **Reworked rte_ethdev library**
466
467   * Changed set of input parameters for ``rte_eth_xstats_get`` and ``rte_eth_xstats_get_names`` functions.
468
469   * Added new functions ``rte_eth_xstats_get_all`` and ``rte_eth_xstats_get_names_all`` to provide backward compatibility for
470     ``rte_eth_xstats_get`` and ``rte_eth_xstats_get_names``
471
472   * Added new function ``rte_eth_xstats_get_id_by_name``
473
474
475 ABI Changes
476 -----------
477
478 .. This section should contain ABI changes. Sample format:
479
480    * Add a short 1-2 sentence description of the ABI change that was announced
481      in the previous releases and made in this release. Use fixed width quotes
482      for ``rte_function_names`` or ``rte_struct_names``. Use the past tense.
483
484    This section is a comment. do not overwrite or remove it.
485    Also, make sure to start the actual text at the margin.
486    =========================================================
487
488 * **Reorganized the mbuf structure.**
489
490   The order and size of the fields in the ``mbuf`` structure changed,
491   as described in the `New Features`_ section.
492
493 * The ``rte_cryptodev_info.sym`` structure has new field ``max_nb_sessions_per_qp``
494   to support drivers which may support limited number of sessions per queue_pair.
495
496
497 Removed Items
498 -------------
499
500 .. This section should contain removed items in this release. Sample format:
501
502    * Add a short 1-2 sentence description of the removed item in the past
503      tense.
504
505    This section is a comment. do not overwrite or remove it.
506    Also, make sure to start the actual text at the margin.
507    =========================================================
508
509 * KNI vhost support removed.
510
511 * dpdk_qat sample application removed.
512
513 Shared Library Versions
514 -----------------------
515
516 .. Update any library version updated in this release and prepend with a ``+``
517    sign, like this:
518
519      librte_acl.so.2
520    + librte_cfgfile.so.2
521      librte_cmdline.so.2
522
523    This section is a comment. do not overwrite or remove it.
524    =========================================================
525
526
527 The libraries prepended with a plus sign were incremented in this version.
528
529 .. code-block:: diff
530
531      librte_acl.so.2
532    + librte_bitratestats.so.1
533      librte_cfgfile.so.2
534      librte_cmdline.so.2
535      librte_cryptodev.so.2
536      librte_distributor.so.1
537    + librte_eal.so.4
538      librte_ethdev.so.6
539      librte_hash.so.2
540      librte_ip_frag.so.1
541      librte_jobstats.so.1
542      librte_kni.so.2
543      librte_kvargs.so.1
544    + librte_latencystats.so.1
545      librte_lpm.so.2
546    + librte_mbuf.so.3
547      librte_mempool.so.2
548      librte_meter.so.1
549    + librte_metrics.so.1
550      librte_net.so.1
551      librte_pdump.so.1
552      librte_pipeline.so.3
553      librte_pmd_bond.so.1
554      librte_pmd_ring.so.2
555      librte_port.so.3
556      librte_power.so.1
557      librte_reorder.so.1
558      librte_ring.so.1
559      librte_sched.so.1
560      librte_table.so.2
561      librte_timer.so.1
562      librte_vhost.so.3
563
564
565 Tested Platforms
566 ----------------
567
568 .. This section should contain a list of platforms that were tested with this
569    release.
570
571    The format is:
572
573    * <vendor> platform with <vendor> <type of devices> combinations
574
575      * List of CPU
576      * List of OS
577      * List of devices
578      * Other relevant details...
579
580    This section is a comment. do not overwrite or remove it.
581    Also, make sure to start the actual text at the margin.
582    =========================================================