a1375084aaa7a2211d981ab27cf33ed5d4ff3dfb
[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 * **Updated the mlx4 driver.**
132
133   * Addressed a few bugs.
134
135 * **Added support for Mellanox ConnectX-5 adapters (mlx5).**
136
137   Support for Mellanox ConnectX-5 family of 10/25/40/50/100 Gbps adapters
138   has been added to the existing mlx5 PMD.
139
140 * **Updated the mlx5 driver.**
141
142   * Improve Tx performance by using vector logic.
143   * Improve RSS balancing when number of queues is not a power of two.
144   * Generic flow API support for Ethernet, IPv4, IPv4, UDP, TCP, VLAN and
145     VXLAN pattern items with DROP and QUEUE actions.
146   * Support for extended statistics.
147   * Addressed several data path bugs.
148   * As of MLNX_OFED 4.0-1.0.1.0, the Toeplitz RSS hash function is not
149     symmetric anymore for consistency with other PMDs.
150
151 * **virtio-user with vhost-kernel as another exceptional path.**
152
153   Previously, we upstreamed a virtual device, virtio-user with vhost-user
154   as the backend, as a way for IPC (Inter-Process Communication) and user
155   space container networking.
156
157   Virtio-user with vhost-kernel as the backend is a solution for exceptional
158   path, such as KNI, which exchanges packets with kernel networking stack.
159   This solution is very promising in:
160
161   * maintenance: vhost and vhost-net (kernel) is upstreamed and extensively
162     used kernel module.
163   * features: vhost-net is born to be a networking solution, which has
164     lots of networking related features, like multi-queue, TSO, multi-seg
165     mbuf, etc.
166   * performance: similar to KNI, this solution would use one or more
167     kthreads to send/receive packets from user space DPDK applications,
168     which has little impact on user space polling thread (except that
169     it might enter into kernel space to wake up those kthreads if
170     necessary).
171
172 * **Added virtio Rx interrupt suppprt.**
173
174   This feature enables Rx interrupt mode for virtio pci net devices as
175   binded to VFIO (noiommu mode) and drived by virtio PMD.
176
177   With this feature, virtio PMD can switch between polling mode and
178   interrupt mode, to achieve best performance, and at the same time save
179   power. It can work on both legacy and modern virtio devices. At this mode,
180   each rxq is mapped with an exluded MSIx interrupt.
181
182   See the :ref:`Virtio Interrupt Mode <virtio_interrupt_mode>` documentation
183   for more information.
184
185 * **Added ARMv8 crypto PMD.**
186
187   A new crypto PMD has been added, which provides combined mode cryptografic
188   operations optimized for ARMv8 processors. The driver can be used to enhance
189   performance in processing chained operations such as cipher + HMAC.
190
191 * **Updated the QAT PMD.**
192
193   The QAT PMD was updated with additional support for:
194
195   * DES algorithm.
196   * Scatter-gather list (SGL) support.
197
198 * **Updated the AESNI MB PMD.**
199
200   * The Intel(R) Multi Buffer Crypto for IPsec library used in
201     AESNI MB PMD has been moved to a new repository, in GitHub.
202   * Support for single operations (cipher only and authentication only).
203
204 * **Updated the AES-NI GCM PMD.**
205
206   The AES-NI GCM PMD was migrated from MB library to ISA-L library.
207   The migration entailed the following additional support for:
208
209   * GMAC algorithm.
210   * 256-bit cipher key.
211   * Session-less mode.
212   * Out-of place processing
213   * Scatter-gatter support for chained mbufs (only out-of place and destination
214     mbuf must be contiguous)
215
216 * **Added crypto performance test application.**
217
218   A new performance test application allows measuring performance parameters
219   of PMDs available in crypto tree.
220
221 * **Added Elastic Flow Distributor library (rte_efd).**
222
223   This new library uses perfect hashing to determine a target/value for a
224   given incoming flow key.
225
226   It does not store the key itself for lookup operations, and therefore,
227   lookup performance is not dependent on the key size. Also, the target/value
228   can be any arbitrary value (8 bits by default). Finally, the storage requirement
229   is much smaller than a hash-based flow table and therefore, it can better fit for
230   CPU cache, being able to scale to millions of flow keys.
231
232   See the :ref:`Elastic Flow Distributor Library <Efd_Library>` documentation in
233   the Programmers Guide document, for more information.
234
235
236 Resolved Issues
237 ---------------
238
239 .. This section should contain bug fixes added to the relevant sections. Sample format:
240
241    * **code/section Fixed issue in the past tense with a full stop.**
242
243      Add a short 1-2 sentence description of the resolved issue in the past tense.
244      The title should contain the code/lib section like a commit message.
245      Add the entries in alphabetic order in the relevant sections below.
246
247    This section is a comment. do not overwrite or remove it.
248    Also, make sure to start the actual text at the margin.
249    =========================================================
250
251
252 EAL
253 ~~~
254
255
256 Drivers
257 ~~~~~~~
258
259 * **net/virtio: Fixed multiple process support.**
260
261   Fixed few regressions introduced in recent releases that break the virtio
262   multiple process support.
263
264
265 Libraries
266 ~~~~~~~~~
267
268
269 Examples
270 ~~~~~~~~
271
272 * **examples/ethtool: Fixed crash with non-PCI devices.**
273
274   Querying a non-PCI device was dereferencing non-existent PCI data
275   resulting in a segmentation fault.
276
277
278 Other
279 ~~~~~
280
281
282 Known Issues
283 ------------
284
285 .. This section should contain new known issues in this release. Sample format:
286
287    * **Add title in present tense with full stop.**
288
289      Add a short 1-2 sentence description of the known issue in the present
290      tense. Add information on any known workarounds.
291
292    This section is a comment. do not overwrite or remove it.
293    Also, make sure to start the actual text at the margin.
294    =========================================================
295
296
297 API Changes
298 -----------
299
300 .. This section should contain API changes. Sample format:
301
302    * Add a short 1-2 sentence description of the API change. Use fixed width
303      quotes for ``rte_function_names`` or ``rte_struct_names``. Use the past tense.
304
305    This section is a comment. do not overwrite or remove it.
306    Also, make sure to start the actual text at the margin.
307    =========================================================
308
309 * **Moved five APIs for VF management from the ethdev to the ixgbe PMD.**
310
311   The following five APIs for VF management from the PF have been removed from the ethdev,
312   renamed and added to the ixgbe PMD::
313
314     rte_eth_dev_set_vf_rate_limit
315     rte_eth_dev_set_vf_rx
316     rte_eth_dev_set_vf_rxmode
317     rte_eth_dev_set_vf_tx
318     rte_eth_dev_set_vf_vlan_filter
319
320   The API's have been renamed to the following::
321
322     rte_pmd_ixgbe_set_vf_rate_limit
323     rte_pmd_ixgbe_set_vf_rx
324     rte_pmd_ixgbe_set_vf_rxmode
325     rte_pmd_ixgbe_set_vf_tx
326     rte_pmd_ixgbe_set_vf_vlan_filter
327
328   The declarations for the API’s can be found in ``rte_pmd_ixgbe.h``.
329
330 ABI Changes
331 -----------
332
333 .. This section should contain ABI changes. Sample format:
334
335    * Add a short 1-2 sentence description of the ABI change that was announced in
336      the previous releases and made in this release. Use fixed width quotes for
337      ``rte_function_names`` or ``rte_struct_names``. Use the past tense.
338
339    This section is a comment. do not overwrite or remove it.
340    Also, make sure to start the actual text at the margin.
341    =========================================================
342
343
344
345 Shared Library Versions
346 -----------------------
347
348 .. Update any library version updated in this release and prepend with a ``+``
349    sign, like this:
350
351      librte_acl.so.2
352    + librte_cfgfile.so.2
353      librte_cmdline.so.2
354
355    This section is a comment. do not overwrite or remove it.
356    =========================================================
357
358
359 The libraries prepended with a plus sign were incremented in this version.
360
361 .. code-block:: diff
362
363      librte_acl.so.2
364      librte_cfgfile.so.2
365      librte_cmdline.so.2
366      librte_cryptodev.so.2
367      librte_distributor.so.1
368      librte_eal.so.3
369    + librte_ethdev.so.6
370      librte_hash.so.2
371      librte_ip_frag.so.1
372      librte_jobstats.so.1
373      librte_kni.so.2
374      librte_kvargs.so.1
375      librte_lpm.so.2
376      librte_mbuf.so.2
377      librte_mempool.so.2
378      librte_meter.so.1
379      librte_net.so.1
380      librte_pdump.so.1
381      librte_pipeline.so.3
382      librte_pmd_bond.so.1
383      librte_pmd_ring.so.2
384      librte_port.so.3
385      librte_power.so.1
386      librte_reorder.so.1
387      librte_ring.so.1
388      librte_sched.so.1
389      librte_table.so.2
390      librte_timer.so.1
391      librte_vhost.so.3
392
393
394 Tested Platforms
395 ----------------
396
397 .. This section should contain a list of systems (properties, NIC, OS) that were tested with this release.
398
399    The format is:
400
401    #. (Intel, IBM, ARM,...) platform with <company> NICs.
402
403       * Platform details.
404
405         * Intel(R) Xeon(R) CPU E5-2697 v2 @ 2.70GHz
406         * Intel(R) Xeon(R) CPU E5-2697 v3 @ 2.70GHz
407         * Intel(R) Xeon(R) CPU E5-2699 v3 @ 2.30GHz
408
409           * Intel(R) Server board S2600WTT
410           * BIOS: SE5C610.86B.01.01.0005.101720141054
411
412         * ...
413
414         * OS
415
416           * CentOS 7.0
417           * Fedora 23
418           * Fedora 24
419           * FreeBSD 10.3
420           * Red Hat Enterprise Linux 7.2
421           * SUSE Enterprise Linux 12
422           * Ubuntu 15.10
423           * Ubuntu 16.04 LTS
424           * Wind River Linux 8
425           * ...
426
427       * List of NICs
428
429         * Intel(R) Ethernet Controller X540-AT2
430
431           * Firmware version: 0x80000389
432           * Device id (pf): 8086:1528
433           * Driver version: 3.23.2 (ixgbe)
434           * ...
435
436         * Intel(R) 82599ES 10 Gigabit Ethernet Controller
437
438           * Firmware version: 0x61bf0001
439           * Device id (pf/vf): 8086:10fb / 8086:10ed
440           * Driver version: 4.0.1-k (ixgbe)
441
442         * ...
443
444    This section is a comment. do not overwrite or remove it.
445    Also, make sure to start the actual text at the margin.
446    =========================================================
447
448 #. Intel(R) platforms with Mellanox(R) NICs.
449
450    * Platform details.
451
452      * Intel(R) Xeon(R) CPU E5-2697 v2 @ 2.70GHz
453      * Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz
454      * Intel(R) Xeon(R) CPU E5-2697 v3 @ 2.60GHz
455
456      * OS:
457
458        * CentOS 7.0
459        * Fedora 23
460        * Fedora 24
461        * FreeBSD 10.3
462        * Red Hat Enterprise Linux 7.2
463        * SUSE Enterprise Linux 12
464        * Ubuntu 14.04 LTS
465        * Ubuntu 15.10
466        * Ubuntu 16.04 LTS
467        * Wind River Linux 8
468
469    * MLNX_OFED: 4.0-1.0.1.0
470
471    * NICs:
472
473      * Mellanox(R) ConnectX(R)-3 Pro 40G MCX354A-FCC_Ax (2x40G)
474
475        * Host interface: PCI Express 3.0 x8
476        * Device ID: 15b3:1007
477        * Firmware version: 2.40.5030
478
479      * Mellanox(R) ConnectX(R)-4 10G MCX4111A-XCAT (1x10G)
480
481        * Host interface: PCI Express 3.0 x8
482        * Device ID: 15b3:1013
483        * Firmware version: 12.18.1000
484
485      * Mellanox(R) ConnectX(R)-4 10G MCX4121A-XCAT (2x10G)
486
487        * Host interface: PCI Express 3.0 x8
488        * Device ID: 15b3:1013
489        * Firmware version: 12.18.1000
490
491      * Mellanox(R) ConnectX(R)-4 25G MCX4111A-ACAT (1x25G)
492
493        * Host interface: PCI Express 3.0 x8
494        * Device ID: 15b3:1013
495        * Firmware version: 12.18.1000
496
497      * Mellanox(R) ConnectX(R)-4 25G MCX4121A-ACAT (2x25G)
498
499        * Host interface: PCI Express 3.0 x8
500        * Device ID: 15b3:1013
501        * Firmware version: 12.18.1000
502
503      * Mellanox(R) ConnectX(R)-4 40G MCX4131A-BCAT/MCX413A-BCAT (1x40G)
504
505        * Host interface: PCI Express 3.0 x8
506        * Device ID: 15b3:1013
507        * Firmware version: 12.18.1000
508
509      * Mellanox(R) ConnectX(R)-4 40G MCX415A-BCAT (1x40G)
510
511        * Host interface: PCI Express 3.0 x16
512        * Device ID: 15b3:1013
513        * Firmware version: 12.18.1000
514
515      * Mellanox(R) ConnectX(R)-4 50G MCX4131A-GCAT/MCX413A-GCAT (1x50G)
516
517        * Host interface: PCI Express 3.0 x8
518        * Device ID: 15b3:1013
519        * Firmware version: 12.18.1000
520
521      * Mellanox(R) ConnectX(R)-4 50G MCX414A-BCAT (2x50G)
522
523        * Host interface: PCI Express 3.0 x8
524        * Device ID: 15b3:1013
525        * Firmware version: 12.18.1000
526
527      * Mellanox(R) ConnectX(R)-4 50G MCX415A-GCAT/MCX416A-BCAT/MCX416A-GCAT (2x50G)
528
529        * Host interface: PCI Express 3.0 x16
530        * Device ID: 15b3:1013
531        * Firmware version: 12.18.1000
532
533      * Mellanox(R) ConnectX(R)-4 50G MCX415A-CCAT (1x100G)
534
535        * Host interface: PCI Express 3.0 x16
536        * Device ID: 15b3:1013
537        * Firmware version: 12.18.1000
538
539      * Mellanox(R) ConnectX(R)-4 100G MCX416A-CCAT (2x100G)
540
541        * Host interface: PCI Express 3.0 x16
542        * Device ID: 15b3:1013
543        * Firmware version: 12.18.1000
544
545      * Mellanox(R) ConnectX(R)-4 Lx 10G MCX4121A-XCAT (2x10G)
546
547        * Host interface: PCI Express 3.0 x8
548        * Device ID: 15b3:1015
549        * Firmware version: 14.18.1000
550
551      * Mellanox(R) ConnectX(R)-4 Lx 25G MCX4121A-ACAT (2x25G)
552
553        * Host interface: PCI Express 3.0 x8
554        * Device ID: 15b3:1015
555        * Firmware version: 14.18.1000
556
557      * Mellanox(R) ConnectX(R)-5 100G MCX556A-ECAT (2x100G)
558
559        * Host interface: PCI Express 3.0 x16
560        * Device ID: 15b3:1017
561        * Firmware version: 16.18.1000
562
563      * Mellanox(R) ConnectX-5 Ex EN 100G MCX516A-CDAT (2x100G)
564
565        * Host interface: PCI Express 4.0 x16
566        * Device ID: 15b3:1019
567        * Firmware version: 16.18.1000
568
569 #. IBM(R) Power8(R) with Mellanox(R) NICs.
570
571    * Machine:
572
573      * Processor: POWER8E (raw), AltiVec supported
574
575        * type-model: 8247-22L
576        * Firmware FW810.21 (SV810_108)
577
578      * OS:
579
580        * Ubuntu 16.04 LTS PPC le
581
582    * MLNX_OFED: 4.0-1.0.1.0
583
584    * NICs:
585
586      * Mellanox(R) ConnectX(R)-4 10G MCX4111A-XCAT (1x10G)
587
588        * Host interface: PCI Express 3.0 x8
589        * Device ID: 15b3:1013
590        * Firmware version: 12.18.1000
591
592      * Mellanox(R) ConnectX(R)-4 10G MCX4121A-XCAT (2x10G)
593
594        * Host interface: PCI Express 3.0 x8
595        * Device ID: 15b3:1013
596        * Firmware version: 12.18.1000
597
598      * Mellanox(R) ConnectX(R)-4 25G MCX4111A-ACAT (1x25G)
599
600        * Host interface: PCI Express 3.0 x8
601        * Device ID: 15b3:1013
602        * Firmware version: 12.18.1000
603
604      * Mellanox(R) ConnectX(R)-4 25G MCX4121A-ACAT (2x25G)
605
606        * Host interface: PCI Express 3.0 x8
607        * Device ID: 15b3:1013
608        * Firmware version: 12.18.1000
609
610      * Mellanox(R) ConnectX(R)-4 40G MCX4131A-BCAT/MCX413A-BCAT (1x40G)
611
612        * Host interface: PCI Express 3.0 x8
613        * Device ID: 15b3:1013
614        * Firmware version: 12.18.1000
615
616      * Mellanox(R) ConnectX(R)-4 40G MCX415A-BCAT (1x40G)
617
618        * Host interface: PCI Express 3.0 x16
619        * Device ID: 15b3:1013
620        * Firmware version: 12.18.1000
621
622      * Mellanox(R) ConnectX(R)-4 50G MCX4131A-GCAT/MCX413A-GCAT (1x50G)
623
624        * Host interface: PCI Express 3.0 x8
625        * Device ID: 15b3:1013
626        * Firmware version: 12.18.1000
627
628      * Mellanox(R) ConnectX(R)-4 50G MCX414A-BCAT (2x50G)
629
630        * Host interface: PCI Express 3.0 x8
631        * Device ID: 15b3:1013
632        * Firmware version: 12.18.1000
633
634      * Mellanox(R) ConnectX(R)-4 50G MCX415A-GCAT/MCX416A-BCAT/MCX416A-GCAT (2x50G)
635
636        * Host interface: PCI Express 3.0 x16
637        * Device ID: 15b3:1013
638        * Firmware version: 12.18.1000
639
640      * Mellanox(R) ConnectX(R)-4 50G MCX415A-CCAT (1x100G)
641
642        * Host interface: PCI Express 3.0 x16
643        * Device ID: 15b3:1013
644        * Firmware version: 12.18.1000
645
646      * Mellanox(R) ConnectX(R)-4 100G MCX416A-CCAT (2x100G)
647
648        * Host interface: PCI Express 3.0 x16
649        * Device ID: 15b3:1013
650        * Firmware version: 12.18.1000
651
652      * Mellanox(R) ConnectX(R)-4 Lx 10G MCX4121A-XCAT (2x10G)
653
654        * Host interface: PCI Express 3.0 x8
655        * Device ID: 15b3:1015
656        * Firmware version: 14.18.1000
657
658      * Mellanox(R) ConnectX(R)-4 Lx 25G MCX4121A-ACAT (2x25G)
659
660        * Host interface: PCI Express 3.0 x8
661        * Device ID: 15b3:1015
662        * Firmware version: 14.18.1000
663
664      * Mellanox(R) ConnectX(R)-5 100G MCX556A-ECAT (2x100G)
665
666        * Host interface: PCI Express 3.0 x16
667        * Device ID: 15b3:1017
668        * Firmware version: 16.18.1000