bus/pci: support hot-unplug handler
[dpdk.git] / doc / guides / rel_notes / release_17_08.rst
1 ..  SPDX-License-Identifier: BSD-3-Clause
2     Copyright 2017 The DPDK contributors
3
4 DPDK Release 17.08
5 ==================
6
7 .. **Read this first.**
8
9    The text in the sections 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:
14    ``LIKE_THIS``.
15
16    Build the docs and view the output file to ensure the changes are correct::
17
18       make doc-guides-html
19
20       xdg-open build/doc/html/guides/rel_notes/release_17_08.html
21
22
23 New Features
24 ------------
25
26 .. This section should contain new features added in this release. Sample
27    format:
28
29    * **Add a title in the past tense with a full stop.**
30
31      Add a short 1-2 sentence description in the past tense. The description
32      should be enough to allow someone scanning the release notes to
33      understand the new feature.
34
35      If the feature adds a lot of sub-features you can use a bullet list like
36      this:
37
38      * Added feature foo to do something.
39      * Enhanced feature bar to do something else.
40
41      Refer to the previous release notes for examples.
42
43      This section is a comment. do not overwrite or remove it.
44      Also, make sure to start the actual text at the margin.
45      =========================================================
46
47 * **Increase minimum x86 ISA version to SSE4.2.**
48
49   Starting with version 17.08, DPDK requires SSE4.2 to run on x86.
50   Previous versions required SSE3.
51
52 * **Added Service Core functionality.**
53
54   The service core functionality added to EAL allows DPDK to run services such
55   as software PMDs on lcores without the application manually running them. The
56   service core infrastructure allows flexibility of running multiple services
57   on the same service lcore, and provides the application with powerful APIs to
58   configure the mapping from service lcores to services.
59
60 * **Added Generic Receive Offload API.**
61
62   Added Generic Receive Offload (GRO) API support to reassemble TCP/IPv4
63   packets. The GRO API assumes all input packets have the correct
64   checksums. GRO API doesn't update checksums for merged packets. If
65   input packets are IP fragmented, the GRO API assumes they are complete
66   packets (i.e. with L4 headers).
67
68 * **Added Fail-Safe PMD**
69
70   Added the new Fail-Safe PMD. This virtual device allows applications to
71   support seamless hotplug of devices.
72   See the :doc:`/nics/fail_safe` guide for more details about this driver.
73
74 * **Added support for generic flow API (rte_flow) on igb NICs.**
75
76   This API provides a generic means of configuring hardware to match specific
77   ingress or egress traffic, altering its behavior and querying related counters
78   according to any number of user-defined rules.
79
80   Added generic flow API support for Ethernet, IPv4, UDP, TCP and RAW pattern
81   items with QUEUE actions. There are four types of filter support for this
82   feature on igb.
83
84 * **Added support for generic flow API (rte_flow) on enic.**
85
86   Added flow API support for outer Ethernet, VLAN, IPv4, IPv6, UDP, TCP, SCTP,
87   VxLAN and inner Ethernet, VLAN, IPv4, IPv6, UDP and TCP pattern items with
88   QUEUE, MARK, FLAG and VOID actions for ingress traffic.
89
90 * **Added support for Chelsio T6 family of adapters**
91
92   The CXGBE PMD was updated to run Chelsio T6 family of adapters.
93
94 * **Added latency and performance improvements for cxgbe**
95
96   the Tx and Rx path in cxgbe were reworked to improve performance. In
97   addition the latency was reduced for slow traffic.
98
99 * **Updated the bnxt PMD.**
100
101   Updated the bnxt PMD. The major enhancements include:
102
103   * Support MTU modification.
104   * Add support for LRO.
105   * Add support for VLAN filter and strip functionality.
106   * Additional enhancements to add support for more dev_ops.
107   * Added PMD specific APIs mainly to control VF from PF.
108   * Update HWRM version to 1.7.7
109
110 * **Added support for Rx interrupts on mlx4 driver.**
111
112   Rx queues can be now be armed with an interrupt which will trigger on the
113   next packet arrival.
114
115 * **Updated mlx5 driver.**
116
117   Updated the mlx5 driver including the following changes:
118
119   * Added vectorized Rx/Tx burst for x86.
120   * Added support for isolated mode from flow API.
121   * Reworked the flow drop action to implement in hardware classifier.
122   * Improved Rx interrupts management.
123
124 * **Updated szedata2 PMD.**
125
126   Added support for firmware with multiple Ethernet ports per physical port.
127
128 * **Updated dpaa2 PMD.**
129
130   Updated dpaa2 PMD. Major enhancements include:
131
132   * Added support for MAC Filter configuration.
133   * Added support for Segmented Buffers.
134   * Added support for VLAN filter and strip functionality.
135   * Additional enhancements to add support for more dev_ops.
136   * Optimized the packet receive path
137
138 * **Reorganized the symmetric crypto operation structure.**
139
140   The crypto operation (``rte_crypto_sym_op``) has been reorganized as follows:
141
142   * Removed the ``rte_crypto_sym_op_sess_type`` field.
143   * Replaced the pointer and physical address of IV with offset from the start
144     of the crypto operation.
145   * Moved length and offset of cipher IV to ``rte_crypto_cipher_xform``.
146   * Removed "Additional Authentication Data" (AAD) length.
147   * Removed digest length.
148   * Removed AAD pointer and physical address from ``auth`` structure.
149   * Added ``aead`` structure, containing parameters for AEAD algorithms.
150
151 * **Reorganized the crypto operation structure.**
152
153   The crypto operation (``rte_crypto_op``) has been reorganized as follows:
154
155   * Added the ``rte_crypto_op_sess_type`` field.
156   * The enumerations ``rte_crypto_op_status`` and ``rte_crypto_op_type``
157     have been modified to be ``uint8_t`` values.
158   * Removed the field ``opaque_data``.
159   * Pointer to ``rte_crypto_sym_op`` has been replaced with a zero length array.
160
161 * **Reorganized the crypto symmetric session structure.**
162
163   The crypto symmetric session structure (``rte_cryptodev_sym_session``) has
164   been reorganized as follows:
165
166   * The ``dev_id`` field has been removed.
167   * The ``driver_id`` field has been removed.
168   * The mempool pointer ``mp`` has been removed.
169   * Replaced ``private`` marker with array of pointers to private data sessions
170     ``sess_private_data``.
171
172 * **Updated cryptodev library.**
173
174   * Added AEAD algorithm specific functions and structures, so it is not
175     necessary to use a combination of cipher and authentication
176     structures anymore.
177   * Added helper functions for crypto device driver identification.
178   * Added support for multi-device sessions, so a single session can be
179     used in multiple drivers.
180   * Added functions to initialize and free individual driver private data
181     with the same session.
182
183 * **Updated dpaa2_sec crypto PMD.**
184
185   Added support for AES-GCM and AES-CTR.
186
187 * **Updated the AESNI MB PMD.**
188
189   The AESNI MB PMD has been updated with additional support for:
190
191   * 12-byte IV on AES Counter Mode, apart from the previous 16-byte IV.
192
193 * **Updated the AES-NI GCM PMD.**
194
195   The AES-NI GCM PMD was migrated from the ISA-L library to the Multi Buffer
196   library, as the latter library has Scatter Gather List support
197   now. The migration entailed adding additional support for 192-bit keys.
198
199 * **Updated the Cryptodev Scheduler PMD.**
200
201   Added a multicore based distribution mode, which distributes the enqueued
202   crypto operations among several slaves, running on different logical cores.
203
204 * **Added NXP DPAA2 Eventdev PMD.**
205
206   Added the new dpaa2 eventdev driver for NXP DPAA2 devices. See the
207   "Event Device Drivers" document for more details on this new driver.
208
209 * **Added dpdk-test-eventdev test application.**
210
211   The dpdk-test-eventdev tool is a Data Plane Development Kit (DPDK) application
212   that allows exercising various eventdev use cases.
213   This application has a generic framework to add new eventdev based test cases
214   to verify functionality and measure the performance parameters of DPDK
215   eventdev devices.
216
217
218 Known Issues
219 ------------
220
221 .. This section should contain new known issues in this release. Sample format:
222
223    * **Add title in present tense with full stop.**
224
225      Add a short 1-2 sentence description of the known issue in the present
226      tense. Add information on any known workarounds.
227
228    This section is a comment. do not overwrite or remove it.
229    Also, make sure to start the actual text at the margin.
230    =========================================================
231
232 * **Starting with version 17.08, libnuma is required to build DPDK.**
233
234
235 API Changes
236 -----------
237
238 .. This section should contain API changes. Sample format:
239
240    * Add a short 1-2 sentence description of the API change. Use fixed width
241      quotes for ``rte_function_names`` or ``rte_struct_names``. Use the past
242      tense.
243
244    This section is a comment. do not overwrite or remove it.
245    Also, make sure to start the actual text at the margin.
246    =========================================================
247
248 * **Modified the _rte_eth_dev_callback_process function in the ethdev library.**
249
250   The function ``_rte_eth_dev_callback_process()`` has been modified. The
251   return value has been changed from void to int and an extra parameter ``void
252   *ret_param`` has been added.
253
254 * **Moved bypass functions from the rte_ethdev library to ixgbe PMD**
255
256   * The following rte_ethdev library functions were removed:
257
258     * ``rte_eth_dev_bypass_event_show()``
259     * ``rte_eth_dev_bypass_event_store()``
260     * ``rte_eth_dev_bypass_init()``
261     * ``rte_eth_dev_bypass_state_set()``
262     * ``rte_eth_dev_bypass_state_show()``
263     * ``rte_eth_dev_bypass_ver_show()``
264     * ``rte_eth_dev_bypass_wd_reset()``
265     * ``rte_eth_dev_bypass_wd_timeout_show()``
266     * ``rte_eth_dev_wd_timeout_store()``
267
268   * The following ixgbe PMD functions were added:
269
270     * ``rte_pmd_ixgbe_bypass_event_show()``
271     * ``rte_pmd_ixgbe_bypass_event_store()``
272     * ``rte_pmd_ixgbe_bypass_init()``
273     * ``rte_pmd_ixgbe_bypass_state_set()``
274     * ``rte_pmd_ixgbe_bypass_state_show()``
275     * ``rte_pmd_ixgbe_bypass_ver_show()``
276     * ``rte_pmd_ixgbe_bypass_wd_reset()``
277     * ``rte_pmd_ixgbe_bypass_wd_timeout_show()``
278     * ``rte_pmd_ixgbe_bypass_wd_timeout_store()``
279
280 * **Reworked rte_cryptodev library.**
281
282   The rte_cryptodev library has been reworked and updated. The following changes
283   have been made to it:
284
285   * The crypto device type enumeration has been removed from cryptodev library.
286   * The function ``rte_crypto_count_devtype()`` has been removed, and replaced
287     by the new function ``rte_crypto_count_by_driver()``.
288   * Moved crypto device driver names definitions to the particular PMDs.
289     These names are not public anymore.
290   * The ``rte_cryptodev_configure()`` function does not create the session
291     mempool for the device anymore.
292   * The ``rte_cryptodev_queue_pair_attach_sym_session()`` and
293     ``rte_cryptodev_queue_pair_dettach_sym_session()`` functions require
294     the new parameter ``device id``.
295   * Parameters of ``rte_cryptodev_sym_session_create()`` were modified to
296     accept ``mempool``, instead of ``device id`` and ``rte_crypto_sym_xform``.
297   * Removed ``device id`` parameter from ``rte_cryptodev_sym_session_free()``.
298   * Added a new field ``session_pool`` to ``rte_cryptodev_queue_pair_setup()``.
299   * Removed ``aad_size`` parameter from
300     ``rte_cryptodev_sym_capability_check_auth()``.
301   * Added ``iv_size`` parameter to
302     ``rte_cryptodev_sym_capability_check_auth()``.
303   * Removed ``RTE_CRYPTO_OP_STATUS_ENQUEUED`` from enum
304     ``rte_crypto_op_status``.
305
306
307 ABI Changes
308 -----------
309
310 .. This section should contain ABI changes. Sample format:
311
312    * Add a short 1-2 sentence description of the ABI change that was announced
313      in the previous releases and made in this release. Use fixed width quotes
314      for ``rte_function_names`` or ``rte_struct_names``. Use the past tense.
315
316    This section is a comment. do not overwrite or remove it.
317    Also, make sure to start the actual text at the margin.
318    =========================================================
319
320 * Changed type of ``domain`` field in ``rte_pci_addr`` to ``uint32_t``
321   to follow the PCI standard.
322
323 * Added new ``rte_bus`` experimental APIs available as operators within the
324   ``rte_bus`` structure.
325
326 * Made ``rte_devargs`` structure internal device representation generic to
327   prepare for a bus-agnostic EAL.
328
329 * **Reorganized the crypto operation structures.**
330
331   Some fields have been modified in the ``rte_crypto_op`` and
332   ``rte_crypto_sym_op`` structures, as described in the `New Features`_
333   section.
334
335 * **Reorganized the crypto symmetric session structure.**
336
337   Some fields have been modified in the ``rte_cryptodev_sym_session``
338   structure, as described in the `New Features`_ section.
339
340 * **Reorganized the rte_crypto_sym_cipher_xform structure.**
341
342   * Added cipher IV length and offset parameters.
343   * Changed field size of key length from ``size_t`` to ``uint16_t``.
344
345 * **Reorganized the rte_crypto_sym_auth_xform structure.**
346
347   * Added authentication IV length and offset parameters.
348   * Changed field size of AAD length from ``uint32_t`` to ``uint16_t``.
349   * Changed field size of digest length from ``uint32_t`` to ``uint16_t``.
350   * Removed AAD length.
351   * Changed field size of key length from ``size_t`` to ``uint16_t``.
352
353 * Replaced ``dev_type`` enumeration with ``uint8_t`` ``driver_id`` in
354   ``rte_cryptodev_info`` and  ``rte_cryptodev`` structures.
355
356 * Removed ``session_mp`` from ``rte_cryptodev_config``.
357
358
359 Shared Library Versions
360 -----------------------
361
362 .. Update any library version updated in this release and prepend with a ``+``
363    sign, like this:
364
365      librte_acl.so.2
366    + librte_cfgfile.so.2
367      librte_cmdline.so.2
368
369    This section is a comment. do not overwrite or remove it.
370    =========================================================
371
372
373 The libraries prepended with a plus sign were incremented in this version.
374
375 .. code-block:: diff
376
377      librte_acl.so.2
378      librte_bitratestats.so.1
379      librte_cfgfile.so.2
380      librte_cmdline.so.2
381    + librte_cryptodev.so.3
382      librte_distributor.so.1
383    + librte_eal.so.5
384    + librte_ethdev.so.7
385    + librte_eventdev.so.2
386    + librte_gro.so.1
387      librte_hash.so.2
388      librte_ip_frag.so.1
389      librte_jobstats.so.1
390      librte_kni.so.2
391      librte_kvargs.so.1
392      librte_latencystats.so.1
393      librte_lpm.so.2
394      librte_mbuf.so.3
395      librte_mempool.so.2
396      librte_meter.so.1
397      librte_metrics.so.1
398      librte_net.so.1
399      librte_pdump.so.1
400      librte_pipeline.so.3
401      librte_pmd_bond.so.1
402      librte_pmd_ring.so.2
403      librte_port.so.3
404      librte_power.so.1
405      librte_reorder.so.1
406      librte_ring.so.1
407      librte_sched.so.1
408      librte_table.so.2
409      librte_timer.so.1
410      librte_vhost.so.3
411
412
413 Tested Platforms
414 ----------------
415
416 .. This section should contain a list of platforms that were tested with this
417    release.
418
419    The format is:
420
421    * <vendor> platform with <vendor> <type of devices> combinations
422
423      * List of CPU
424      * List of OS
425      * List of devices
426      * Other relevant details...
427
428    This section is a comment. do not overwrite or remove it.
429    Also, make sure to start the actual text at the margin.
430    =========================================================
431
432 * Intel(R) platforms with Mellanox(R) NICs combinations
433
434    * Platform details:
435
436      * Intel(R) Xeon(R) CPU E5-2697A v4 @ 2.60GHz
437      * Intel(R) Xeon(R) CPU E5-2697 v3 @ 2.60GHz
438      * Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz
439      * Intel(R) Xeon(R) CPU E5-2640 @ 2.50GHz
440
441    * OS:
442
443      * Red Hat Enterprise Linux Server release 7.3 (Maipo)
444      * Red Hat Enterprise Linux Server release 7.2 (Maipo)
445      * Ubuntu 16.10
446      * Ubuntu 16.04
447      * Ubuntu 14.04
448
449    * MLNX_OFED: 4.1-1.0.2.0
450
451    * NICs:
452
453      * Mellanox(R) ConnectX(R)-3 Pro 40G MCX354A-FCC_Ax (2x40G)
454
455        * Host interface: PCI Express 3.0 x8
456        * Device ID: 15b3:1007
457        * Firmware version: 2.40.5030
458
459      * Mellanox(R) ConnectX(R)-4 10G MCX4111A-XCAT (1x10G)
460
461        * Host interface: PCI Express 3.0 x8
462        * Device ID: 15b3:1013
463        * Firmware version: 12.18.2000
464
465      * Mellanox(R) ConnectX(R)-4 10G MCX4121A-XCAT (2x10G)
466
467        * Host interface: PCI Express 3.0 x8
468        * Device ID: 15b3:1013
469        * Firmware version: 12.18.2000
470
471      * Mellanox(R) ConnectX(R)-4 25G MCX4111A-ACAT (1x25G)
472
473        * Host interface: PCI Express 3.0 x8
474        * Device ID: 15b3:1013
475        * Firmware version: 12.18.2000
476
477      * Mellanox(R) ConnectX(R)-4 25G MCX4121A-ACAT (2x25G)
478
479        * Host interface: PCI Express 3.0 x8
480        * Device ID: 15b3:1013
481        * Firmware version: 12.18.2000
482
483      * Mellanox(R) ConnectX(R)-4 40G MCX4131A-BCAT/MCX413A-BCAT (1x40G)
484
485        * Host interface: PCI Express 3.0 x8
486        * Device ID: 15b3:1013
487        * Firmware version: 12.18.2000
488
489      * Mellanox(R) ConnectX(R)-4 40G MCX415A-BCAT (1x40G)
490
491        * Host interface: PCI Express 3.0 x16
492        * Device ID: 15b3:1013
493        * Firmware version: 12.18.2000
494
495      * Mellanox(R) ConnectX(R)-4 50G MCX4131A-GCAT/MCX413A-GCAT (1x50G)
496
497        * Host interface: PCI Express 3.0 x8
498        * Device ID: 15b3:1013
499        * Firmware version: 12.18.2000
500
501      * Mellanox(R) ConnectX(R)-4 50G MCX414A-BCAT (2x50G)
502
503        * Host interface: PCI Express 3.0 x8
504        * Device ID: 15b3:1013
505        * Firmware version: 12.18.2000
506
507      * Mellanox(R) ConnectX(R)-4 50G MCX415A-GCAT/MCX416A-BCAT/MCX416A-GCAT
508        (2x50G)
509
510        * Host interface: PCI Express 3.0 x16
511        * Device ID: 15b3:1013
512        * Firmware version: 12.18.2000
513
514      * Mellanox(R) ConnectX(R)-4 50G MCX415A-CCAT (1x100G)
515
516        * Host interface: PCI Express 3.0 x16
517        * Device ID: 15b3:1013
518        * Firmware version: 12.18.2000
519
520      * Mellanox(R) ConnectX(R)-4 100G MCX416A-CCAT (2x100G)
521
522        * Host interface: PCI Express 3.0 x16
523        * Device ID: 15b3:1013
524        * Firmware version: 12.18.2000
525
526      * Mellanox(R) ConnectX(R)-4 Lx 10G MCX4121A-XCAT (2x10G)
527
528        * Host interface: PCI Express 3.0 x8
529        * Device ID: 15b3:1015
530        * Firmware version: 14.18.2000
531
532      * Mellanox(R) ConnectX(R)-4 Lx 25G MCX4121A-ACAT (2x25G)
533
534        * Host interface: PCI Express 3.0 x8
535        * Device ID: 15b3:1015
536        * Firmware version: 14.18.2000
537
538      * Mellanox(R) ConnectX(R)-5 100G MCX556A-ECAT (2x100G)
539
540        * Host interface: PCI Express 3.0 x16
541        * Device ID: 15b3:1017
542        * Firmware version: 16.19.1200
543
544      * Mellanox(R) ConnectX-5 Ex EN 100G MCX516A-CDAT (2x100G)
545
546        * Host interface: PCI Express 4.0 x16
547        * Device ID: 15b3:1019
548        * Firmware version: 16.19.1200
549
550 * Intel(R) platforms with Intel(R) NICs combinations
551
552    * CPU
553
554      * Intel(R) Atom(TM) CPU C2758 @ 2.40GHz
555      * Intel(R) Xeon(R) CPU D-1540 @ 2.00GHz
556      * Intel(R) Xeon(R) CPU D-1541 @ 2.10GHz
557      * Intel(R) Xeon(R) CPU E5-4667 v3 @ 2.00GHz
558      * Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz
559      * Intel(R) Xeon(R) CPU E5-2699 v3 @ 2.30GHz
560      * Intel(R) Xeon(R) CPU E5-2695 v4 @ 2.10GHz
561      * Intel(R) Xeon(R) CPU E5-2658 v2 @ 2.40GHz
562      * Intel(R) Xeon(R) CPU E5-2658 v3 @ 2.20GHz
563
564    * OS:
565
566      * CentOS 7.2
567      * Fedora 25
568      * FreeBSD 11
569      * Red Hat Enterprise Linux Server release 7.3
570      * SUSE Enterprise Linux 12
571      * Wind River Linux 8
572      * Ubuntu 16.04
573      * Ubuntu 16.10
574
575    * NICs:
576
577      * Intel(R) 82599ES 10 Gigabit Ethernet Controller
578
579        * Firmware version: 0x61bf0001
580        * Device id (pf/vf): 8086:10fb / 8086:10ed
581        * Driver version: 4.0.1-k (ixgbe)
582
583      * Intel(R) Corporation Ethernet Connection X552/X557-AT 10GBASE-T
584
585        * Firmware version: 0x800001cf
586        * Device id (pf/vf): 8086:15ad / 8086:15a8
587        * Driver version: 4.2.5 (ixgbe)
588
589      * Intel(R) Ethernet Converged Network Adapter X710-DA4 (4x10G)
590
591        * Firmware version: 6.01 0x80003205
592        * Device id (pf/vf): 8086:1572 / 8086:154c
593        * Driver version: 2.0.19 (i40e)
594
595      * Intel(R) Ethernet Converged Network Adapter X710-DA2 (2x10G)
596
597        * Firmware version: 6.01 0x80003204
598        * Device id (pf/vf): 8086:1572 / 8086:154c
599        * Driver version: 2.0.19 (i40e)
600
601      * Intel(R) Ethernet Converged Network Adapter XXV710-DA2 (2x25G)
602
603        * Firmware version: 6.01 0x80003221
604        * Device id (pf/vf): 8086:158b
605        * Driver version: 2.0.19 (i40e)
606
607      * Intel(R) Ethernet Converged Network Adapter XL710-QDA2 (2X40G)
608
609        * Firmware version: 6.01 0x8000321c
610        * Device id (pf/vf): 8086:1583 / 8086:154c
611        * Driver version: 2.0.19 (i40e)
612
613      * Intel(R) Corporation I350 Gigabit Network Connection
614
615        * Firmware version: 1.48, 0x800006e7
616        * Device id (pf/vf): 8086:1521 / 8086:1520
617        * Driver version: 5.2.13-k (igb)