1.. SPDX-License-Identifier: BSD-3-Clause 2 Copyright 2017 The DPDK contributors 3 4DPDK Release 17.08 5================== 6 7New 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 181Known Issues 182------------ 183 184* **Starting with version 17.08, libnuma is required to build DPDK.** 185 186 187API 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 249ABI 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 291Shared Library Versions 292----------------------- 293 294The 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 334Tested 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) 523