doc: add virtio guest announce support to release notes
[dpdk.git] / doc / guides / rel_notes / release_18_02.rst
1 DPDK Release 18.02
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_18_02.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 * **Add function to allow releasing internal EAL resources on exit**
45
46   During ``rte_eal_init()`` EAL allocates memory from hugepages to enable its
47   core libraries to perform their tasks. The ``rte_eal_cleanup()`` function
48   releases these resources, ensuring that no hugepage memory is leaked. It is
49   expected that all DPDK applications call ``rte_eal_cleanup()`` before
50   exiting. Not calling this function could result in leaking hugepages, leading
51   to failure during initialization of secondary processes.
52
53 * **Added the ixgbe ethernet driver to support RSS with flow API.**
54
55   Rte_flow actually defined to include RSS, but till now, RSS is out of
56   rte_flow. This patch is to support igb and ixgbe NIC with existing RSS
57   configuration using rte_flow API.
58
59 * **Add MAC loopback support for i40e.**
60
61   Add MAC loopback support for i40e in order to support test task asked by
62   users. According to the device configuration, it will setup TX->RX loopback
63   link or not.
64
65 * **Add the support of run time determination of number of queues per i40e VF**
66
67   The number of queue per VF is determined by its host PF. If the PCI address
68   of an i40e PF is aaaa:bb.cc, the number of queues per VF can be configured
69   with EAL parameter like -w aaaa:bb.cc,queue-num-per-vf=n. The value n can be
70   1, 2, 4, 8 or 16. If no such parameter is configured, the number of queues
71   per VF is 4 by default.
72
73 * **Added the i40e ethernet driver to support RSS with flow API.**
74
75   Rte_flow actually defined to include RSS, but till now, RSS is out of
76   rte_flow. This patch is to support i40e NIC with existing RSS
77   configuration using rte_flow API.It also enable queue region configuration
78   using flow API for i40e.
79
80 * **Updated i40e driver to support PPPoE/PPPoL2TP.**
81
82   Updated i40e PMD to support PPPoE/PPPoL2TP with PPPoE/PPPoL2TP supporting
83   profiles which can be programmed by dynamic device personalization (DDP)
84   process.
85
86 * **Updated mlx5 driver.**
87
88   Updated the mlx5 driver including the following changes:
89
90   * Enabled compilation as a plugin, thus removed the mandatory dependency with rdma-core.
91     With the special compilation, the rdma-core libraries will be loaded only in case
92     Mellanox device is being used. For binaries creation the PMD can be enabled, still not
93     requiring from every end user to install rdma-core.
94   * Improved multi-segment packet performance.
95   * Changed driver name to use the PCI address to be compatible with OVS-DPDK APIs.
96   * Extended statistics for physical port packet/byte counters.
97   * Converted to the new offloads API.
98   * Supported device removal check operation.
99
100 * **Updated mlx4 driver.**
101
102   Updated the mlx4 driver including the following changes:
103
104   * Enabled compilation as a plugin, thus removed the mandatory dependency with rdma-core.
105     With the special compilation, the rdma-core libraries will be loaded only in case
106     Mellanox device is being used. For binaries creation the PMD can be enabled, still not
107     requiring from every end user to install rdma-core.
108   * Improved data path performance.
109   * Converted to the new offloads API.
110   * Supported device removal check operation.
111
112 * **Added NVGRE and UDP tunnels support in Solarflare network PMD.**
113
114   Added support for NVGRE, VXLAN and GENEVE tunnels.
115
116   * Added support for UDP tunnel ports configuration.
117   * Added tunneled packets classification.
118   * Added inner checksum offload.
119
120 * **Added the igb ethernet driver to support RSS with flow API.**
121
122   Rte_flow actually defined to include RSS, but till now, RSS is out of
123   rte_flow. This patch is to support igb NIC with existing RSS configuration
124   using rte_flow API.
125
126 * **Add AVF (Adaptive Virtual Function) net PMD.**
127
128   A new net PMD has been added, which supports IntelĀ® Ethernet Adaptive
129   Virtual Function (AVF) with features list below:
130
131   * Basic Rx/Tx burst
132   * SSE vectorized Rx/Tx burst
133   * Promiscuous mode
134   * MAC/VLAN offload
135   * Checksum offload
136   * TSO offload
137   * Jumbo frame and MTU setting
138   * RSS configuration
139   * stats
140   * Rx/Tx descriptor status
141   * Link status update/event
142
143 * **Add feature supports for live migration from vhost-net to vhost-user.**
144
145   To make live migration from vhost-net to vhost-user possible, added
146   feature supports for vhost-user. The features include:
147
148   * VIRTIO_F_ANY_LAYOUT
149   * VIRTIO_F_EVENT_IDX
150   * VIRTIO_NET_F_GUEST_ECN, VIRTIO_NET_F_HOST_ECN
151   * VIRTIO_NET_F_GUEST_UFO, VIRTIO_NET_F_HOST_UFO
152   * VIRTIO_NET_F_GSO
153
154 * **Added VIRTIO_NET_F_GUEST_ANNOUNCE feature support in virtio pmd.**
155
156   In scenario where the vhost backend doesn't have the ability to generate RARP
157   packet, the VM running virtio pmd can still be live migrated if
158   VIRTIO_NET_F_GUEST_ANNOUNCE feature is negotiated.
159
160 * **Updated the AESNI-MB PMD.**
161
162   The AESNI-MB PMD has been updated with additional support for:
163
164   * AES-CCM algorithm.
165
166 * **Updated the DPAA_SEC crypto driver to support rte_security.**
167
168   Updated the ``dpaa_sec`` crypto PMD to support ``rte_security`` lookaside
169   protocol offload for IPSec.
170
171 * **Added Wireless Base Band Device (bbdev) abstraction.**
172
173   The Wireless Baseband Device library is an acceleration abstraction
174   framework for 3gpp Layer 1 processing functions that provides a common
175   programming interface for seamless opeartion on integrated or discrete
176   hardware accelerators or using optimized software libraries for signal
177   processing.
178   The current release only supports 3GPP CRC, Turbo Coding and Rate
179   Matching operations, as specified in 3GPP TS 36.212.
180
181   See the :doc:`../prog_guide/bbdev` programmer's guide for more details.
182
183 * **Added New eventdev OPDL PMD**
184
185   The OPDL (Ordered Packet Distribution Library) eventdev is a specific
186   implementation of the eventdev API. It is particularly suited to packet
187   processing workloads that have high throughput and low latency requirements.
188   All packets follow the same path through the device. The order in which
189   packets  follow is determinted by the order in which queues are set up.
190   Events are left on the ring until they are transmitted. As a result packets
191   do not go out of order.
192
193   With this change, application can use OPDL PMD by eventdev api.
194
195 * **Added New pipeline use case for dpdk-test-eventdev application**
196
197   The pipeline case can be used to simulate various stages in a real world
198   application from packet receive to transmit while maintaining the packet
199   ordering also measure the performance of the event device across the stages
200   of the pipeline.
201
202   The pipeline use case has been made generic to work will all the event
203   devices based on the capabilities.
204
205 * **Updated Eventdev Sample application to support event devices based on capability**
206
207   Updated Eventdev pipeline sample application to support various types of pipelines
208   based on the capabilities of the attached event and ethernet devices. Also,
209   renamed the application from SW PMD specific ``eventdev_pipeline_sw_pmd``
210   to PMD agnostic ``eventdev_pipeline``.
211
212 * **Added Rawdev, a generic device support library.**
213
214   Rawdev library provides support for integrating any generic device type with
215   DPDK framework. Generic devices are those which do not have a pre-defined
216   type within DPDK, for example, ethernet, crypto, event etc.
217   A set of northbound APIs have been defined which encompass a generic set of
218   operations by allowing applications to interact with device using opaque
219   structures/buffers. Also, southbound APIs provide APIs for integrating device
220   either as as part of a physical bus (PCI, FSLMC etc) or through ``vdev``.
221
222   See the :doc:`../prog_guide/rawdev` programmer's guide for more details.
223
224 * **Added new multi-process communication channel**
225
226   Added a generic channel in EAL for multi-process (primary/secondary) communication.
227   Consumers of this channel need to register an action with an action name to response
228   a message received; the actions will be identified by the action name and executed
229   in the context of a new dedicated thread for this channel. The list of new APIs:
230
231   * ``rte_mp_register`` and ``rte_mp_unregister`` are for action (un)registration.
232   * ``rte_mp_sendmsg`` is for sending a message without blocking for a response.
233   * ``rte_mp_request`` is for sending a request message and will block until
234     it gets a reply message which is sent from the peer by ``rte_mp_reply``.
235
236 * **Add GRO support for VxLAN-tunneled packets.**
237
238   Add GRO support for VxLAN-tunneled packets. Supported VxLAN packets
239   must contain an outer IPv4 header and inner TCP/IPv4 headers. VxLAN
240   GRO doesn't check if input packets have correct checksums and doesn't
241   update checksums for output packets. Additionally, it assumes the
242   packets are complete (i.e., MF==0 && frag_off==0), when IP
243   fragmentation is possible (i.e., DF==0).
244
245 * **Increased default Rx and Tx ring size in sample applications.**
246
247   Increased the default ``RX_RING_SIZE`` and ``TX_RING_SIZE`` to 1024 entries
248   in testpmd and the sample applications to give better performance in the
249   general case. The user should experiment with various Rx and Tx ring sizes
250   for their specific application to get best performance.
251
252 * **Added new DPDK build system using the tools "meson" and "ninja" [EXPERIMENTAL]**
253
254   Added in support for building DPDK using ``meson`` and ``ninja``, which gives
255   additional features, such as automatic build-time configuration, over the
256   current build system using ``make``. For instructions on how to do a DPDK build
257   using the new system, see the instructions in ``doc/build-sdk-meson.txt``.
258
259 .. note::
260
261     This new build system support is incomplete at this point and is added
262     as experimental in this release. The existing build system using ``make``
263     is unaffected by these changes, and can continue to be used for this
264     and subsequent releases until such time as it's deprecation is announced.
265
266
267 API Changes
268 -----------
269
270 .. This section should contain API changes. Sample format:
271
272    * Add a short 1-2 sentence description of the API change. Use fixed width
273      quotes for ``rte_function_names`` or ``rte_struct_names``. Use the past
274      tense.
275
276    This section is a comment. do not overwrite or remove it.
277    Also, make sure to start the actual text at the margin.
278    =========================================================
279
280
281 ABI Changes
282 -----------
283
284 .. This section should contain ABI changes. Sample format:
285
286    * Add a short 1-2 sentence description of the ABI change that was announced
287      in the previous releases and made in this release. Use fixed width quotes
288      for ``rte_function_names`` or ``rte_struct_names``. Use the past tense.
289
290    This section is a comment. do not overwrite or remove it.
291    Also, make sure to start the actual text at the margin.
292    =========================================================
293
294
295 Removed Items
296 -------------
297
298 .. This section should contain removed items in this release. Sample format:
299
300    * Add a short 1-2 sentence description of the removed item in the past
301      tense.
302
303    This section is a comment. do not overwrite or remove it.
304    Also, make sure to start the actual text at the margin.
305    =========================================================
306
307
308 Known Issues
309 ------------
310
311 .. This section should contain new known issues in this release. Sample format:
312
313    * **Add title in present tense with full stop.**
314
315      Add a short 1-2 sentence description of the known issue in the present
316      tense. Add information on any known workarounds.
317
318    This section is a comment. do not overwrite or remove it.
319    Also, make sure to start the actual text at the margin.
320    =========================================================
321
322
323 Shared Library Versions
324 -----------------------
325
326 .. Update any library version updated in this release and prepend with a ``+``
327    sign, like this:
328
329      librte_acl.so.2
330    + librte_cfgfile.so.2
331      librte_cmdline.so.2
332
333    This section is a comment. do not overwrite or remove it.
334    =========================================================
335
336
337 The libraries prepended with a plus sign were incremented in this version.
338
339 .. code-block:: diff
340
341      librte_acl.so.2
342    + librte_bbdev.so.1
343      librte_bitratestats.so.2
344      librte_bus_dpaa.so.1
345      librte_bus_fslmc.so.1
346      librte_bus_pci.so.1
347      librte_bus_vdev.so.1
348      librte_cfgfile.so.2
349      librte_cmdline.so.2
350      librte_cryptodev.so.4
351      librte_distributor.so.1
352      librte_eal.so.6
353      librte_ethdev.so.8
354      librte_eventdev.so.3
355      librte_flow_classify.so.1
356      librte_gro.so.1
357      librte_gso.so.1
358      librte_hash.so.2
359      librte_ip_frag.so.1
360      librte_jobstats.so.1
361      librte_kni.so.2
362      librte_kvargs.so.1
363      librte_latencystats.so.1
364      librte_lpm.so.2
365      librte_mbuf.so.3
366      librte_mempool.so.3
367      librte_meter.so.1
368      librte_metrics.so.1
369      librte_net.so.1
370      librte_pci.so.1
371      librte_pdump.so.2
372      librte_pipeline.so.3
373      librte_pmd_bnxt.so.2
374      librte_pmd_bond.so.2
375      librte_pmd_i40e.so.2
376      librte_pmd_ixgbe.so.2
377      librte_pmd_ring.so.2
378      librte_pmd_softnic.so.1
379      librte_pmd_vhost.so.2
380      librte_port.so.3
381      librte_power.so.1
382    + librte_rawdev.so.1
383      librte_reorder.so.1
384      librte_ring.so.1
385      librte_sched.so.1
386      librte_security.so.1
387      librte_table.so.3
388      librte_timer.so.1
389      librte_vhost.so.3
390
391
392
393 Tested Platforms
394 ----------------
395
396 .. This section should contain a list of platforms that were tested with this
397    release.
398
399    The format is:
400
401    * <vendor> platform with <vendor> <type of devices> combinations
402
403      * List of CPU
404      * List of OS
405      * List of devices
406      * Other relevant details...
407
408    This section is a comment. do not overwrite or remove it.
409    Also, make sure to start the actual text at the margin.
410    =========================================================
411
412 * Intel(R) platforms with Intel(R) NICs combinations
413
414    * CPU
415
416      * Intel(R) Atom(TM) CPU C2758 @ 2.40GHz
417      * Intel(R) Xeon(R) CPU D-1540 @ 2.00GHz
418      * Intel(R) Xeon(R) CPU D-1541 @ 2.10GHz
419      * Intel(R) Xeon(R) CPU E5-4667 v3 @ 2.00GHz
420      * Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz
421      * Intel(R) Xeon(R) CPU E5-2699 v4 @ 2.20GHz
422      * Intel(R) Xeon(R) CPU E5-2695 v4 @ 2.10GHz
423      * Intel(R) Xeon(R) CPU E5-2658 v2 @ 2.40GHz
424      * Intel(R) Xeon(R) CPU E5-2658 v3 @ 2.20GHz
425      * Intel(R) Xeon(R) Platinum 8180 CPU @ 2.50GHz
426
427    * OS:
428
429      * CentOS 7.2
430      * Fedora 25
431      * Fedora 26
432      * Fedora 27
433      * FreeBSD 11
434      * Red Hat Enterprise Linux Server release 7.3
435      * SUSE Enterprise Linux 12
436      * Wind River Linux 8
437      * Ubantu 14.04
438      * Ubuntu 16.04
439      * Ubuntu 16.10
440      * Ubantu 17.10
441
442    * NICs:
443
444      * Intel(R) 82599ES 10 Gigabit Ethernet Controller
445
446        * Firmware version: 0x61bf0001
447        * Device id (pf/vf): 8086:10fb / 8086:10ed
448        * Driver version: 5.2.3 (ixgbe)
449
450      * Intel(R) Corporation Ethernet Connection X552/X557-AT 10GBASE-T
451
452        * Firmware version: 0x800003e7
453        * Device id (pf/vf): 8086:15ad / 8086:15a8
454        * Driver version: 4.4.6 (ixgbe)
455
456      * Intel(R) Ethernet Converged Network Adapter X710-DA4 (4x10G)
457
458        * Firmware version: 6.01 0x80003221
459        * Device id (pf/vf): 8086:1572 / 8086:154c
460        * Driver version: 2.4.3 (i40e)
461
462      * Intel Corporation Ethernet Connection X722 for 10GBASE-T
463
464        * firmware-version: 6.01 0x80003221
465        * Device id: 8086:37d2 / 8086:154c
466        * Driver version: 2.4.3 (i40e)
467
468      * Intel(R) Ethernet Converged Network Adapter XXV710-DA2 (2x25G)
469
470        * Firmware version: 6.01 0x80003221
471        * Device id (pf/vf): 8086:158b / 8086:154c
472        * Driver version: 2.4.3 (i40e)
473
474      * Intel(R) Ethernet Converged Network Adapter XL710-QDA2 (2X40G)
475
476        * Firmware version: 6.01 0x8000321c
477        * Device id (pf/vf): 8086:1583 / 8086:154c
478        * Driver version: 2.4.3 (i40e)
479
480      * Intel(R) Corporation I350 Gigabit Network Connection
481
482        * Firmware version: 1.63, 0x80000dda
483        * Device id (pf/vf): 8086:1521 / 8086:1520
484        * Driver version: 5.3.0-k (igb)
485
486 * Intel(R) platforms with Mellanox(R) NICs combinations
487
488    * CPU:
489
490      * Intel(R) Xeon(R) CPU E5-2697A v4 @ 2.60GHz
491      * Intel(R) Xeon(R) CPU E5-2697 v3 @ 2.60GHz
492      * Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz
493      * Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20GHz
494      * Intel(R) Xeon(R) CPU E5-2640 @ 2.50GHz
495      * Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
496
497    * OS:
498
499      * Red Hat Enterprise Linux Server release 7.5 Beta (Maipo)
500      * Red Hat Enterprise Linux Server release 7.4 (Maipo)
501      * Red Hat Enterprise Linux Server release 7.3 (Maipo)
502      * Red Hat Enterprise Linux Server release 7.2 (Maipo)
503      * Ubuntu 17.10
504      * Ubuntu 16.10
505      * Ubuntu 16.04
506
507    * MLNX_OFED: 4.2-1.0.0.0
508    * MLNX_OFED: 4.3-0.1.6.0
509
510    * NICs:
511
512      * Mellanox(R) ConnectX(R)-3 Pro 40G MCX354A-FCC_Ax (2x40G)
513
514        * Host interface: PCI Express 3.0 x8
515        * Device ID: 15b3:1007
516        * Firmware version: 2.42.5000
517
518      * Mellanox(R) ConnectX(R)-4 10G MCX4111A-XCAT (1x10G)
519
520        * Host interface: PCI Express 3.0 x8
521        * Device ID: 15b3:1013
522        * Firmware version: 12.21.1000 and above
523
524      * Mellanox(R) ConnectX(R)-4 10G MCX4121A-XCAT (2x10G)
525
526        * Host interface: PCI Express 3.0 x8
527        * Device ID: 15b3:1013
528        * Firmware version: 12.21.1000 and above
529
530      * Mellanox(R) ConnectX(R)-4 25G MCX4111A-ACAT (1x25G)
531
532        * Host interface: PCI Express 3.0 x8
533        * Device ID: 15b3:1013
534        * Firmware version: 12.21.1000 and above
535
536      * Mellanox(R) ConnectX(R)-4 25G MCX4121A-ACAT (2x25G)
537
538        * Host interface: PCI Express 3.0 x8
539        * Device ID: 15b3:1013
540        * Firmware version: 12.21.1000 and above
541
542      * Mellanox(R) ConnectX(R)-4 40G MCX4131A-BCAT/MCX413A-BCAT (1x40G)
543
544        * Host interface: PCI Express 3.0 x8
545        * Device ID: 15b3:1013
546        * Firmware version: 12.21.1000 and above
547
548      * Mellanox(R) ConnectX(R)-4 40G MCX415A-BCAT (1x40G)
549
550        * Host interface: PCI Express 3.0 x16
551        * Device ID: 15b3:1013
552        * Firmware version: 12.21.1000 and above
553
554      * Mellanox(R) ConnectX(R)-4 50G MCX4131A-GCAT/MCX413A-GCAT (1x50G)
555
556        * Host interface: PCI Express 3.0 x8
557        * Device ID: 15b3:1013
558        * Firmware version: 12.21.1000 and above
559
560      * Mellanox(R) ConnectX(R)-4 50G MCX414A-BCAT (2x50G)
561
562        * Host interface: PCI Express 3.0 x8
563        * Device ID: 15b3:1013
564        * Firmware version: 12.21.1000 and above
565
566      * Mellanox(R) ConnectX(R)-4 50G MCX415A-GCAT/MCX416A-BCAT/MCX416A-GCAT (2x50G)
567
568        * Host interface: PCI Express 3.0 x16
569        * Device ID: 15b3:1013
570        * Firmware version: 12.21.1000 and above
571        * Firmware version: 12.21.1000 and above
572
573      * Mellanox(R) ConnectX(R)-4 50G MCX415A-CCAT (1x100G)
574
575        * Host interface: PCI Express 3.0 x16
576        * Device ID: 15b3:1013
577        * Firmware version: 12.21.1000 and above
578
579      * Mellanox(R) ConnectX(R)-4 100G MCX416A-CCAT (2x100G)
580
581        * Host interface: PCI Express 3.0 x16
582        * Device ID: 15b3:1013
583        * Firmware version: 12.21.1000 and above
584
585      * Mellanox(R) ConnectX(R)-4 Lx 10G MCX4121A-XCAT (2x10G)
586
587        * Host interface: PCI Express 3.0 x8
588        * Device ID: 15b3:1015
589        * Firmware version: 14.21.1000 and above
590
591      * Mellanox(R) ConnectX(R)-4 Lx 25G MCX4121A-ACAT (2x25G)
592
593        * Host interface: PCI Express 3.0 x8
594        * Device ID: 15b3:1015
595        * Firmware version: 14.21.1000 and above
596
597      * Mellanox(R) ConnectX(R)-5 100G MCX556A-ECAT (2x100G)
598
599        * Host interface: PCI Express 3.0 x16
600        * Device ID: 15b3:1017
601        * Firmware version: 16.21.1000 and above
602
603      * Mellanox(R) ConnectX-5 Ex EN 100G MCX516A-CDAT (2x100G)
604
605        * Host interface: PCI Express 4.0 x16
606        * Device ID: 15b3:1019
607        * Firmware version: 16.21.1000 and above
608
609 * ARM platforms with Mellanox(R) NICs combinations
610
611    * CPU:
612
613      * Qualcomm ARM 1.1 2500MHz
614
615    * OS:
616
617      * Ubuntu 16.04
618
619    * MLNX_OFED: 4.2-1.0.0.0
620
621    * NICs:
622
623      * Mellanox(R) ConnectX(R)-4 Lx 25G MCX4121A-ACAT (2x25G)
624
625        * Host interface: PCI Express 3.0 x8
626        * Device ID: 15b3:1015
627        * Firmware version: 14.21.1000
628
629      * Mellanox(R) ConnectX(R)-5 100G MCX556A-ECAT (2x100G)
630
631        * Host interface: PCI Express 3.0 x16
632        * Device ID: 15b3:1017
633        * Firmware version: 16.21.1000