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