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