83519dc8c31297a58f4b6b6c9da71c110fd884b5
[dpdk.git] / doc / guides / rel_notes / release_17_02.rst
1 DPDK Release 17.02
2 ==================
3
4 .. **Read this first.**
5
6    The text 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: ``LIKE_THIS``.
11
12    Build the docs and view the output file to ensure the changes are correct::
13
14       make doc-guides-html
15
16       firefox build/doc/html/guides/rel_notes/release_17_02.html
17
18
19 New Features
20 ------------
21
22 .. This section should contain new features added in this release. Sample format:
23
24    * **Add a title in the past tense with a full stop.**
25
26      Add a short 1-2 sentence description in the past tense. The description
27      should be enough to allow someone scanning the release notes to understand
28      the new feature.
29
30      If the feature adds a lot of sub-features you can use a bullet list like this.
31
32      * Added feature foo to do something.
33      * Enhanced feature bar to do something else.
34
35      Refer to the previous release notes for examples.
36
37      This section is a comment. do not overwrite or remove it.
38      Also, make sure to start the actual text at the margin.
39      =========================================================
40
41 * **Added generic EAL API for I/O device memory read/write operations.**
42
43   This API introduces 8-bit, 16-bit, 32bit, 64bit I/O device
44   memory read/write operations along with the relaxed versions.
45
46   The weakly-ordered machine like ARM needs additional I/O barrier for
47   device memory read/write access over PCI bus.
48   By introducing the EAL abstraction for I/O device memory read/write access,
49   The drivers can access I/O device memory in architecture-agnostic manner.
50   The relaxed version does not have additional I/O memory barrier, useful in
51   accessing the device registers of integrated controllers which
52   implicitly strongly ordered with respect to memory access.
53
54 * **Added generic flow API (rte_flow).**
55
56   This API provides a generic means to configure hardware to match specific
57   ingress or egress traffic, alter its fate and query related counters
58   according to any number of user-defined rules.
59
60   It is slightly higher-level than the legacy filtering framework which it
61   encompasses and supersedes (including all functions and filter types) in
62   order to expose a single interface with an unambiguous behavior that is
63   common to all poll-mode drivers (PMDs).
64
65   See the :ref:`Generic flow API <Generic_flow_API>` documentation for more
66   information.
67
68 * **Added firmware version get API.**
69
70   Added a new function ``rte_eth_dev_fw_version_get()`` to fetch firmware
71   version by a given device.
72
73 * **Added APIs for MACsec offload support to the ixgbe PMD.**
74
75   Six new APIs have been added to the ixgbe PMD for MACsec offload support.
76   The declarations for the APIs can be found in ``rte_pmd_ixgbe.h``.
77
78 * **Added I219 NICs support.**
79
80   Added support for I219 Intel 1GbE NICs.
81
82 * **Added VF Daemon (VFD) on i40e. - EXPERIMENTAL**
83
84   This's an EXPERIMENTAL feature to enhance the capability of DPDK PF as many
85   VF management features are not supported by kernel PF driver.
86   Some new private APIs are implemented in PMD without abstrction layer.
87   They can be used directly by some users who have the need.
88
89   The new APIs to control VFs directly from PF include,
90   1) set VF MAC anti-spoofing
91   2) set VF VLAN anti-spoofing
92   3) set TX loopback
93   4) set VF unicast promiscuous mode
94   5) set VF multicast promiscuous mode
95   6) set VF MTU
96   7) get/reset VF stats
97   8) set VF MAC address
98   9) set VF VLAN stripping
99   10) VF VLAN insertion
100   12) set VF broadcast mode
101   13) set VF VLAN tag
102   14) set VF VLAN filter
103   VFD also includes VF to PF mailbox message management by APP.
104   When PF receives mailbox messages from VF, PF should call the callback
105   provided by APP to know if they're permitted to be processed.
106
107   As an EXPERIMENTAL feature, please aware it can be changed or even
108   removed without prior notice.
109
110 * **Updated the i40e base driver.**
111
112   updated the i40e base driver, including the following changes:
113
114   * replace existing legacy memcpy() calls with i40e_memcpy() calls.
115   * use BIT() macro instead of bit fields
116   * add clear all WoL filters implementation
117   * add broadcast promiscuous control per VLAN
118   * remove unused X722_SUPPORT and I40E_NDIS_SUPPORT MARCOs
119
120 * **Added Solarflare libefx-based network PMD.**
121
122   A new network PMD which supports Solarflare SFN7xxx and SFN8xxx family
123   of 10/40 Gbps adapters has been added.
124
125 * **Added support for Mellanox ConnectX-5 adapters (mlx5).**
126
127   Support for Mellanox ConnectX-5 family of 10/25/40/50/100 Gbps adapters
128   has been added to the existing mlx5 PMD.
129
130 * **virtio-user with vhost-kernel as another exceptional path.**
131
132   Previously, we upstreamed a virtual device, virtio-user with vhost-user
133   as the backend, as a way for IPC (Inter-Process Communication) and user
134   space container networking.
135
136   Virtio-user with vhost-kernel as the backend is a solution for exceptional
137   path, such as KNI, which exchanges packets with kernel networking stack.
138   This solution is very promising in:
139
140   * maintenance: vhost and vhost-net (kernel) is upstreamed and extensively
141     used kernel module.
142   * features: vhost-net is born to be a networking solution, which has
143     lots of networking related features, like multi-queue, TSO, multi-seg
144     mbuf, etc.
145   * performance: similar to KNI, this solution would use one or more
146     kthreads to send/receive packets from user space DPDK applications,
147     which has little impact on user space polling thread (except that
148     it might enter into kernel space to wake up those kthreads if
149     necessary).
150
151 * **Added virtio Rx interrupt suppprt.**
152
153   This feature enables Rx interrupt mode for virtio pci net devices as
154   binded to VFIO (noiommu mode) and drived by virtio PMD.
155
156   With this feature, virtio PMD can switch between polling mode and
157   interrupt mode, to achieve best performance, and at the same time save
158   power. It can work on both legacy and modern virtio devices. At this mode,
159   each rxq is mapped with an exluded MSIx interrupt.
160
161   See the :ref:`Virtio Interrupt Mode <virtio_interrupt_mode>` documentation
162   for more information.
163
164 * **Added ARMv8 crypto PMD.**
165
166   A new crypto PMD has been added, which provides combined mode cryptografic
167   operations optimized for ARMv8 processors. The driver can be used to enhance
168   performance in processing chained operations such as cipher + HMAC.
169
170 * **Updated the QAT PMD.**
171
172   The QAT PMD was updated with additional support for:
173
174   * DES algorithm.
175   * Scatter-gather list (SGL) support.
176
177 * **Updated the AESNI MB PMD.**
178
179   * The Intel(R) Multi Buffer Crypto for IPsec library used in
180     AESNI MB PMD has been moved to a new repository, in GitHub.
181   * Support for single operations (cipher only and authentication only).
182
183 * **Updated the AES-NI GCM PMD.**
184
185   The AES-NI GCM PMD was migrated from MB library to ISA-L library.
186   The migration entailed the following additional support for:
187
188   * GMAC algorithm.
189   * 256-bit cipher key.
190   * Session-less mode.
191   * Out-of place processing
192   * Scatter-gatter support for chained mbufs (only out-of place and destination
193     mbuf must be contiguous)
194
195 * **Added crypto performance test application.**
196
197   A new performance test application allows measuring performance parameters
198   of PMDs available in crypto tree.
199
200 * **Added Elastic Flow Distributor library (rte_efd).**
201
202   This new library uses perfect hashing to determine a target/value for a
203   given incoming flow key.
204
205   It does not store the key itself for lookup operations, and therefore,
206   lookup performance is not dependent on the key size. Also, the target/value
207   can be any arbitrary value (8 bits by default). Finally, the storage requirement
208   is much smaller than a hash-based flow table and therefore, it can better fit for
209   CPU cache, being able to scale to millions of flow keys.
210
211   See the :ref:`Elastic Flow Distributor Library <Efd_Library>` documentation in
212   the Programmers Guide document, for more information.
213
214
215 Resolved Issues
216 ---------------
217
218 .. This section should contain bug fixes added to the relevant sections. Sample format:
219
220    * **code/section Fixed issue in the past tense with a full stop.**
221
222      Add a short 1-2 sentence description of the resolved issue in the past tense.
223      The title should contain the code/lib section like a commit message.
224      Add the entries in alphabetic order in the relevant sections below.
225
226    This section is a comment. do not overwrite or remove it.
227    Also, make sure to start the actual text at the margin.
228    =========================================================
229
230
231 EAL
232 ~~~
233
234
235 Drivers
236 ~~~~~~~
237
238 * **net/virtio: Fixed multiple process support.**
239
240   Fixed few regressions introduced in recent releases that break the virtio
241   multiple process support.
242
243
244 Libraries
245 ~~~~~~~~~
246
247
248 Examples
249 ~~~~~~~~
250
251 * **examples/ethtool: Fixed crash with non-PCI devices.**
252
253   Querying a non-PCI device was dereferencing non-existent PCI data
254   resulting in a segmentation fault.
255
256
257 Other
258 ~~~~~
259
260
261 Known Issues
262 ------------
263
264 .. This section should contain new known issues in this release. Sample format:
265
266    * **Add title in present tense with full stop.**
267
268      Add a short 1-2 sentence description of the known issue in the present
269      tense. Add information on any known workarounds.
270
271    This section is a comment. do not overwrite or remove it.
272    Also, make sure to start the actual text at the margin.
273    =========================================================
274
275
276 API Changes
277 -----------
278
279 .. This section should contain API changes. Sample format:
280
281    * Add a short 1-2 sentence description of the API change. Use fixed width
282      quotes for ``rte_function_names`` or ``rte_struct_names``. Use the past tense.
283
284    This section is a comment. do not overwrite or remove it.
285    Also, make sure to start the actual text at the margin.
286    =========================================================
287
288 * **Moved five APIs for VF management from the ethdev to the ixgbe PMD.**
289
290   The following five APIs for VF management from the PF have been removed from the ethdev,
291   renamed and added to the ixgbe PMD::
292
293     rte_eth_dev_set_vf_rate_limit
294     rte_eth_dev_set_vf_rx
295     rte_eth_dev_set_vf_rxmode
296     rte_eth_dev_set_vf_tx
297     rte_eth_dev_set_vf_vlan_filter
298
299   The API's have been renamed to the following::
300
301     rte_pmd_ixgbe_set_vf_rate_limit
302     rte_pmd_ixgbe_set_vf_rx
303     rte_pmd_ixgbe_set_vf_rxmode
304     rte_pmd_ixgbe_set_vf_tx
305     rte_pmd_ixgbe_set_vf_vlan_filter
306
307   The declarations for the API’s can be found in ``rte_pmd_ixgbe.h``.
308
309 ABI Changes
310 -----------
311
312 .. This section should contain ABI changes. Sample format:
313
314    * Add a short 1-2 sentence description of the ABI change that was announced in
315      the previous releases and made in this release. Use fixed width quotes for
316      ``rte_function_names`` or ``rte_struct_names``. Use the past tense.
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
324 Shared Library Versions
325 -----------------------
326
327 .. Update any library version updated in this release and prepend with a ``+``
328    sign, like this:
329
330      librte_acl.so.2
331    + librte_cfgfile.so.2
332      librte_cmdline.so.2
333
334    This section is a comment. do not overwrite or remove it.
335    =========================================================
336
337
338 The libraries prepended with a plus sign were incremented in this version.
339
340 .. code-block:: diff
341
342      librte_acl.so.2
343      librte_cfgfile.so.2
344      librte_cmdline.so.2
345      librte_cryptodev.so.2
346      librte_distributor.so.1
347      librte_eal.so.3
348    + librte_ethdev.so.6
349      librte_hash.so.2
350      librte_ip_frag.so.1
351      librte_jobstats.so.1
352      librte_kni.so.2
353      librte_kvargs.so.1
354      librte_lpm.so.2
355      librte_mbuf.so.2
356      librte_mempool.so.2
357      librte_meter.so.1
358      librte_net.so.1
359      librte_pdump.so.1
360      librte_pipeline.so.3
361      librte_pmd_bond.so.1
362      librte_pmd_ring.so.2
363      librte_port.so.3
364      librte_power.so.1
365      librte_reorder.so.1
366      librte_ring.so.1
367      librte_sched.so.1
368      librte_table.so.2
369      librte_timer.so.1
370      librte_vhost.so.3
371
372
373 Tested Platforms
374 ----------------
375
376 .. This section should contain a list of platforms that were tested with this release.
377
378    The format is:
379
380    #. Platform name.
381
382       * Platform details.
383       * Platform details.
384
385    This section is a comment. do not overwrite or remove it.
386    Also, make sure to start the actual text at the margin.
387    =========================================================
388
389
390 Tested NICs
391 -----------
392
393 .. This section should contain a list of NICs that were tested with this release.
394
395    The format is:
396
397    #. NIC name.
398
399       * NIC details.
400       * NIC details.
401
402    This section is a comment. do not overwrite or remove it.
403    Also, make sure to start the actual text at the margin.
404    =========================================================
405
406
407 Tested OSes
408 -----------
409
410 .. This section should contain a list of OSes that were tested with this release.
411    The format is as follows, in alphabetical order:
412
413    * CentOS 7.0
414    * Fedora 23
415    * Fedora 24
416    * FreeBSD 10.3
417    * Red Hat Enterprise Linux 7.2
418    * SUSE Enterprise Linux 12
419    * Ubuntu 15.10
420    * Ubuntu 16.04 LTS
421    * Wind River Linux 8
422
423    This section is a comment. do not overwrite or remove it.
424    Also, make sure to start the actual text at the margin.
425    =========================================================