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