f93141b57f89047f47826bab03e8ae2cdfa561f1
[dpdk.git] / doc / guides / rel_notes / release_18_05.rst
1 DPDK Release 18.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_18_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 * **Added bucket mempool driver.**
45
46   Added bucket mempool driver which provides a way to allocate contiguous
47   block of objects.
48   Number of objects in the block depends on how many objects fit in
49   RTE_DRIVER_MEMPOOL_BUCKET_SIZE_KB memory chunk which is build time option.
50   The number may be obtained using rte_mempool_ops_get_info() API.
51   Contiguous blocks may be allocated using rte_mempool_get_contig_blocks() API.
52
53 * **Added PMD-recommended Tx and Rx parameters**
54
55   Applications can now query drivers for device-tuned values of
56   ring sizes, burst sizes, and number of queues.
57
58 * **Added RSS hash and key update to CXGBE PMD.**
59
60   Support to update RSS hash and key has been added to CXGBE PMD.
61
62 * **Added CXGBE VF PMD.**
63
64   CXGBE VF Poll Mode Driver has been added to run DPDK over Chelsio
65   T5/T6 NIC VF instances.
66
67 * **Updated Solarflare network PMD.**
68
69   Updated the sfc_efx driver including the following changes:
70
71   * Added support for Solarflare XtremeScale X2xxx family adapters.
72   * Added support for NVGRE, VXLAN and GENEVE filters in flow API.
73   * Added support for DROP action in flow API.
74
75 * **Added Ethernet poll mode driver for AMD XGBE devices.**
76
77   Added the new ``axgbe`` ethernet poll mode driver for AMD XGBE devices.
78   See the :doc:`../nics/axgbe` nic driver guide for more details on this
79   new driver.
80
81 * **Updated szedata2 PMD.**
82
83   Added support for new NFB-200G2QL card.
84
85 * **Added support for Broadcom NetXtreme-S (BCM58800) family of controllers (aka Stingray)**
86
87   The BCM58800 devices feature a NetXtreme E-Series advanced network controller, a high-performance
88   ARM CPU block, PCI Express (PCIe) Gen3 interfaces, key accelerators for compute offload and a high-
89   speed memory subsystem including L3 cache and DDR4 interfaces, all interconnected by a coherent
90   Network-on-chip (NOC) fabric.
91
92   The ARM CPU subsystem features eight ARMv8 Cortex-A72 CPUs at 3.0 GHz, arranged in a multi-cluster
93   configuration.
94
95 * **Added support for virtio-user server mode.**
96   In a container environment if the vhost-user backend restarts, there's no way
97   for it to reconnect to virtio-user. To address this, support for server mode
98   is added. In this mode the socket file is created by virtio-user, which the
99   backend connects to. This means that if the backend restarts, it can reconnect
100   to virtio-user and continue communications.
101
102 * **Added crypto workload support to vhost library.**
103
104   New APIs are introduced in vhost library to enable virtio crypto support
105   including session creation/deletion handling and translating virtio-crypto
106   request into DPDK crypto operations. A sample application is also introduced.
107
108 * **Added virtio crypto PMD.**
109
110   Added a new poll mode driver for virtio crypto devices, which provides
111   AES-CBC ciphering and AES-CBC with HMAC-SHA1 algorithm-chaining. See the
112   :doc:`../cryptodevs/virtio` crypto driver guide for more details on
113   this new driver.
114
115 * **Added AMD CCP Crypto PMD.**
116
117   Added the new ``ccp`` crypto driver for AMD CCP devices. See the
118   :doc:`../cryptodevs/ccp` crypto driver guide for more details on
119   this new driver.
120
121 * **Updated AESNI MB PMD.**
122
123   The AESNI MB PMD has been updated with additional support for:
124
125   * AES-CMAC (128-bit key).
126
127 * **Added the Event Timer Adapter Library.**
128
129   The Event Timer Adapter Library extends the event-based model by introducing
130   APIs that allow applications to arm/cancel event timers that generate
131   timer expiry events. This new type of event is scheduled by an event device
132   along with existing types of events.
133
134 * **Added device event monitor framework.**
135
136   Added a general device event monitor framework at EAL, for device dynamic management.
137   Such as device hotplug awareness and actions adopted accordingly. The list of new APIs:
138
139   * ``rte_dev_event_monitor_start`` and ``rte_dev_event_monitor_stop`` are for
140     the event monitor enable and disable.
141   * ``rte_dev_event_callback_register`` and ``rte_dev_event_callback_unregister``
142     are for the user's callbacks register and unregister.
143
144   Linux uevent is supported as backend of this device event notification framework.
145
146 * **Added support for procinfo and pdump on eth vdev.**
147
148   For ethernet virtual devices (like tap, pcap, etc), with this feature, we can get
149   stats/xstats on shared memory from secondary process, and also pdump packets on
150   those virtual devices.
151
152
153 API Changes
154 -----------
155
156 .. This section should contain API changes. Sample format:
157
158    * Add a short 1-2 sentence description of the API change. Use fixed width
159      quotes for ``rte_function_names`` or ``rte_struct_names``. Use the past
160      tense.
161
162    This section is a comment. Do not overwrite or remove it.
163    Also, make sure to start the actual text at the margin.
164    =========================================================
165
166 * service cores: no longer marked as experimental.
167
168   The service cores functions are no longer marked as experimental, and have
169   become part of the normal DPDK API and ABI. Any future ABI changes will be
170   announced at least one release before the ABI change is made. There are no
171   ABI breaking changes planned.
172
173 * eal: ``rte_lcore_has_role()`` return value changed.
174
175   This function now returns true or false, respectively,
176   rather than 0 or <0 for success or failure.
177   It makes use of the function more intuitive.
178
179 * mempool: capability flags and related functions have been removed.
180
181   Flags ``MEMPOOL_F_CAPA_PHYS_CONTIG`` and
182   ``MEMPOOL_F_CAPA_BLK_ALIGNED_OBJECTS`` were used by octeontx mempool
183   driver to customize generic mempool library behaviour.
184   Now the new driver callbacks ``calc_mem_size`` and ``populate`` may be
185   used to achieve it without specific knowledge in the generic code.
186
187 * mempool: xmem functions have been deprecated:
188
189   - ``rte_mempool_xmem_create``
190   - ``rte_mempool_xmem_size``
191   - ``rte_mempool_xmem_usage``
192   - ``rte_mempool_populate_iova_tab``
193
194 * mbuf: The control mbuf API has been removed in v18.05. The impacted
195   functions and macros are:
196
197   - ``rte_ctrlmbuf_init()``
198   - ``rte_ctrlmbuf_alloc()``
199   - ``rte_ctrlmbuf_free()``
200   - ``rte_ctrlmbuf_data()``
201   - ``rte_ctrlmbuf_len()``
202   - ``rte_is_ctrlmbuf()``
203   - ``CTRL_MBUF_FLAG``
204
205   The packet mbuf API should be used as a replacement.
206
207 * meter: updated to accommodate configuration profiles.
208
209   The meter API is changed to support meter configuration profiles. The
210   configuration profile represents the set of configuration parameters
211   for a given meter object, such as the rates and sizes for the token
212   buckets. These configuration parameters were previously the part of meter
213   object internal data strcuture. The separation of the configuration
214   parameters from meter object data structure results in reducing its
215   memory footprint which helps in better cache utilization when large number
216   of meter objects are used.
217
218 * ethdev: The function ``rte_eth_dev_count``, often mis-used to iterate
219   over ports, is deprecated and replaced by ``rte_eth_dev_count_avail``.
220   There is also a new function ``rte_eth_dev_count_total`` to get the
221   total number of allocated ports, available or not.
222   The hotplug-proof applications should use ``RTE_ETH_FOREACH_DEV`` or
223   ``RTE_ETH_FOREACH_DEV_OWNED_BY`` as port iterators.
224
225 * ethdev, in struct ``struct rte_eth_dev_info``, field ``rte_pci_device *pci_dev``
226   replaced with field ``struct rte_device *device``.
227
228 * **Changes to semantics of rte_eth_dev_configure() parameters.**
229
230    If both the ``nb_rx_q`` and ``nb_tx_q`` parameters are zero,
231    ``rte_eth_dev_configure`` will now use PMD-recommended queue sizes, or if
232    recommendations are not provided by the PMD the function will use ethdev
233    fall-back values. Previously setting both of the parameters to zero would
234    have resulted in ``-EINVAL`` being returned.
235
236 * **Changes to semantics of rte_eth_rx_queue_setup() parameters.**
237
238    If the ``nb_rx_desc`` parameter is zero, ``rte_eth_rx_queue_setup`` will
239    now use the PMD-recommended Rx ring size, or in the case where the PMD
240    does not provide a recommendation, will use an ethdev-provided
241    fall-back value. Previously, setting ``nb_rx_desc`` to zero would have
242    resulted in an error.
243
244 * **Changes to semantics of rte_eth_tx_queue_setup() parameters.**
245
246    If the ``nb_tx_desc`` parameter is zero, ``rte_eth_tx_queue_setup`` will
247    now use the PMD-recommended Tx ring size, or in the case where the PMD
248    does not provide a recoomendation, will use an ethdev-provided
249    fall-back value. Previously, setting ``nb_tx_desc`` to zero would have
250    resulted in an error.
251
252
253 ABI Changes
254 -----------
255
256 .. This section should contain ABI changes. Sample format:
257
258    * Add a short 1-2 sentence description of the ABI change that was announced
259      in the previous releases and made in this release. Use fixed width quotes
260      for ``rte_function_names`` or ``rte_struct_names``. Use the past tense.
261
262    This section is a comment. Do not overwrite or remove it.
263    Also, make sure to start the actual text at the margin.
264    =========================================================
265
266 * ring: the alignment constraints on the ring structure has been relaxed
267   to one cache line instead of two, and an empty cache line padding is
268   added between the producer and consumer structures. The size of the
269   structure and the offset of the fields remains the same on platforms
270   with 64B cache line, but change on other platforms.
271
272 * mempool: ops have changed.
273
274   A new callback ``calc_mem_size`` has been added to ``rte_mempool_ops``
275   to allow to customize required memory size calculation.
276   A new callback ``populate`` has been added to ``rte_mempool_ops``
277   to allow to customize objects population.
278   Callback ``get_capabilities`` has been removed from ``rte_mempool_ops``
279   since its features are covered by ``calc_mem_size`` and ``populate``
280   callbacks.
281   Callback ``register_memory_area`` has been removed from ``rte_mempool_ops``
282   since the new callback ``populate`` may be used instead of it.
283
284 * **Additional fields in rte_eth_dev_info.**
285
286   The ``rte_eth_dev_info`` structure has had two extra entries appended to the
287   end of it: ``default_rxportconf`` and ``default_txportconf``. Each of these
288   in turn are ``rte_eth_dev_portconf`` structures containing three fields of
289   type ``uint16_t``: ``burst_size``, ``ring_size``, and ``nb_queues``. These
290   are parameter values recommended for use by the PMD.
291
292
293 Removed Items
294 -------------
295
296 .. This section should contain removed items in this release. Sample format:
297
298    * Add a short 1-2 sentence description of the removed item in the past
299      tense.
300
301    This section is a comment. Do not overwrite or remove it.
302    Also, make sure to start the actual text at the margin.
303    =========================================================
304
305
306 Known Issues
307 ------------
308
309 .. This section should contain new known issues in this release. Sample format:
310
311    * **Add title in present tense with full stop.**
312
313      Add a short 1-2 sentence description of the known issue in the present
314      tense. Add information on any known workarounds.
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 * **pdump is not compatible with old applications.**
321
322   As we changed to use generic multi-process communication for pdump negotiation
323   instead of previous dedicated unix socket way, pdump applications, including
324   dpdk-pdump example and any other applications using librte_pdump, cannot work
325   with older version DPDK primary applications.
326
327
328 Shared Library Versions
329 -----------------------
330
331 .. Update any library version updated in this release and prepend with a ``+``
332    sign, like this:
333
334      librte_acl.so.2
335    + librte_cfgfile.so.2
336      librte_cmdline.so.2
337
338    This section is a comment. Do not overwrite or remove it.
339    =========================================================
340
341
342 The libraries prepended with a plus sign were incremented in this version.
343
344 .. code-block:: diff
345
346      librte_acl.so.2
347      librte_bbdev.so.1
348      librte_bitratestats.so.2
349      librte_bus_dpaa.so.1
350      librte_bus_fslmc.so.1
351      librte_bus_pci.so.1
352      librte_bus_vdev.so.1
353      librte_cfgfile.so.2
354      librte_cmdline.so.2
355    + librte_common_octeontx.so.1
356      librte_cryptodev.so.4
357      librte_distributor.so.1
358    + librte_eal.so.7
359    + librte_ethdev.so.9
360      librte_eventdev.so.3
361      librte_flow_classify.so.1
362      librte_gro.so.1
363      librte_gso.so.1
364      librte_hash.so.2
365      librte_ip_frag.so.1
366      librte_jobstats.so.1
367      librte_kni.so.2
368      librte_kvargs.so.1
369      librte_latencystats.so.1
370      librte_lpm.so.2
371    + librte_mbuf.so.4
372    + librte_mempool.so.4
373    + librte_meter.so.2
374      librte_metrics.so.1
375      librte_net.so.1
376      librte_pci.so.1
377      librte_pdump.so.2
378      librte_pipeline.so.3
379      librte_pmd_bnxt.so.2
380      librte_pmd_bond.so.2
381      librte_pmd_i40e.so.2
382      librte_pmd_ixgbe.so.2
383      librte_pmd_ring.so.2
384      librte_pmd_softnic.so.1
385      librte_pmd_vhost.so.2
386      librte_port.so.3
387      librte_power.so.1
388      librte_rawdev.so.1
389      librte_reorder.so.1
390    + librte_ring.so.2
391      librte_sched.so.1
392      librte_security.so.1
393      librte_table.so.3
394      librte_timer.so.1
395      librte_vhost.so.3
396
397
398 Tested Platforms
399 ----------------
400
401 .. This section should contain a list of platforms that were tested with this
402    release.
403
404    The format is:
405
406    * <vendor> platform with <vendor> <type of devices> combinations
407
408      * List of CPU
409      * List of OS
410      * List of devices
411      * Other relevant details...
412
413    This section is a comment. Do not overwrite or remove it.
414    Also, make sure to start the actual text at the margin.
415    =========================================================