dc46e36929389c1abef5ee643cb19da6f68981c9
[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 * **Updated the enic driver.**
121
122   * Set new Rx checksum flags in mbufs to indicate unknown, good or bad.
123   * Fix set/remove of MAC addresses. Allow up to 64 addresses per device.
124   * Enable TSO on outer headers.
125
126 * **Added Solarflare libefx-based network PMD.**
127
128   A new network PMD which supports Solarflare SFN7xxx and SFN8xxx family
129   of 10/40 Gbps adapters has been added.
130
131 * **Added support for Mellanox ConnectX-5 adapters (mlx5).**
132
133   Support for Mellanox ConnectX-5 family of 10/25/40/50/100 Gbps adapters
134   has been added to the existing mlx5 PMD.
135
136 * **virtio-user with vhost-kernel as another exceptional path.**
137
138   Previously, we upstreamed a virtual device, virtio-user with vhost-user
139   as the backend, as a way for IPC (Inter-Process Communication) and user
140   space container networking.
141
142   Virtio-user with vhost-kernel as the backend is a solution for exceptional
143   path, such as KNI, which exchanges packets with kernel networking stack.
144   This solution is very promising in:
145
146   * maintenance: vhost and vhost-net (kernel) is upstreamed and extensively
147     used kernel module.
148   * features: vhost-net is born to be a networking solution, which has
149     lots of networking related features, like multi-queue, TSO, multi-seg
150     mbuf, etc.
151   * performance: similar to KNI, this solution would use one or more
152     kthreads to send/receive packets from user space DPDK applications,
153     which has little impact on user space polling thread (except that
154     it might enter into kernel space to wake up those kthreads if
155     necessary).
156
157 * **Added virtio Rx interrupt suppprt.**
158
159   This feature enables Rx interrupt mode for virtio pci net devices as
160   binded to VFIO (noiommu mode) and drived by virtio PMD.
161
162   With this feature, virtio PMD can switch between polling mode and
163   interrupt mode, to achieve best performance, and at the same time save
164   power. It can work on both legacy and modern virtio devices. At this mode,
165   each rxq is mapped with an exluded MSIx interrupt.
166
167   See the :ref:`Virtio Interrupt Mode <virtio_interrupt_mode>` documentation
168   for more information.
169
170 * **Added ARMv8 crypto PMD.**
171
172   A new crypto PMD has been added, which provides combined mode cryptografic
173   operations optimized for ARMv8 processors. The driver can be used to enhance
174   performance in processing chained operations such as cipher + HMAC.
175
176 * **Updated the QAT PMD.**
177
178   The QAT PMD was updated with additional support for:
179
180   * DES algorithm.
181   * Scatter-gather list (SGL) support.
182
183 * **Updated the AESNI MB PMD.**
184
185   * The Intel(R) Multi Buffer Crypto for IPsec library used in
186     AESNI MB PMD has been moved to a new repository, in GitHub.
187   * Support for single operations (cipher only and authentication only).
188
189 * **Updated the AES-NI GCM PMD.**
190
191   The AES-NI GCM PMD was migrated from MB library to ISA-L library.
192   The migration entailed the following additional support for:
193
194   * GMAC algorithm.
195   * 256-bit cipher key.
196   * Session-less mode.
197   * Out-of place processing
198   * Scatter-gatter support for chained mbufs (only out-of place and destination
199     mbuf must be contiguous)
200
201 * **Added crypto performance test application.**
202
203   A new performance test application allows measuring performance parameters
204   of PMDs available in crypto tree.
205
206 * **Added Elastic Flow Distributor library (rte_efd).**
207
208   This new library uses perfect hashing to determine a target/value for a
209   given incoming flow key.
210
211   It does not store the key itself for lookup operations, and therefore,
212   lookup performance is not dependent on the key size. Also, the target/value
213   can be any arbitrary value (8 bits by default). Finally, the storage requirement
214   is much smaller than a hash-based flow table and therefore, it can better fit for
215   CPU cache, being able to scale to millions of flow keys.
216
217   See the :ref:`Elastic Flow Distributor Library <Efd_Library>` documentation in
218   the Programmers Guide document, for more information.
219
220
221 Resolved Issues
222 ---------------
223
224 .. This section should contain bug fixes added to the relevant sections. Sample format:
225
226    * **code/section Fixed issue in the past tense with a full stop.**
227
228      Add a short 1-2 sentence description of the resolved issue in the past tense.
229      The title should contain the code/lib section like a commit message.
230      Add the entries in alphabetic order in the relevant sections below.
231
232    This section is a comment. do not overwrite or remove it.
233    Also, make sure to start the actual text at the margin.
234    =========================================================
235
236
237 EAL
238 ~~~
239
240
241 Drivers
242 ~~~~~~~
243
244 * **net/virtio: Fixed multiple process support.**
245
246   Fixed few regressions introduced in recent releases that break the virtio
247   multiple process support.
248
249
250 Libraries
251 ~~~~~~~~~
252
253
254 Examples
255 ~~~~~~~~
256
257 * **examples/ethtool: Fixed crash with non-PCI devices.**
258
259   Querying a non-PCI device was dereferencing non-existent PCI data
260   resulting in a segmentation fault.
261
262
263 Other
264 ~~~~~
265
266
267 Known Issues
268 ------------
269
270 .. This section should contain new known issues in this release. Sample format:
271
272    * **Add title in present tense with full stop.**
273
274      Add a short 1-2 sentence description of the known issue in the present
275      tense. Add information on any known workarounds.
276
277    This section is a comment. do not overwrite or remove it.
278    Also, make sure to start the actual text at the margin.
279    =========================================================
280
281
282 API Changes
283 -----------
284
285 .. This section should contain API changes. Sample format:
286
287    * Add a short 1-2 sentence description of the API change. Use fixed width
288      quotes 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 * **Moved five APIs for VF management from the ethdev to the ixgbe PMD.**
295
296   The following five APIs for VF management from the PF have been removed from the ethdev,
297   renamed and added to the ixgbe PMD::
298
299     rte_eth_dev_set_vf_rate_limit
300     rte_eth_dev_set_vf_rx
301     rte_eth_dev_set_vf_rxmode
302     rte_eth_dev_set_vf_tx
303     rte_eth_dev_set_vf_vlan_filter
304
305   The API's have been renamed to the following::
306
307     rte_pmd_ixgbe_set_vf_rate_limit
308     rte_pmd_ixgbe_set_vf_rx
309     rte_pmd_ixgbe_set_vf_rxmode
310     rte_pmd_ixgbe_set_vf_tx
311     rte_pmd_ixgbe_set_vf_vlan_filter
312
313   The declarations for the API’s can be found in ``rte_pmd_ixgbe.h``.
314
315 ABI Changes
316 -----------
317
318 .. This section should contain ABI changes. Sample format:
319
320    * Add a short 1-2 sentence description of the ABI change that was announced in
321      the previous releases and made in this release. Use fixed width quotes for
322      ``rte_function_names`` or ``rte_struct_names``. Use the past tense.
323
324    This section is a comment. do not overwrite or remove it.
325    Also, make sure to start the actual text at the margin.
326    =========================================================
327
328
329
330 Shared Library Versions
331 -----------------------
332
333 .. Update any library version updated in this release and prepend with a ``+``
334    sign, like this:
335
336      librte_acl.so.2
337    + librte_cfgfile.so.2
338      librte_cmdline.so.2
339
340    This section is a comment. do not overwrite or remove it.
341    =========================================================
342
343
344 The libraries prepended with a plus sign were incremented in this version.
345
346 .. code-block:: diff
347
348      librte_acl.so.2
349      librte_cfgfile.so.2
350      librte_cmdline.so.2
351      librte_cryptodev.so.2
352      librte_distributor.so.1
353      librte_eal.so.3
354    + librte_ethdev.so.6
355      librte_hash.so.2
356      librte_ip_frag.so.1
357      librte_jobstats.so.1
358      librte_kni.so.2
359      librte_kvargs.so.1
360      librte_lpm.so.2
361      librte_mbuf.so.2
362      librte_mempool.so.2
363      librte_meter.so.1
364      librte_net.so.1
365      librte_pdump.so.1
366      librte_pipeline.so.3
367      librte_pmd_bond.so.1
368      librte_pmd_ring.so.2
369      librte_port.so.3
370      librte_power.so.1
371      librte_reorder.so.1
372      librte_ring.so.1
373      librte_sched.so.1
374      librte_table.so.2
375      librte_timer.so.1
376      librte_vhost.so.3
377
378
379 Tested Platforms
380 ----------------
381
382 .. This section should contain a list of systems (properties, NIC, OS) that were tested with this release.
383
384    The format is:
385
386    #. (Intel, IBM, ARM,...) platform with <company> NICs.
387
388       * Platform details.
389
390         * Intel(R) Xeon(R) CPU E5-2697 v2 @ 2.70GHz
391         * Intel(R) Xeon(R) CPU E5-2697 v3 @ 2.70GHz
392         * Intel(R) Xeon(R) CPU E5-2699 v3 @ 2.30GHz
393
394           * Intel(R) Server board S2600WTT
395           * BIOS: SE5C610.86B.01.01.0005.101720141054
396
397         * ...
398
399         * OS
400
401           * CentOS 7.0
402           * Fedora 23
403           * Fedora 24
404           * FreeBSD 10.3
405           * Red Hat Enterprise Linux 7.2
406           * SUSE Enterprise Linux 12
407           * Ubuntu 15.10
408           * Ubuntu 16.04 LTS
409           * Wind River Linux 8
410           * ...
411
412       * List of NICs
413
414         * Intel(R) Ethernet Controller X540-AT2
415
416           * Firmware version: 0x80000389
417           * Device id (pf): 8086:1528
418           * Driver version: 3.23.2 (ixgbe)
419           * ...
420
421         * Intel(R) 82599ES 10 Gigabit Ethernet Controller
422
423           * Firmware version: 0x61bf0001
424           * Device id (pf/vf): 8086:10fb / 8086:10ed
425           * Driver version: 4.0.1-k (ixgbe)
426
427         * ...
428
429    This section is a comment. do not overwrite or remove it.
430    Also, make sure to start the actual text at the margin.
431    =========================================================