1.. SPDX-License-Identifier: BSD-3-Clause 2 Copyright 2016 The DPDK contributors 3 4DPDK Release 16.11 5================== 6 7.. **Read this first.** 8 9 The text 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: ``LIKE_THIS``. 14 15 Build the docs and view the output file to ensure the changes are correct:: 16 17 make doc-guides-html 18 19 firefox build/doc/html/guides/rel_notes/release_16_11.html 20 21 22New Features 23------------ 24 25.. This section should contain new features added in this release. Sample format: 26 27 * **Add a title in the past tense with a full stop.** 28 29 Add a short 1-2 sentence description in the past tense. The description 30 should be enough to allow someone scanning the release notes to understand 31 the new feature. 32 33 If the feature adds a lot of sub-features you can use a bullet list like 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. Make sure to start the actual text at the margin. 41 42 43* **Added software parser for packet type.** 44 45 * Added a new function ``rte_pktmbuf_read()`` to read the packet data from an 46 mbuf chain, linearizing if required. 47 * Added a new function ``rte_net_get_ptype()`` to parse an Ethernet packet 48 in an mbuf chain and retrieve its packet type from software. 49 * Added new functions ``rte_get_ptype_*()`` to dump a packet type as a string. 50 51* **Improved offloads support in mbuf.** 52 53 * Added a new function ``rte_raw_cksum_mbuf()`` to process the checksum of 54 data embedded in an mbuf chain. 55 * Added new Rx checksum flags in mbufs to describe more states: unknown, 56 good, bad, or not present (useful for virtual drivers). This modification 57 was done for IP and L4. 58 * Added a new Rx LRO mbuf flag, used when packets are coalesced. This 59 flag indicates that the segment size of original packets is known. 60 61* **Added vhost-user dequeue zero copy support.** 62 63 The copy in the dequeue path is avoided in order to improve the performance. 64 In the VM2VM case, the boost is quite impressive. The bigger the packet size, 65 the bigger performance boost you may get. However, for the VM2NIC case, there 66 are some limitations, so the boost is not as impressive as the VM2VM case. 67 It may even drop quite a bit for small packets. 68 69 For that reason, this feature is disabled by default. It can be enabled when 70 the ``RTE_VHOST_USER_DEQUEUE_ZERO_COPY`` flag is set. Check the VHost section 71 of the Programming Guide for more information. 72 73* **Added vhost-user indirect descriptors support.** 74 75 If the indirect descriptor feature is enabled, each packet sent by the guest 76 will take exactly one slot in the enqueue virtqueue. Without this feature, as in 77 the current version, even 64 bytes packets take two slots with Virtio PMD on guest 78 side. 79 80 The main impact is better performance for 0% packet loss use-cases, as it 81 behaves as if the virtqueue size was enlarged, so more packets can be buffered 82 in the case of system perturbations. On the downside, small performance degradations 83 were measured when running micro-benchmarks. 84 85* **Added vhost PMD xstats.** 86 87 Added extended statistics to vhost PMD from a per port perspective. 88 89* **Supported offloads with virtio.** 90 91 Added support for the following offloads in virtio: 92 93 * Rx/Tx checksums. 94 * LRO. 95 * TSO. 96 97* **Added virtio NEON support for ARM.** 98 99 Added NEON support for ARM based virtio. 100 101* **Updated the ixgbe base driver.** 102 103 Updated the ixgbe base driver, including the following changes: 104 105 * Added X550em_a 10G PHY support. 106 * Added support for flow control auto negotiation for X550em_a 1G PHY. 107 * Added X550em_a FW ALEF support. 108 * Increased mailbox version to ``ixgbe_mbox_api_13``. 109 * Added two MAC operations for Hyper-V support. 110 111* **Added APIs for VF management to the ixgbe PMD.** 112 113 Eight new APIs have been added to the ixgbe PMD for VF management from the PF. 114 The declarations for the API's can be found in ``rte_pmd_ixgbe.h``. 115 116* **Updated the enic driver.** 117 118 * Added update to use interrupt for link status checking instead of polling. 119 * Added more flow director modes on UCS Blade with firmware version >= 2.0(13e). 120 * Added full support for MTU update. 121 * Added support for the ``rte_eth_rx_queue_count`` function. 122 123* **Updated the mlx5 driver.** 124 125 * Added support for RSS hash results. 126 * Added several performance improvements. 127 * Added several bug fixes. 128 129* **Updated the QAT PMD.** 130 131 The QAT PMD was updated with additional support for: 132 133 * MD5_HMAC algorithm. 134 * SHA224-HMAC algorithm. 135 * SHA384-HMAC algorithm. 136 * GMAC algorithm. 137 * KASUMI (F8 and F9) algorithm. 138 * 3DES algorithm. 139 * NULL algorithm. 140 * C3XXX device. 141 * C62XX device. 142 143* **Added openssl PMD.** 144 145 A new crypto PMD has been added, which provides several ciphering and hashing algorithms. 146 All cryptography operations use the Openssl library crypto API. 147 148* **Updated the IPsec example.** 149 150 Updated the IPsec example with the following support: 151 152 * Configuration file support. 153 * AES CBC IV generation with cipher forward function. 154 * AES GCM/CTR mode. 155 156* **Added support for new gcc -march option.** 157 158 The GCC 4.9 ``-march`` option supports the Intel processor code names. 159 The config option ``RTE_MACHINE`` can be used to pass code names to the compiler via the ``-march`` flag. 160 161 162Resolved Issues 163--------------- 164 165.. This section should contain bug fixes added to the relevant sections. Sample format: 166 167 * **code/section Fixed issue in the past tense with a full stop.** 168 169 Add a short 1-2 sentence description of the resolved issue in the past tense. 170 The title should contain the code/lib section like a commit message. 171 Add the entries in alphabetic order in the relevant sections below. 172 173 This section is a comment. Make sure to start the actual text at the margin. 174 175 176Drivers 177~~~~~~~ 178 179* **enic: Fixed several flow director issues.** 180 181* **enic: Fixed inadvertent setting of L4 checksum ptype on ICMP packets.** 182 183* **enic: Fixed high driver overhead when servicing Rx queues beyond the first.** 184 185 186 187Known Issues 188------------ 189 190.. This section should contain new known issues in this release. Sample format: 191 192 * **Add title in present tense with full stop.** 193 194 Add a short 1-2 sentence description of the known issue in the present 195 tense. Add information on any known workarounds. 196 197 This section is a comment. Make sure to start the actual text at the margin. 198 199* **L3fwd-power app does not work properly when Rx vector is enabled.** 200 201 The L3fwd-power app doesn't work properly with some drivers in vector mode 202 since the queue monitoring works differently between scalar and vector modes 203 leading to incorrect frequency scaling. In addition, L3fwd-power application 204 requires the mbuf to have correct packet type set but in some drivers the 205 vector mode must be disabled for this. 206 207 Therefore, in order to use L3fwd-power, vector mode should be disabled 208 via the config file. 209 210* **Digest address must be supplied for crypto auth operation on QAT PMD.** 211 212 The cryptodev API specifies that if the rte_crypto_sym_op.digest.data field, 213 and by inference the digest.phys_addr field which points to the same location, 214 is not set for an auth operation the driver is to understand that the digest 215 result is located immediately following the region over which the digest is 216 computed. The QAT PMD doesn't correctly handle this case and reads and writes 217 to an incorrect location. 218 219 Callers can workaround this by always supplying the digest virtual and 220 physical address fields in the rte_crypto_sym_op for an auth operation. 221 222 223API Changes 224----------- 225 226.. This section should contain API changes. Sample format: 227 228 * Add a short 1-2 sentence description of the API change. Use fixed width 229 quotes for ``rte_function_names`` or ``rte_struct_names``. Use the past tense. 230 231 This section is a comment. Make sure to start the actual text at the margin. 232 233* The driver naming convention has been changed to make them more 234 consistent. It especially impacts ``--vdev`` arguments. For example 235 ``eth_pcap`` becomes ``net_pcap`` and ``cryptodev_aesni_mb_pmd`` becomes 236 ``crypto_aesni_mb``. 237 238 For backward compatibility an alias feature has been enabled to support the 239 original names. 240 241* The log history has been removed. 242 243* The ``rte_ivshmem`` feature (including library and EAL code) has been removed 244 in 16.11 because it had some design issues which were not planned to be fixed. 245 246* The ``file_name`` data type of ``struct rte_port_source_params`` and 247 ``struct rte_port_sink_params`` is changed from ``char *`` to ``const char *``. 248 249* **Improved device/driver hierarchy and generalized hotplugging.** 250 251 The device and driver relationship has been restructured by introducing generic 252 classes. This paves the way for having PCI, VDEV and other device types as 253 instantiated objects rather than classes in themselves. Hotplugging has also 254 been generalized into EAL so that Ethernet or crypto devices can use the 255 common infrastructure. 256 257 * Removed ``pmd_type`` as a way of segregation of devices. 258 * Moved ``numa_node`` and ``devargs`` into ``rte_driver`` from 259 ``rte_pci_driver``. These can now be used by any instantiated object of 260 ``rte_driver``. 261 * Added ``rte_device`` class and all PCI and VDEV devices inherit from it 262 * Renamed devinit/devuninit handlers to probe/remove to make it more 263 semantically correct with respect to the device <=> driver relationship. 264 * Moved hotplugging support to EAL. Hereafter, PCI and vdev can use the 265 APIs ``rte_eal_dev_attach`` and ``rte_eal_dev_detach``. 266 * Renamed helpers and support macros to make them more synonymous 267 with their device types 268 (e.g. ``PMD_REGISTER_DRIVER`` => ``RTE_PMD_REGISTER_PCI``). 269 * Device naming functions have been generalized from ethdev and cryptodev 270 to EAL. ``rte_eal_pci_device_name`` has been introduced for obtaining 271 unique device name from PCI Domain-BDF description. 272 * Virtual device registration APIs have been added: ``rte_eal_vdrv_register`` 273 and ``rte_eal_vdrv_unregister``. 274 275 276ABI Changes 277----------- 278 279.. This section should contain ABI changes. Sample format: 280 281 * Add a short 1-2 sentence description of the ABI change that was announced in 282 the previous releases and made in this release. Use fixed width quotes for 283 ``rte_function_names`` or ``rte_struct_names``. Use the past tense. 284 285 This section is a comment. Make sure to start the actual text at the margin. 286 287 288 289Shared Library Versions 290----------------------- 291 292.. Update any library version updated in this release and prepend with a ``+`` 293 sign, like this: 294 295 libethdev.so.4 296 librte_acl.so.2 297 + librte_cfgfile.so.2 298 librte_cmdline.so.2 299 300 301 302The libraries prepended with a plus sign were incremented in this version. 303 304.. code-block:: diff 305 306 librte_acl.so.2 307 librte_cfgfile.so.2 308 librte_cmdline.so.2 309 + librte_cryptodev.so.2 310 librte_distributor.so.1 311 + librte_eal.so.3 312 + librte_ethdev.so.5 313 librte_hash.so.2 314 librte_ip_frag.so.1 315 librte_jobstats.so.1 316 librte_kni.so.2 317 librte_kvargs.so.1 318 librte_lpm.so.2 319 librte_mbuf.so.2 320 librte_mempool.so.2 321 librte_meter.so.1 322 librte_net.so.1 323 librte_pdump.so.1 324 librte_pipeline.so.3 325 librte_pmd_bond.so.1 326 librte_pmd_ring.so.2 327 librte_port.so.3 328 librte_power.so.1 329 librte_reorder.so.1 330 librte_ring.so.1 331 librte_sched.so.1 332 librte_table.so.2 333 librte_timer.so.1 334 librte_vhost.so.3 335 336 337Tested Platforms 338---------------- 339 340.. This section should contain a list of platforms that were tested with this release. 341 342 The format is: 343 344 #. Platform name. 345 346 * Platform details. 347 * Platform details. 348 349 This section is a comment. Make sure to start the actual text at the margin. 350 351#. SuperMicro 1U 352 353 - BIOS: 1.0c 354 - Processor: Intel(R) Atom(TM) CPU C2758 @ 2.40GHz 355 356#. SuperMicro 1U 357 358 - BIOS: 1.0a 359 - Processor: Intel(R) Xeon(R) CPU D-1540 @ 2.00GHz 360 - Onboard NIC: Intel(R) X552/X557-AT (2x10G) 361 362 - Firmware-version: 0x800001cf 363 - Device ID (PF/VF): 8086:15ad /8086:15a8 364 365 - kernel driver version: 4.2.5 (ixgbe) 366 367#. SuperMicro 2U 368 369 - BIOS: 1.0a 370 - Processor: Intel(R) Xeon(R) CPU E5-4667 v3 @ 2.00GHz 371 372#. Intel(R) Server board S2600GZ 373 374 - BIOS: SE5C600.86B.02.02.0002.122320131210 375 - Processor: Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz 376 377#. Intel(R) Server board W2600CR 378 379 - BIOS: SE5C600.86B.02.01.0002.082220131453 380 - Processor: Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz 381 382#. Intel(R) Server board S2600CWT 383 384 - BIOS: SE5C610.86B.01.01.0009.060120151350 385 - Processor: Intel(R) Xeon(R) CPU E5-2699 v3 @ 2.30GHz 386 387#. Intel(R) Server board S2600WTT 388 389 - BIOS: SE5C610.86B.01.01.0005.101720141054 390 - Processor: Intel(R) Xeon(R) CPU E5-2699 v3 @ 2.30GHz 391 392#. Intel(R) Server board S2600WTT 393 394 - BIOS: SE5C610.86B.11.01.0044.090120151156 395 - Processor: Intel(R) Xeon(R) CPU E5-2695 v4 @ 2.10GHz 396 397#. Intel(R) Server board S2600WTT 398 399 - Processor: Intel(R) Xeon(R) CPU E5-2697 v2 @ 2.70GHz 400 401#. Intel(R) Server 402 403 - Intel(R) Xeon(R) CPU E5-2697 v3 @ 2.60GHz 404 405#. IBM(R) Power8(R) 406 407 - Machine type-model: 8247-22L 408 - Firmware FW810.21 (SV810_108) 409 - Processor: POWER8E (raw), AltiVec supported 410 411 412Tested NICs 413----------- 414 415.. This section should contain a list of NICs that were tested with this release. 416 417 The format is: 418 419 #. NIC name. 420 421 * NIC details. 422 * NIC details. 423 424 This section is a comment. Make sure to start the actual text at the margin. 425 426#. Intel(R) Ethernet Controller X540-AT2 427 428 - Firmware version: 0x80000389 429 - Device id (pf): 8086:1528 430 - Driver version: 3.23.2 (ixgbe) 431 432#. Intel(R) 82599ES 10 Gigabit Ethernet Controller 433 434 - Firmware version: 0x61bf0001 435 - Device id (pf/vf): 8086:10fb / 8086:10ed 436 - Driver version: 4.0.1-k (ixgbe) 437 438#. Intel(R) Corporation Ethernet Connection X552/X557-AT 10GBASE-T 439 440 - Firmware version: 0x800001cf 441 - Device id (pf/vf): 8086:15ad / 8086:15a8 442 - Driver version: 4.2.5 (ixgbe) 443 444#. Intel(R) Ethernet Converged Network Adapter X710-DA4 (4x10G) 445 446 - Firmware version: 5.05 447 - Device id (pf/vf): 8086:1572 / 8086:154c 448 - Driver version: 1.5.23 (i40e) 449 450#. Intel(R) Ethernet Converged Network Adapter X710-DA2 (2x10G) 451 452 - Firmware version: 5.05 453 - Device id (pf/vf): 8086:1572 / 8086:154c 454 - Driver version: 1.5.23 (i40e) 455 456#. Intel(R) Ethernet Converged Network Adapter XL710-QDA1 (1x40G) 457 458 - Firmware version: 5.05 459 - Device id (pf/vf): 8086:1584 / 8086:154c 460 - Driver version: 1.5.23 (i40e) 461 462#. Intel(R) Ethernet Converged Network Adapter XL710-QDA2 (2X40G) 463 464 - Firmware version: 5.05 465 - Device id (pf/vf): 8086:1583 / 8086:154c 466 - Driver version: 1.5.23 (i40e) 467 468#. Intel(R) Corporation I350 Gigabit Network Connection 469 470 - Firmware version: 1.48, 0x800006e7 471 - Device id (pf/vf): 8086:1521 / 8086:1520 472 - Driver version: 5.2.13-k (igb) 473 474#. Intel(R) Ethernet Multi-host Controller FM10000 475 476 - Firmware version: N/A 477 - Device id (pf/vf): 8086:15d0 478 - Driver version: 0.17.0.9 (fm10k) 479 480#. Mellanox(R) ConnectX(R)-4 10G MCX4111A-XCAT (1x10G) 481 482 * Host interface: PCI Express 3.0 x8 483 * Device ID: 15b3:1013 484 * MLNX_OFED: 3.4-1.0.0.0 485 * Firmware version: 12.17.1010 486 487#. Mellanox(R) ConnectX(R)-4 10G MCX4121A-XCAT (2x10G) 488 489 * Host interface: PCI Express 3.0 x8 490 * Device ID: 15b3:1013 491 * MLNX_OFED: 3.4-1.0.0.0 492 * Firmware version: 12.17.1010 493 494#. Mellanox(R) ConnectX(R)-4 25G MCX4111A-ACAT (1x25G) 495 496 * Host interface: PCI Express 3.0 x8 497 * Device ID: 15b3:1013 498 * MLNX_OFED: 3.4-1.0.0.0 499 * Firmware version: 12.17.1010 500 501#. Mellanox(R) ConnectX(R)-4 25G MCX4121A-ACAT (2x25G) 502 503 * Host interface: PCI Express 3.0 x8 504 * Device ID: 15b3:1013 505 * MLNX_OFED: 3.4-1.0.0.0 506 * Firmware version: 12.17.1010 507 508#. Mellanox(R) ConnectX(R)-4 40G MCX4131A-BCAT/MCX413A-BCAT (1x40G) 509 510 * Host interface: PCI Express 3.0 x8 511 * Device ID: 15b3:1013 512 * MLNX_OFED: 3.4-1.0.0.0 513 * Firmware version: 12.17.1010 514 515#. Mellanox(R) ConnectX(R)-4 40G MCX415A-BCAT (1x40G) 516 517 * Host interface: PCI Express 3.0 x16 518 * Device ID: 15b3:1013 519 * MLNX_OFED: 3.4-1.0.0.0 520 * Firmware version: 12.17.1010 521 522#. Mellanox(R) ConnectX(R)-4 50G MCX4131A-GCAT/MCX413A-GCAT (1x50G) 523 524 * Host interface: PCI Express 3.0 x8 525 * Device ID: 15b3:1013 526 * MLNX_OFED: 3.4-1.0.0.0 527 * Firmware version: 12.17.1010 528 529#. Mellanox(R) ConnectX(R)-4 50G MCX414A-BCAT (2x50G) 530 531 * Host interface: PCI Express 3.0 x8 532 * Device ID: 15b3:1013 533 * MLNX_OFED: 3.4-1.0.0.0 534 * Firmware version: 12.17.1010 535 536#. Mellanox(R) ConnectX(R)-4 50G MCX415A-GCAT/MCX416A-BCAT/MCX416A-GCAT (2x50G) 537 538 * Host interface: PCI Express 3.0 x16 539 * Device ID: 15b3:1013 540 * MLNX_OFED: 3.4-1.0.0.0 541 * Firmware version: 12.17.1010 542 543#. Mellanox(R) ConnectX(R)-4 50G MCX415A-CCAT (1x100G) 544 545 * Host interface: PCI Express 3.0 x16 546 * Device ID: 15b3:1013 547 * MLNX_OFED: 3.4-1.0.0.0 548 * Firmware version: 12.17.1010 549 550#. Mellanox(R) ConnectX(R)-4 100G MCX416A-CCAT (2x100G) 551 552 * Host interface: PCI Express 3.0 x16 553 * Device ID: 15b3:1013 554 * MLNX_OFED: 3.4-1.0.0.0 555 * Firmware version: 12.17.1010 556 557#. Mellanox(R) ConnectX(R)-4 Lx 10G MCX4121A-XCAT (2x10G) 558 559 * Host interface: PCI Express 3.0 x8 560 * Device ID: 15b3:1015 561 * MLNX_OFED: 3.4-1.0.0.0 562 * Firmware version: 14.17.1010 563 564#. Mellanox(R) ConnectX(R)-4 Lx 25G MCX4121A-ACAT (2x25G) 565 566 * Host interface: PCI Express 3.0 x8 567 * Device ID: 15b3:1015 568 * MLNX_OFED: 3.4-1.0.0.0 569 * Firmware version: 14.17.1010 570 571 572Tested OSes 573----------- 574 575.. This section should contain a list of OSes that were tested with this release. 576 The format is as follows, in alphabetical order: 577 578 * CentOS 7.0 579 * Fedora 23 580 * Fedora 24 581 * FreeBSD 10.3 582 * Red Hat Enterprise Linux 7.2 583 * SUSE Enterprise Linux 12 584 * Ubuntu 15.10 585 * Ubuntu 16.04 LTS 586 * Wind River Linux 8 587 588 This section is a comment. Make sure to start the actual text at the margin. 589 590* CentOS 7.2 591* Fedora 23 592* Fedora 24 593* FreeBSD 10.3 594* FreeBSD 11 595* Red Hat Enterprise Linux Server release 6.7 (Santiago) 596* Red Hat Enterprise Linux Server release 7.0 (Maipo) 597* Red Hat Enterprise Linux Server release 7.2 (Maipo) 598* SUSE Enterprise Linux 12 599* Wind River Linux 6.0.0.26 600* Wind River Linux 8 601* Ubuntu 14.04 602* Ubuntu 15.04 603* Ubuntu 16.04 604