diff options
author | Christian Ehrhardt <christian.ehrhardt@canonical.com> | 2017-05-16 14:51:32 +0200 |
---|---|---|
committer | Christian Ehrhardt <christian.ehrhardt@canonical.com> | 2017-05-16 16:20:45 +0200 |
commit | 7595afa4d30097c1177b69257118d8ad89a539be (patch) | |
tree | 4bfeadc905c977e45e54a90c42330553b8942e4e /doc/guides/rel_notes | |
parent | ce3d555e43e3795b5d9507fcfc76b7a0a92fd0d6 (diff) |
Imported Upstream version 17.05
Change-Id: Id1e419c5a214e4a18739663b91f0f9a549f1fdc6
Signed-off-by: Christian Ehrhardt <christian.ehrhardt@canonical.com>
Diffstat (limited to 'doc/guides/rel_notes')
-rw-r--r-- | doc/guides/rel_notes/deprecation.rst | 155 | ||||
-rw-r--r-- | doc/guides/rel_notes/index.rst | 2 | ||||
-rw-r--r-- | doc/guides/rel_notes/known_issues.rst | 102 | ||||
-rw-r--r-- | doc/guides/rel_notes/release_16_11.rst | 110 | ||||
-rw-r--r-- | doc/guides/rel_notes/release_17_02.rst | 692 | ||||
-rw-r--r-- | doc/guides/rel_notes/release_17_05.rst | 829 |
6 files changed, 1731 insertions, 159 deletions
diff --git a/doc/guides/rel_notes/deprecation.rst b/doc/guides/rel_notes/deprecation.rst index 2d17bc6e..ba9b5a21 100644 --- a/doc/guides/rel_notes/deprecation.rst +++ b/doc/guides/rel_notes/deprecation.rst @@ -8,66 +8,123 @@ API and ABI deprecation notices are to be posted here. Deprecation Notices ------------------- +* eal: the following functions are deprecated starting from 17.05 and will + be removed in 17.08: + + - ``rte_set_log_level``, replaced by ``rte_log_set_global_level`` + - ``rte_get_log_level``, replaced by ``rte_log_get_global_level`` + - ``rte_set_log_type``, replaced by ``rte_log_set_level`` + - ``rte_get_log_type``, replaced by ``rte_log_get_level`` + +* devargs: An ABI change is planned for 17.08 for the structure ``rte_devargs``. + The current version is dependent on bus-specific device identifier, which will + be made generic and abstracted, in order to make the EAL bus-agnostic. + + Accompanying this evolution, device command line parameters will thus support + explicit bus definition in a device declaration. + * igb_uio: iomem mapping and sysfs files created for iomem and ioport in igb_uio will be removed, because we are able to detect these from what Linux has exposed, like the way we have done with uio-pci-generic. This change - targets release 17.02. - -* ABI/API changes are planned for 17.02: ``rte_device``, ``rte_driver`` will be - impacted because of introduction of a new ``rte_bus`` hierarchy. This would - also impact the way devices are identified by EAL. A bus-device-driver model - will be introduced providing a hierarchical view of devices. - -* ``eth_driver`` is planned to be removed in 17.02. This currently serves as - a placeholder for PMDs to register themselves. Changes for ``rte_bus`` will - provide a way to handle device initialization currently being done in - ``eth_driver``. - -* In 17.02 ABI changes are planned: the ``rte_eth_dev`` structure will be - extended with new function pointer ``tx_pkt_prepare`` allowing verification - and processing of packet burst to meet HW specific requirements before - transmit. Also new fields will be added to the ``rte_eth_desc_lim`` structure: - ``nb_seg_max`` and ``nb_mtu_seg_max`` providing information about number of - segments limit to be transmitted by device for TSO/non-TSO packets. - -* In 17.02 ABI change is planned: the ``rte_eth_dev_info`` structure - will be extended with a new member ``fw_version`` in order to store - the NIC firmware version. - -* ethdev: an API change is planned for 17.02 for the function - ``_rte_eth_dev_callback_process``. In 17.02 the function will return an ``int`` - instead of ``void`` and a fourth parameter ``void *ret_param`` will be added. + targets release 17.05. -* ethdev: for 17.02 it is planned to deprecate the following five functions - and move them in ixgbe: +* The VDEV subsystem will be converted as driver of the new bus model. + It may imply some EAL API changes in 17.08. - ``rte_eth_dev_set_vf_rxmode`` +* The struct ``rte_pci_driver`` is planned to be removed from + ``rte_cryptodev_driver`` and ``rte_eventdev_driver`` in 17.08. - ``rte_eth_dev_set_vf_rx`` +* ethdev: An API change is planned for 17.08 for the function + ``_rte_eth_dev_callback_process``. In 17.08 the function will return an ``int`` + instead of ``void`` and a fourth parameter ``void *ret_param`` will be added. + +* ethdev: for 17.08 it is planned to deprecate the following nine rte_eth_dev_* + functions and move them into the ixgbe PMD: + + ``rte_eth_dev_bypass_init``, ``rte_eth_dev_bypass_state_set``, + ``rte_eth_dev_bypass_state_show``, ``rte_eth_dev_bypass_event_store``, + ``rte_eth_dev_bypass_event_show``, ``rte_eth_dev_wd_timeout_store``, + ``rte_eth_dev_bypass_wd_timeout_show``, ``rte_eth_dev_bypass_ver_show``, + ``rte_eth_dev_bypass_wd_reset``. - ``rte_eth_dev_set_vf_tx`` + The following fields will be removed from ``struct eth_dev_ops``: - ``rte_eth_dev_set_vf_vlan_filter`` + ``bypass_init_t``, ``bypass_state_set_t``, ``bypass_state_show_t``, + ``bypass_event_set_t``, ``bypass_event_show_t``, ``bypass_wd_timeout_set_t``, + ``bypass_wd_timeout_show_t``, ``bypass_ver_show_t``, ``bypass_wd_reset_t``. - ``rte_eth_set_vf_rate_limit`` + The functions will be renamed to the following, and moved to the ``ixgbe`` PMD: -* ABI changes are planned for 17.02 in the ``rte_mbuf`` structure: some fields - may be reordered to facilitate the writing of ``data_off``, ``refcnt``, and - ``nb_segs`` in one operation, because some platforms have an overhead if the - store address is not naturally aligned. Other mbuf fields, such as the - ``port`` field, may be moved or removed as part of this mbuf work. A - ``timestamp`` will also be added. + ``rte_pmd_ixgbe_bypass_init``, ``rte_pmd_ixgbe_bypass_state_set``, + ``rte_pmd_ixgbe_bypass_state_show``, ``rte_pmd_ixgbe_bypass_event_set``, + ``rte_pmd_ixgbe_bypass_event_show``, ``rte_pmd_ixgbe_bypass_wd_timeout_set``, + ``rte_pmd_ixgbe_bypass_wd_timeout_show``, ``rte_pmd_ixgbe_bypass_ver_show``, + ``rte_pmd_ixgbe_bypass_wd_reset``. * The mbuf flags PKT_RX_VLAN_PKT and PKT_RX_QINQ_PKT are deprecated and are respectively replaced by PKT_RX_VLAN_STRIPPED and PKT_RX_QINQ_STRIPPED, that are better described. The old flags and - their behavior will be kept until 16.11 and will be removed in 17.02. - -* mempool: The functions ``rte_mempool_count`` and ``rte_mempool_free_count`` - will be removed in 17.02. - They are replaced by ``rte_mempool_avail_count`` and - ``rte_mempool_in_use_count`` respectively. - -* mempool: The functions for single/multi producer/consumer are deprecated - and will be removed in 17.02. - It is replaced by ``rte_mempool_generic_get/put`` functions. + their behavior will be kept until 17.05 and will be removed in 17.08. + +* ethdev: Tx offloads will no longer be enabled by default in 17.08. + Instead, the ``rte_eth_txmode`` structure will be extended with + bit field to enable each Tx offload. + Besides of making the Rx/Tx configuration API more consistent for the + application, PMDs will be able to provide a better out of the box performance. + As part of the work, ``ETH_TXQ_FLAGS_NO*`` will be superseded as well. + +* ethdev: the legacy filter API, including + ``rte_eth_dev_filter_supported()``, ``rte_eth_dev_filter_ctrl()`` as well + as filter types MACVLAN, ETHERTYPE, FLEXIBLE, SYN, NTUPLE, TUNNEL, FDIR, + HASH and L2_TUNNEL, is superseded by the generic flow API (rte_flow) in + PMDs that implement the latter. + Target release for removal of the legacy API will be defined once most + PMDs have switched to rte_flow. + +* cryptodev: All PMD names definitions will be moved to the individual PMDs + in 17.08. + +* cryptodev: The following changes will be done in in 17.08: + + - the device type enumeration ``rte_cryptodev_type`` will be removed + - the following structures will be changed: ``rte_cryptodev_session``, + ``rte_cryptodev_sym_session``, ``rte_cryptodev_info``, ``rte_cryptodev`` + - the function ``rte_cryptodev_count_devtype`` will be replaced by + ``rte_cryptodev_device_count_by_driver`` + +* cryptodev: API changes are planned for 17.08 for the sessions management + to make it agnostic to the underlying devices, removing coupling with + crypto PMDs, so a single session can be used on multiple devices. + + - ``struct rte_cryptodev_sym_session``, dev_id, dev_type will be removed, + _private field changed to the indirect array of private data pointers of + all supported devices + + An API of followed functions will be changed to allow operate on multiple + devices with one session: + + - ``rte_cryptodev_sym_session_create`` + - ``rte_cryptodev_sym_session_free`` + - ``rte_cryptodev_sym_session_pool_create`` + + While dev_id will not be stored in the ``struct rte_cryptodev_sym_session``, + directly, the change of followed API is required: + + - ``rte_cryptodev_queue_pair_attach_sym_session`` + - ``rte_cryptodev_queue_pair_detach_sym_session`` + +* cryptodev: the structures ``rte_crypto_op``, ``rte_crypto_sym_op`` + and ``rte_crypto_sym_xform`` will be restructured in 17.08, + for correctness and improvement. + +* crypto/scheduler: the following two functions are deprecated starting + from 17.05 and will be removed in 17.08: + + - ``rte_crpytodev_scheduler_mode_get``, replaced by ``rte_cryptodev_scheduler_mode_get`` + - ``rte_crpytodev_scheduler_mode_set``, replaced by ``rte_cryptodev_scheduler_mode_set`` + +* librte_table: The ``key_mask`` parameter will be added to all the hash tables + that currently do not have it, as well as to the hash compute function prototype. + The non-"do-sig" versions of the hash tables will be removed + (including the ``signature_offset`` parameter) + and the "do-sig" versions renamed accordingly. diff --git a/doc/guides/rel_notes/index.rst b/doc/guides/rel_notes/index.rst index 7e51b2c7..c4d243cd 100644 --- a/doc/guides/rel_notes/index.rst +++ b/doc/guides/rel_notes/index.rst @@ -36,6 +36,8 @@ Release Notes :numbered: rel_description + release_17_05 + release_17_02 release_16_11 release_16_07 release_16_04 diff --git a/doc/guides/rel_notes/known_issues.rst b/doc/guides/rel_notes/known_issues.rst index 3cd42376..3f6d8cb5 100644 --- a/doc/guides/rel_notes/known_issues.rst +++ b/doc/guides/rel_notes/known_issues.rst @@ -640,3 +640,105 @@ I40e VF may not receive packets in the promiscuous mode **Driver/Module**: Poll Mode Driver (PMD). + + +uio pci generic module bind failed in X710/XL710/XXV710 +------------------------------------------------------- + +**Description**: + The ``uio_pci_generic`` module is not supported by XL710, since the errata of XL710 + states that the Interrupt Status bit is not implemented. The errata is the item #71 + from the `xl710 controller spec + <http://www.intel.com/content/www/us/en/embedded/products/networking/xl710-10-40-controller-spec-update.html>`_. + The hw limitation is the same as other X710/XXV710 NICs. + +**Implication**: + When use ``--bind=uio_pci_generic``, the ``uio_pci_generic`` module probes device and check the Interrupt + Status bit. Since it is not supported by X710/XL710/XXV710, it return a *failed* value. The statement + that these products don’t support INTx masking, is indicated in the related `linux kernel commit + <https://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/commit/drivers/pci/quirks.c?id=8bcf4525c5d43306c5fd07e132bc8650e3491aec>`_. + +**Resolution/Workaround**: + Do not bind the ``uio_pci_generic`` module in X710/XL710/XXV710 NICs. + +**Affected Environment/Platform**: + All. + +**Driver/Module**: + Poll Mode Driver (PMD). + + +virtio tx_burst() function cannot do TSO on shared packets +---------------------------------------------------------- + +**Description**: + The standard TX function of virtio driver does not manage shared + packets properly when doing TSO. These packets should be read-only + but the driver modifies them. + + When doing TSO, the virtio standard expects that the L4 checksum is + set to the pseudo header checksum in the packet data, which is + different than the DPDK API. The driver patches the L4 checksum to + conform to the virtio standard, but this solution is invalid when + dealing with shared packets (clones), because the packet data should + not be modified. + +**Implication**: + In this situation, the shared data will be modified by the driver, + potentially causing race conditions with the other users of the mbuf + data. + +**Resolution/Workaround**: + The workaround in the application is to ensure that the network + headers in the packet data are not shared. + +**Affected Environment/Platform**: + Virtual machines running a virtio driver. + +**Driver/Module**: + Poll Mode Driver (PMD). + + +igb uio legacy mode can not be used in X710/XL710/XXV710 +-------------------------------------------------------- + +**Description**: + X710/XL710/XXV710 NICs lack support for indicating INTx is asserted via the interrupt + bit in the PCI status register. Linux delected them from INTx support table. The related + `commit <https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git/commit/drivers/pci/quirks.c?id=8bcf4525c5d43306c5fd07e132bc8650e3491aec>`_. + +**Implication**: + When insmod ``igb_uio`` with ``intr_mode=legacy`` and test link status interrupt. Since + INTx interrupt is not supported by X710/XL710/XXV710, it will cause Input/Output error + when reading file descriptor. + +**Resolution/Workaround**: + Do not bind ``igb_uio`` with legacy mode in X710/XL710/XXV710 NICs, or do not use kernel + version >4.7 when you bind ``igb_uio`` with legacy mode. + +**Affected Environment/Platform**: + ALL. + +**Driver/Module**: + Poll Mode Driver (PMD). + + +igb_uio can not be used when running l3fwd-power +------------------------------------------------ + +**Description**: + Link Status Change(LSC) interrupt and packet receiving interrupt are all enabled in l3fwd-power + APP. Because of UIO only support one interrupt, so these two kinds of interrupt need to share + one, and the receiving interrupt have the higher priority, so can't get the right link status. + +**Implication**: + When insmod ``igb_uio`` and running l3fwd-power APP, link status getting doesn't work properly. + +**Resolution/Workaround**: + Use vfio-pci when LSC and packet receiving interrupt enabled. + +**Affected Environment/Platform**: + ALL. + +**Driver/Module**: + ``igb_uio`` module. diff --git a/doc/guides/rel_notes/release_16_11.rst b/doc/guides/rel_notes/release_16_11.rst index fbf2e368..8c9ec65c 100644 --- a/doc/guides/rel_notes/release_16_11.rst +++ b/doc/guides/rel_notes/release_16_11.rst @@ -598,113 +598,3 @@ Tested OSes * Ubuntu 14.04 * Ubuntu 15.04 * Ubuntu 16.04 - -Fixes in 16.11 LTS Release --------------------------- - -16.11.1 -~~~~~~~ - -* app/test: fix symmetric session free in crypto perf tests -* app/testpmd: fix check for invalid ports -* app/testpmd: fix static build link ordering -* crypto/aesni_gcm: fix IV size in capabilities -* crypto/aesni_gcm: fix J0 padding bytes -* crypto/aesni_mb: fix incorrect crypto session -* crypto/openssl: fix extra bytes written at end of data -* crypto/openssl: fix indentation in guide -* crypto/qat: fix IV size in capabilities -* crypto/qat: fix to avoid buffer overwrite in OOP case -* cryptodev: fix crash on null dereference -* cryptodev: fix loop in device query -* devargs: reset driver name pointer on parsing failure -* drivers/crypto: fix different auth/cipher keys -* ethdev: check maximum number of queues for statistics -* ethdev: fix extended statistics name index -* ethdev: fix port data mismatched in multiple process model -* ethdev: fix port lookup if none -* ethdev: remove invalid function from version map -* examples/ethtool: fix driver information -* examples/ethtool: fix querying non-PCI devices -* examples/ip_pipeline: fix coremask limitation -* examples/ip_pipeline: fix parsing of pass-through pipeline -* examples/l2fwd-crypto: fix overflow -* examples/vhost: fix calculation of mbuf count -* examples/vhost: fix lcore initialization -* mempool: fix API documentation -* mempool: fix stack handler dequeue -* net/af_packet: fix fd use after free -* net/bnx2x: fix Rx mode configuration -* net/cxgbe/base: initialize variable before reading EEPROM -* net/cxgbe: fix parenthesis on bitwise operation -* net/ena: fix setting host attributes -* net/enic: fix hardcoding of some flow director masks -* net/enic: fix memory leak with oversized Tx packets -* net/enic: remove unnecessary function parameter attributes -* net/i40e: enable auto link update for 25G -* net/i40e: fix Rx checksum flag -* net/i40e: fix TC bandwidth definition -* net/i40e: fix VF reset flow -* net/i40e: fix checksum flag in x86 vector Rx -* net/i40e: fix crash in close -* net/i40e: fix deletion of all macvlan filters -* net/i40e: fix ethertype filter on X722 -* net/i40e: fix link update delay -* net/i40e: fix logging for Tx free threshold check -* net/i40e: fix segment number in reassemble process -* net/i40e: fix wrong return value when handling PF message -* net/i40e: fix xstats value mapping -* net/i40evf: fix casting between structs -* net/i40evf: fix reporting of imissed packets -* net/ixgbe: fix blocked interrupts -* net/ixgbe: fix received packets number for ARM -* net/ixgbe: fix received packets number for ARM NEON -* net/ixgbevf: fix max packet length -* net/mlx5: fix RSS hash result for flows -* net/mlx5: fix Rx packet validation and type -* net/mlx5: fix Tx doorbell -* net/mlx5: fix endianness in Tx completion queue -* net/mlx5: fix inconsistent link status -* net/mlx5: fix leak when starvation occurs -* net/mlx5: fix link status query -* net/mlx5: fix memory leak when parsing device params -* net/mlx5: fix missing inline attributes -* net/mlx5: fix updating total length of multi-packet send -* net/mlx: fix IPv4 and IPv6 packet type -* net/nfp: fix VLAN offload flags check -* net/nfp: fix typo in Tx offload capabilities -* net/pcap: fix timestamps in output pcap file -* net/qede/base: fix FreeBSD build -* net/qede: add vendor/device id info -* net/qede: fix PF fastpath status block index -* net/qede: fix filtering code -* net/qede: fix function declaration -* net/qede: fix per queue statisitics -* net/qede: fix resource leak -* net/vhost: fix socket file deleted on stop -* net/vhost: fix unix socket not removed as closing -* net/virtio-user: fix not properly reset device -* net/virtio-user: fix wrongly get/set features -* net/virtio: fix build without virtio-user -* net/virtio: fix crash when number of virtio devices > 1 -* net/virtio: fix multiple process support -* net/virtio: fix performance regression due to TSO -* net/virtio: fix rewriting LSC flag -* net/virtio: fix wrong Rx/Tx method for secondary process -* net/virtio: optimize header reset on any layout -* net/virtio: store IO port info locally -* net/virtio: store PCI operators pointer locally -* net/vmxnet3: fix Rx deadlock -* pci: fix check of mknod -* pmdinfogen: fix endianness with cross-compilation -* pmdinfogen: fix null dereference -* sched: fix crash when freeing port -* usertools: fix active interface detection when binding -* vdev: fix detaching with alias -* vfio: fix file descriptor leak in multi-process -* vhost: allow many vhost-user ports -* vhost: do not GSO when no header is present -* vhost: fix dead loop in enqueue path -* vhost: fix guest/host physical address mapping -* vhost: fix long stall of negotiation -* vhost: fix memory leak diff --git a/doc/guides/rel_notes/release_17_02.rst b/doc/guides/rel_notes/release_17_02.rst new file mode 100644 index 00000000..357965ac --- /dev/null +++ b/doc/guides/rel_notes/release_17_02.rst @@ -0,0 +1,692 @@ +DPDK Release 17.02 +================== + +.. **Read this first.** + + The text below explains how to update the release notes. + + Use proper spelling, capitalization and punctuation in all sections. + + Variable and config names should be quoted as fixed width text: ``LIKE_THIS``. + + Build the docs and view the output file to ensure the changes are correct:: + + make doc-guides-html + + firefox build/doc/html/guides/rel_notes/release_17_02.html + + +New Features +------------ + +.. This section should contain new features added in this release. Sample format: + + * **Add a title in the past tense with a full stop.** + + Add a short 1-2 sentence description in the past tense. The description + should be enough to allow someone scanning the release notes to understand + the new feature. + + If the feature adds a lot of sub-features you can use a bullet list like this. + + * Added feature foo to do something. + * Enhanced feature bar to do something else. + + Refer to the previous release notes for examples. + + This section is a comment. do not overwrite or remove it. + Also, make sure to start the actual text at the margin. + ========================================================= + +* **Added support for representing buses in EAL** + + The ``rte_bus`` structure was introduced into the EAL. This allows for + devices to be represented by buses they are connected to. A new bus can be + added to DPDK by extending the ``rte_bus`` structure and implementing the + scan and probe functions. Once a new bus is registered using the provided + APIs, new devices can be detected and initialized using bus scan and probe + callbacks. + + With this change, devices other than PCI or VDEV type can be represented + in the DPDK framework. + +* **Added generic EAL API for I/O device memory read/write operations.** + + This API introduces 8 bit, 16 bit, 32 bit and 64 bit I/O device + memory read/write operations along with "relaxed" versions. + + Weakly-ordered architectures like ARM need an additional I/O barrier for + device memory read/write access over PCI bus. By introducing the EAL + abstraction for I/O device memory read/write access, the drivers can access + I/O device memory in an architecture-agnostic manner. The relaxed version + does not have an additional I/O memory barrier, which is useful in accessing + the device registers of integrated controllers which is implicitly strongly + ordered with respect to memory access. + +* **Added generic flow API (rte_flow).** + + This API provides a generic means to configure hardware to match specific + ingress or egress traffic, alter its behavior and query related counters + according to any number of user-defined rules. + + In order to expose a single interface with an unambiguous behavior that is + common to all poll-mode drivers (PMDs) the ``rte_flow`` API is slightly + higher-level than the legacy filtering framework, which it encompasses and + supersedes (including all functions and filter types) . + + See the :ref:`Generic flow API <Generic_flow_API>` documentation for more + information. + +* **Added firmware version get API.** + + Added a new function ``rte_eth_dev_fw_version_get()`` to fetch the firmware + version for a given device. + +* **Added APIs for MACsec offload support to the ixgbe PMD.** + + Six new APIs have been added to the ixgbe PMD for MACsec offload support. + The declarations for the APIs can be found in ``rte_pmd_ixgbe.h``. + +* **Added I219 NICs support.** + + Added support for I219 Intel 1GbE NICs. + +* **Added VF Daemon (VFD) for i40e. - EXPERIMENTAL** + + This is an EXPERIMENTAL feature to enhance the capability of the DPDK PF as + many VF management features are not currently supported by the kernel PF + driver. Some new private APIs are implemented directly in the PMD without an + abstraction layer. They can be used directly by some users who have the + need. + + The new APIs to control VFs directly from PF include: + + * Set VF MAC anti-spoofing. + * Set VF VLAN anti-spoofing. + * Set TX loopback. + * Set VF unicast promiscuous mode. + * Set VF multicast promiscuous mode. + * Set VF MTU. + * Get/reset VF stats. + * Set VF MAC address. + * Set VF VLAN stripping. + * Vf VLAN insertion. + * Set VF broadcast mode. + * Set VF VLAN tag. + * Set VF VLAN filter. + + VFD also includes VF to PF mailbox message management from an application. + When the PF receives mailbox messages from the VF the PF should call the + callback provided by the application to know if they're permitted to be + processed. + + As an EXPERIMENTAL feature, please be aware it can be changed or even + removed without prior notice. + +* **Updated the i40e base driver.** + + Updated the i40e base driver, including the following changes: + + * Replace existing legacy ``memcpy()`` calls with ``i40e_memcpy()`` calls. + * Use ``BIT()`` macro instead of bit fields. + * Add clear all WoL filters implementation. + * Add broadcast promiscuous control per VLAN. + * Remove unused ``X722_SUPPORT`` and ``I40E_NDIS_SUPPORT`` macros. + +* **Updated the enic driver.** + + * Set new Rx checksum flags in mbufs to indicate unknown, good or bad checksums. + * Fix set/remove of MAC addresses. Allow up to 64 addresses per device. + * Enable TSO on outer headers. + +* **Added Solarflare libefx-based network PMD.** + + Added a new network PMD which supports Solarflare SFN7xxx and SFN8xxx family + of 10/40 Gbps adapters. + +* **Updated the mlx4 driver.** + + * Addressed a few bugs. + +* **Added support for Mellanox ConnectX-5 adapters (mlx5).** + + Added support for Mellanox ConnectX-5 family of 10/25/40/50/100 Gbps + adapters to the existing mlx5 PMD. + +* **Updated the mlx5 driver.** + + * Improve Tx performance by using vector logic. + * Improve RSS balancing when number of queues is not a power of two. + * Generic flow API support for Ethernet, IPv4, IPv4, UDP, TCP, VLAN and + VXLAN pattern items with DROP and QUEUE actions. + * Support for extended statistics. + * Addressed several data path bugs. + * As of MLNX_OFED 4.0-1.0.1.0, the Toeplitz RSS hash function is not + symmetric anymore for consistency with other PMDs. + +* **virtio-user with vhost-kernel as another exceptional path.** + + Previously, we upstreamed a virtual device, virtio-user with vhost-user as + the backend as a way of enabling IPC (Inter-Process Communication) and user + space container networking. + + Virtio-user with vhost-kernel as the backend is a solution for the exception + path, such as KNI, which exchanges packets with the kernel networking stack. + This solution is very promising in: + + * Maintenance: vhost and vhost-net (kernel) is an upstreamed and extensively + used kernel module. + * Features: vhost-net is designed to be a networking solution, which has + lots of networking related features, like multi-queue, TSO, multi-seg + mbuf, etc. + * Performance: similar to KNI, this solution would use one or more + kthreads to send/receive packets from user space DPDK applications, + which has little impact on user space polling thread (except that + it might enter into kernel space to wake up those kthreads if + necessary). + +* **Added virtio Rx interrupt support.** + + Added a feature to enable Rx interrupt mode for virtio pci net devices as + bound to VFIO (noiommu mode) and driven by virtio PMD. + + With this feature, the virtio PMD can switch between polling mode and + interrupt mode, to achieve best performance, and at the same time save + power. It can work on both legacy and modern virtio devices. In this mode, + each ``rxq`` is mapped with an excluded MSIx interrupt. + + See the :ref:`Virtio Interrupt Mode <virtio_interrupt_mode>` documentation + for more information. + +* **Added ARMv8 crypto PMD.** + + A new crypto PMD has been added, which provides combined mode cryptographic + operations optimized for ARMv8 processors. The driver can be used to enhance + performance in processing chained operations such as cipher + HMAC. + +* **Updated the QAT PMD.** + + The QAT PMD has been updated with additional support for: + + * DES algorithm. + * Scatter-gather list (SGL) support. + +* **Updated the AESNI MB PMD.** + + * The Intel(R) Multi Buffer Crypto for IPsec library used in + AESNI MB PMD has been moved to a new repository, in GitHub. + * Support has been added for single operations (cipher only and + authentication only). + +* **Updated the AES-NI GCM PMD.** + + The AES-NI GCM PMD was migrated from the Multi Buffer library to the ISA-L + library. The migration entailed adding additional support for: + + * GMAC algorithm. + * 256-bit cipher key. + * Session-less mode. + * Out-of place processing + * Scatter-gather support for chained mbufs (only out-of place and destination + mbuf must be contiguous) + +* **Added crypto performance test application.** + + Added a new performance test application for measuring performance + parameters of PMDs available in the crypto tree. + +* **Added Elastic Flow Distributor library (rte_efd).** + + Added a new library which uses perfect hashing to determine a target/value + for a given incoming flow key. + + The library does not store the key itself for lookup operations, and + therefore, lookup performance is not dependent on the key size. Also, the + target/value can be any arbitrary value (8 bits by default). Finally, the + storage requirement is much smaller than a hash-based flow table and + therefore, it can better fit in CPU cache and scale to millions of flow + keys. + + See the :ref:`Elastic Flow Distributor Library <Efd_Library>` documentation in + the Programmers Guide document, for more information. + + +Resolved Issues +--------------- + +.. This section should contain bug fixes added to the relevant sections. Sample format: + + * **code/section Fixed issue in the past tense with a full stop.** + + Add a short 1-2 sentence description of the resolved issue in the past tense. + The title should contain the code/lib section like a commit message. + Add the entries in alphabetic order in the relevant sections below. + + This section is a comment. do not overwrite or remove it. + Also, make sure to start the actual text at the margin. + ========================================================= + +Drivers +~~~~~~~ + +* **net/virtio: Fixed multiple process support.** + + Fixed a few regressions introduced in recent releases that break the virtio + multiple process support. + + +Examples +~~~~~~~~ + +* **examples/ethtool: Fixed crash with non-PCI devices.** + + Fixed issue where querying a non-PCI device was dereferencing non-existent + PCI data resulting in a segmentation fault. + + + +API Changes +----------- + +.. This section should contain API changes. Sample format: + + * Add a short 1-2 sentence description of the API change. Use fixed width + quotes for ``rte_function_names`` or ``rte_struct_names``. Use the past tense. + + This section is a comment. do not overwrite or remove it. + Also, make sure to start the actual text at the margin. + ========================================================= + +* **Moved five APIs for VF management from the ethdev to the ixgbe PMD.** + + The following five APIs for VF management from the PF have been removed from + the ethdev, renamed, and added to the ixgbe PMD:: + + rte_eth_dev_set_vf_rate_limit() + rte_eth_dev_set_vf_rx() + rte_eth_dev_set_vf_rxmode() + rte_eth_dev_set_vf_tx() + rte_eth_dev_set_vf_vlan_filter() + + The API's have been renamed to the following:: + + rte_pmd_ixgbe_set_vf_rate_limit() + rte_pmd_ixgbe_set_vf_rx() + rte_pmd_ixgbe_set_vf_rxmode() + rte_pmd_ixgbe_set_vf_tx() + rte_pmd_ixgbe_set_vf_vlan_filter() + + The declarations for the API’s can be found in ``rte_pmd_ixgbe.h``. + + +ABI Changes +----------- + +.. This section should contain ABI changes. Sample format: + + * Add a short 1-2 sentence description of the ABI change that was announced in + the previous releases and made in this release. Use fixed width quotes for + ``rte_function_names`` or ``rte_struct_names``. Use the past tense. + + This section is a comment. do not overwrite or remove it. + Also, make sure to start the actual text at the margin. + ========================================================= + + + +Shared Library Versions +----------------------- + +.. Update any library version updated in this release and prepend with a ``+`` + sign, like this: + + librte_acl.so.2 + + librte_cfgfile.so.2 + librte_cmdline.so.2 + + This section is a comment. do not overwrite or remove it. + ========================================================= + + +The libraries prepended with a plus sign were incremented in this version. + +.. code-block:: diff + + librte_acl.so.2 + librte_cfgfile.so.2 + librte_cmdline.so.2 + librte_cryptodev.so.2 + librte_distributor.so.1 + librte_eal.so.3 + + librte_ethdev.so.6 + librte_hash.so.2 + librte_ip_frag.so.1 + librte_jobstats.so.1 + librte_kni.so.2 + librte_kvargs.so.1 + librte_lpm.so.2 + librte_mbuf.so.2 + librte_mempool.so.2 + librte_meter.so.1 + librte_net.so.1 + librte_pdump.so.1 + librte_pipeline.so.3 + librte_pmd_bond.so.1 + librte_pmd_ring.so.2 + librte_port.so.3 + librte_power.so.1 + librte_reorder.so.1 + librte_ring.so.1 + librte_sched.so.1 + librte_table.so.2 + librte_timer.so.1 + librte_vhost.so.3 + + +Tested Platforms +---------------- + +.. This section should contain a list of platforms that were tested with this release. + + The format is: + + * <vendor> platform with <vendor> <type of devices> combinations + + * List of CPU + * List of OS + * List of devices + * Other relevant details... + + This section is a comment. do not overwrite or remove it. + Also, make sure to start the actual text at the margin. + ========================================================= + +This release has been tested with the below list of CPU/device/firmware/OS. +Each section describes a different set of combinations. + +* Intel(R) platforms with Mellanox(R) NICs combinations + + * Platform details + + * Intel(R) Xeon(R) CPU E5-2697 v2 @ 2.70GHz + * Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz + * Intel(R) Xeon(R) CPU E5-2697 v3 @ 2.60GHz + + * OS: + + * CentOS 7.0 + * Fedora 23 + * Fedora 24 + * FreeBSD 10.3 + * Red Hat Enterprise Linux 7.2 + * SUSE Enterprise Linux 12 + * Ubuntu 14.04 LTS + * Ubuntu 15.10 + * Ubuntu 16.04 LTS + * Wind River Linux 8 + + * MLNX_OFED: 4.0-1.0.1.0 + + * NICs: + + * Mellanox(R) ConnectX(R)-3 Pro 40G MCX354A-FCC_Ax (2x40G) + + * Host interface: PCI Express 3.0 x8 + * Device ID: 15b3:1007 + * Firmware version: 2.40.5030 + + * Mellanox(R) ConnectX(R)-4 10G MCX4111A-XCAT (1x10G) + + * Host interface: PCI Express 3.0 x8 + * Device ID: 15b3:1013 + * Firmware version: 12.18.1000 + + * Mellanox(R) ConnectX(R)-4 10G MCX4121A-XCAT (2x10G) + + * Host interface: PCI Express 3.0 x8 + * Device ID: 15b3:1013 + * Firmware version: 12.18.1000 + + * Mellanox(R) ConnectX(R)-4 25G MCX4111A-ACAT (1x25G) + + * Host interface: PCI Express 3.0 x8 + * Device ID: 15b3:1013 + * Firmware version: 12.18.1000 + + * Mellanox(R) ConnectX(R)-4 25G MCX4121A-ACAT (2x25G) + + * Host interface: PCI Express 3.0 x8 + * Device ID: 15b3:1013 + * Firmware version: 12.18.1000 + + * Mellanox(R) ConnectX(R)-4 40G MCX4131A-BCAT/MCX413A-BCAT (1x40G) + + * Host interface: PCI Express 3.0 x8 + * Device ID: 15b3:1013 + * Firmware version: 12.18.1000 + + * Mellanox(R) ConnectX(R)-4 40G MCX415A-BCAT (1x40G) + + * Host interface: PCI Express 3.0 x16 + * Device ID: 15b3:1013 + * Firmware version: 12.18.1000 + + * Mellanox(R) ConnectX(R)-4 50G MCX4131A-GCAT/MCX413A-GCAT (1x50G) + + * Host interface: PCI Express 3.0 x8 + * Device ID: 15b3:1013 + * Firmware version: 12.18.1000 + + * Mellanox(R) ConnectX(R)-4 50G MCX414A-BCAT (2x50G) + + * Host interface: PCI Express 3.0 x8 + * Device ID: 15b3:1013 + * Firmware version: 12.18.1000 + + * Mellanox(R) ConnectX(R)-4 50G MCX415A-GCAT/MCX416A-BCAT/MCX416A-GCAT (2x50G) + + * Host interface: PCI Express 3.0 x16 + * Device ID: 15b3:1013 + * Firmware version: 12.18.1000 + + * Mellanox(R) ConnectX(R)-4 50G MCX415A-CCAT (1x100G) + + * Host interface: PCI Express 3.0 x16 + * Device ID: 15b3:1013 + * Firmware version: 12.18.1000 + + * Mellanox(R) ConnectX(R)-4 100G MCX416A-CCAT (2x100G) + + * Host interface: PCI Express 3.0 x16 + * Device ID: 15b3:1013 + * Firmware version: 12.18.1000 + + * Mellanox(R) ConnectX(R)-4 Lx 10G MCX4121A-XCAT (2x10G) + + * Host interface: PCI Express 3.0 x8 + * Device ID: 15b3:1015 + * Firmware version: 14.18.1000 + + * Mellanox(R) ConnectX(R)-4 Lx 25G MCX4121A-ACAT (2x25G) + + * Host interface: PCI Express 3.0 x8 + * Device ID: 15b3:1015 + * Firmware version: 14.18.1000 + + * Mellanox(R) ConnectX(R)-5 100G MCX556A-ECAT (2x100G) + + * Host interface: PCI Express 3.0 x16 + * Device ID: 15b3:1017 + * Firmware version: 16.18.1000 + + * Mellanox(R) ConnectX-5 Ex EN 100G MCX516A-CDAT (2x100G) + + * Host interface: PCI Express 4.0 x16 + * Device ID: 15b3:1019 + * Firmware version: 16.18.1000 + +* IBM(R) Power8(R) with Mellanox(R) NICs combinations + + * Machine: + + * Processor: POWER8E (raw), AltiVec supported + + * type-model: 8247-22L + * Firmware FW810.21 (SV810_108) + + * OS: Ubuntu 16.04 LTS PPC le + + * MLNX_OFED: 4.0-1.0.1.0 + + * NICs: + + * Mellanox(R) ConnectX(R)-4 10G MCX4111A-XCAT (1x10G) + + * Host interface: PCI Express 3.0 x8 + * Device ID: 15b3:1013 + * Firmware version: 12.18.1000 + + * Mellanox(R) ConnectX(R)-4 10G MCX4121A-XCAT (2x10G) + + * Host interface: PCI Express 3.0 x8 + * Device ID: 15b3:1013 + * Firmware version: 12.18.1000 + + * Mellanox(R) ConnectX(R)-4 25G MCX4111A-ACAT (1x25G) + + * Host interface: PCI Express 3.0 x8 + * Device ID: 15b3:1013 + * Firmware version: 12.18.1000 + + * Mellanox(R) ConnectX(R)-4 25G MCX4121A-ACAT (2x25G) + + * Host interface: PCI Express 3.0 x8 + * Device ID: 15b3:1013 + * Firmware version: 12.18.1000 + + * Mellanox(R) ConnectX(R)-4 40G MCX4131A-BCAT/MCX413A-BCAT (1x40G) + + * Host interface: PCI Express 3.0 x8 + * Device ID: 15b3:1013 + * Firmware version: 12.18.1000 + + * Mellanox(R) ConnectX(R)-4 40G MCX415A-BCAT (1x40G) + + * Host interface: PCI Express 3.0 x16 + * Device ID: 15b3:1013 + * Firmware version: 12.18.1000 + + * Mellanox(R) ConnectX(R)-4 50G MCX4131A-GCAT/MCX413A-GCAT (1x50G) + + * Host interface: PCI Express 3.0 x8 + * Device ID: 15b3:1013 + * Firmware version: 12.18.1000 + + * Mellanox(R) ConnectX(R)-4 50G MCX414A-BCAT (2x50G) + + * Host interface: PCI Express 3.0 x8 + * Device ID: 15b3:1013 + * Firmware version: 12.18.1000 + + * Mellanox(R) ConnectX(R)-4 50G MCX415A-GCAT/MCX416A-BCAT/MCX416A-GCAT (2x50G) + + * Host interface: PCI Express 3.0 x16 + * Device ID: 15b3:1013 + * Firmware version: 12.18.1000 + + * Mellanox(R) ConnectX(R)-4 50G MCX415A-CCAT (1x100G) + + * Host interface: PCI Express 3.0 x16 + * Device ID: 15b3:1013 + * Firmware version: 12.18.1000 + + * Mellanox(R) ConnectX(R)-4 100G MCX416A-CCAT (2x100G) + + * Host interface: PCI Express 3.0 x16 + * Device ID: 15b3:1013 + * Firmware version: 12.18.1000 + + * Mellanox(R) ConnectX(R)-4 Lx 10G MCX4121A-XCAT (2x10G) + + * Host interface: PCI Express 3.0 x8 + * Device ID: 15b3:1015 + * Firmware version: 14.18.1000 + + * Mellanox(R) ConnectX(R)-4 Lx 25G MCX4121A-ACAT (2x25G) + + * Host interface: PCI Express 3.0 x8 + * Device ID: 15b3:1015 + * Firmware version: 14.18.1000 + + * Mellanox(R) ConnectX(R)-5 100G MCX556A-ECAT (2x100G) + + * Host interface: PCI Express 3.0 x16 + * Device ID: 15b3:1017 + * Firmware version: 16.18.1000 + +* Intel(R) platforms with Intel(R) NICs combinations + + * Platform details + + * Intel(R) Atom(TM) CPU C2758 @ 2.40GHz + * Intel(R) Xeon(R) CPU D-1540 @ 2.00GHz + * Intel(R) Xeon(R) CPU E5-4667 v3 @ 2.00GHz + * Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz + * Intel(R) Xeon(R) CPU E5-2699 v3 @ 2.30GHz + * Intel(R) Xeon(R) CPU E5-2695 v4 @ 2.10GHz + * Intel(R) Xeon(R) CPU E5-2658 v2 @ 2.40GHz + + * OS: + + * CentOS 7.2 + * Fedora 25 + * FreeBSD 11 + * Red Hat Enterprise Linux Server release 7.3 + * SUSE Enterprise Linux 12 + * Wind River Linux 8 + * Ubuntu 16.04 + * Ubuntu 16.10 + + * NICs: + + * Intel(R) 82599ES 10 Gigabit Ethernet Controller + + * Firmware version: 0x61bf0001 + * Device id (pf/vf): 8086:10fb / 8086:10ed + * Driver version: 4.0.1-k (ixgbe) + + * Intel(R) Corporation Ethernet Connection X552/X557-AT 10GBASE-T + + * Firmware version: 0x800001cf + * Device id (pf/vf): 8086:15ad / 8086:15a8 + * Driver version: 4.2.5 (ixgbe) + + * Intel(R) Ethernet Converged Network Adapter X710-DA4 (4x10G) + + * Firmware version: 5.05 + * Device id (pf/vf): 8086:1572 / 8086:154c + * Driver version: 1.5.23 (i40e) + + * Intel(R) Ethernet Converged Network Adapter X710-DA2 (2x10G) + + * Firmware version: 5.05 + * Device id (pf/vf): 8086:1572 / 8086:154c + * Driver version: 1.5.23 (i40e) + + * Intel(R) Ethernet Converged Network Adapter XL710-QDA1 (1x40G) + + * Firmware version: 5.05 + * Device id (pf/vf): 8086:1584 / 8086:154c + * Driver version: 1.5.23 (i40e) + + * Intel(R) Ethernet Converged Network Adapter XL710-QDA2 (2X40G) + + * Firmware version: 5.05 + * Device id (pf/vf): 8086:1583 / 8086:154c + * Driver version: 1.5.23 (i40e) + + * Intel(R) Corporation I350 Gigabit Network Connection + + * Firmware version: 1.48, 0x800006e7 + * Device id (pf/vf): 8086:1521 / 8086:1520 + * Driver version: 5.2.13-k (igb) diff --git a/doc/guides/rel_notes/release_17_05.rst b/doc/guides/rel_notes/release_17_05.rst new file mode 100644 index 00000000..cbdb4065 --- /dev/null +++ b/doc/guides/rel_notes/release_17_05.rst @@ -0,0 +1,829 @@ +DPDK Release 17.05 +================== + +.. **Read this first.** + + The text in the sections below explains how to update the release notes. + + Use proper spelling, capitalization and punctuation in all sections. + + Variable and config names should be quoted as fixed width text: + ``LIKE_THIS``. + + Build the docs and view the output file to ensure the changes are correct:: + + make doc-guides-html + + xdg-open build/doc/html/guides/rel_notes/release_17_05.html + + +New Features +------------ + +.. This section should contain new features added in this release. Sample + format: + + * **Add a title in the past tense with a full stop.** + + Add a short 1-2 sentence description in the past tense. The description + should be enough to allow someone scanning the release notes to + understand the new feature. + + If the feature adds a lot of sub-features you can use a bullet list like + this: + + * Added feature foo to do something. + * Enhanced feature bar to do something else. + + Refer to the previous release notes for examples. + + This section is a comment. do not overwrite or remove it. + Also, make sure to start the actual text at the margin. + ========================================================= + +* **Reorganized mbuf structure.** + + The mbuf structure has been reorganized as follows: + + * Align fields to facilitate the writing of ``data_off``, ``refcnt``, and + ``nb_segs`` in one operation. + * Use 2 bytes for port and number of segments. + * Move the sequence number to the second cache line. + * Add a timestamp field. + * Set default value for ``refcnt``, ``next`` and ``nb_segs`` at mbuf free. + +* **Added mbuf raw free API.** + + Moved ``rte_mbuf_raw_free()`` and ``rte_pktmbuf_prefree_seg()`` functions to + the public API. + +* **Added free Tx mbuf on demand API.** + + Added a new function ``rte_eth_tx_done_cleanup()`` which allows an + application to request the driver to release mbufs that are no longer in use + from a Tx ring, independent of whether or not the ``tx_rs_thresh`` has been + crossed. + +* **Added device removal interrupt.** + + Added a new ethdev event ``RTE_ETH_DEV_INTR_RMV`` to signify + the sudden removal of a device. + This event can be advertised by PCI drivers and enabled accordingly. + +* **Added EAL dynamic log framework.** + + Added new APIs to dynamically register named log types, and control + the level of each type independently. + +* **Added descriptor status ethdev API.** + + Added a new API to get the status of a descriptor. + + For Rx, it is almost similar to the ``rx_descriptor_done`` API, except + it differentiates descriptors which are held by the driver and not + returned to the hardware. For Tx, it is a new API. + +* **Increased number of next hops for LPM IPv6 to 2^21.** + + The next_hop field has been extended from 8 bits to 21 bits for IPv6. + +* **Added VFIO hotplug support.** + + Added hotplug support for VFIO in addition to the existing UIO support. + +* **Added PowerPC support to pci probing for vfio-pci devices.** + + Enabled sPAPR IOMMU based pci probing for vfio-pci devices. + +* **Kept consistent PMD batching behavior.** + + Removed the limit of fm10k/i40e/ixgbe Tx burst size and vhost Rx/Tx burst size + in order to support the same policy of "make an best effort to Rx/Tx pkts" + for PMDs. + +* **Updated the ixgbe base driver.** + + Updated the ixgbe base driver, including the following changes: + + * Add link block check for KR. + * Complete HW initialization even if SFP is not present. + * Add VF xcast promiscuous mode. + +* **Added PowerPC support for i40e and its vector PMD.** + + Enabled i40e PMD and its vector PMD by default in PowerPC. + +* **Added VF max bandwidth setting in i40e.** + + Enabled capability to set the max bandwidth for a VF in i40e. + +* **Added VF TC min and max bandwidth setting in i40e.** + + Enabled capability to set the min and max allocated bandwidth for a TC on a + VF in i40. + +* **Added TC strict priority mode setting on i40e.** + + There are 2 Tx scheduling modes supported for TCs by i40e HW: round robin + mode and strict priority mode. By default the round robin mode is used. It + is now possible to change the Tx scheduling mode for a TC. This is a global + setting on a physical port. + +* **Added i40e dynamic device personalization support.** + + * Added dynamic device personalization processing to i40e firmware. + +* **Added Cloud Filter for QinQ steering to i40e.** + + * Added a QinQ cloud filter on the i40e PMD, for steering traffic to a VM + using both VLAN tags. Note, this feature is not supported in Vector Mode. + +* **Updated mlx5 PMD.** + + Updated the mlx5 driver, including the following changes: + + * Added Generic flow API support for classification according to ether type. + * Extended Generic flow API support for classification of IPv6 flow + according to Vtc flow, Protocol and Hop limit. + * Added Generic flow API support for FLAG action. + * Added Generic flow API support for RSS action. + * Added support for TSO for non-tunneled and VXLAN packets. + * Added support for hardware Tx checksum offloads for VXLAN packets. + * Added support for user space Rx interrupt mode. + * Improved ConnectX-5 single core and maximum performance. + +* **Updated mlx4 PMD.** + + Updated the mlx4 driver, including the following changes: + + * Added support for Generic flow API basic flow items and actions. + * Added support for device removal event. + +* **Updated the sfc_efx driver.** + + * Added Generic Flow API support for Ethernet, VLAN, IPv4, IPv6, UDP and TCP + pattern items with QUEUE action for ingress traffic. + + * Added support for virtual functions (VFs). + +* **Added LiquidIO network PMD.** + + Added poll mode driver support for Cavium LiquidIO II server adapter VFs. + +* **Added Atomic Rules Arkville PMD.** + + Added a new poll mode driver for the Arkville family of + devices from Atomic Rules. The net/ark PMD supports line-rate + agnostic, multi-queue data movement on Arkville core FPGA instances. + +* **Added support for NXP DPAA2 - FSLMC bus.** + + Added the new bus "fslmc" driver for NXP DPAA2 devices. See the + "Network Interface Controller Drivers" document for more details of this new + driver. + +* **Added support for NXP DPAA2 Network PMD.** + + Added the new "dpaa2" net driver for NXP DPAA2 devices. See the + "Network Interface Controller Drivers" document for more details of this new + driver. + +* **Added support for the Wind River Systems AVP PMD.** + + Added a new networking driver for the AVP device type. Theses devices are + specific to the Wind River Systems virtualization platforms. + +* **Added vmxnet3 version 3 support.** + + Added support for vmxnet3 version 3 which includes several + performance enhancements such as configurable Tx data ring, Receive + Data Ring, and the ability to register memory regions. + +* **Updated the TAP driver.** + + Updated the TAP PMD to: + + * Support MTU modification. + * Support packet type for Rx. + * Support segmented packets on Rx and Tx. + * Speed up Rx on TAP when no packets are available. + * Support capturing traffic from another netdevice. + * Dynamically change link status when the underlying interface state changes. + * Added Generic Flow API support for Ethernet, VLAN, IPv4, IPv6, UDP and + TCP pattern items with DROP, QUEUE and PASSTHRU actions for ingress + traffic. + +* **Added MTU feature support to Virtio and Vhost.** + + Implemented new Virtio MTU feature in Vhost and Virtio: + + * Add ``rte_vhost_mtu_get()`` API to Vhost library. + * Enable Vhost PMD's MTU get feature. + * Get max MTU value from host in Virtio PMD + +* **Added interrupt mode support for virtio-user.** + + Implemented Rxq interrupt mode and LSC support for virtio-user as a virtual + device. Supported cases: + + * Rxq interrupt for virtio-user + vhost-user as the backend. + * Rxq interrupt for virtio-user + vhost-kernel as the backend. + * LSC interrupt for virtio-user + vhost-user as the backend. + +* **Added event driven programming model library (rte_eventdev).** + + This API introduces an event driven programming model. + + In a polling model, lcores poll ethdev ports and associated + Rx queues directly to look for a packet. By contrast in an event + driven model, lcores call the scheduler that selects packets for + them based on programmer-specified criteria. The Eventdev library + adds support for an event driven programming model, which offers + applications automatic multicore scaling, dynamic load balancing, + pipelining, packet ingress order maintenance and + synchronization services to simplify application packet processing. + + By introducing an event driven programming model, DPDK can support + both polling and event driven programming models for packet processing, + and applications are free to choose whatever model + (or combination of the two) best suits their needs. + +* **Added Software Eventdev PMD.** + + Added support for the software eventdev PMD. The software eventdev is a + software based scheduler device that implements the eventdev API. This + PMD allows an application to configure a pipeline using the eventdev + library, and run the scheduling workload on a CPU core. + +* **Added Cavium OCTEONTX Eventdev PMD.** + + Added the new octeontx ssovf eventdev driver for OCTEONTX devices. See the + "Event Device Drivers" document for more details on this new driver. + +* **Added information metrics library.** + + Added a library that allows information metrics to be added and updated + by producers, typically other libraries, for later retrieval by + consumers such as applications. It is intended to provide a + reporting mechanism that is independent of other libraries such + as ethdev. + +* **Added bit-rate calculation library.** + + Added a library that can be used to calculate device bit-rates. Calculated + bitrates are reported using the metrics library. + +* **Added latency stats library.** + + Added a library that measures packet latency. The collected statistics are + jitter and latency. For latency the minimum, average, and maximum is + measured. + +* **Added NXP DPAA2 SEC crypto PMD.** + + A new "dpaa2_sec" hardware based crypto PMD for NXP DPAA2 devices has been + added. See the "Crypto Device Drivers" document for more details on this + driver. + +* **Updated the Cryptodev Scheduler PMD.** + + * Added a packet-size based distribution mode, which distributes the enqueued + crypto operations among two slaves, based on their data lengths. + * Added fail-over scheduling mode, which enqueues crypto operations to a + primary slave first. Then, any operation that cannot be enqueued is + enqueued to a secondary slave. + * Added mode specific option support, so each scheduling mode can + now be configured individually by the new API. + +* **Updated the QAT PMD.** + + The QAT PMD has been updated with additional support for: + + * AES DOCSIS BPI algorithm. + * DES DOCSIS BPI algorithm. + * ZUC EEA3/EIA3 algorithms. + +* **Updated the AESNI MB PMD.** + + The AESNI MB PMD has been updated with additional support for: + + * AES DOCSIS BPI algorithm. + +* **Updated the OpenSSL PMD.** + + The OpenSSL PMD has been updated with additional support for: + + * DES DOCSIS BPI algorithm. + + +Resolved Issues +--------------- + +.. This section should contain bug fixes added to the relevant + sections. Sample format: + + * **code/section Fixed issue in the past tense with a full stop.** + + Add a short 1-2 sentence description of the resolved issue in the past + tense. + + The title should contain the code/lib section like a commit message. + + Add the entries in alphabetic order in the relevant sections below. + + This section is a comment. do not overwrite or remove it. + Also, make sure to start the actual text at the margin. + ========================================================= + + +* **l2fwd-keepalive: Fixed unclean shutdowns.** + + Added clean shutdown to l2fwd-keepalive so that it can free up + stale resources used for inter-process communication. + + +Known Issues +------------ + +.. This section should contain new known issues in this release. Sample format: + + * **Add title in present tense with full stop.** + + Add a short 1-2 sentence description of the known issue in the present + tense. Add information on any known workarounds. + + This section is a comment. do not overwrite or remove it. + Also, make sure to start the actual text at the margin. + ========================================================= + +* **LSC interrupt doesn't work for virtio-user + vhost-kernel.** + + LSC interrupt cannot be detected when setting the backend, tap device, + up/down as we fail to find a way to monitor such event. + + +API Changes +----------- + +.. This section should contain API changes. Sample format: + + * Add a short 1-2 sentence description of the API change. Use fixed width + quotes for ``rte_function_names`` or ``rte_struct_names``. Use the past + tense. + + This section is a comment. do not overwrite or remove it. + Also, make sure to start the actual text at the margin. + ========================================================= + +* The LPM ``next_hop`` field is extended from 8 bits to 21 bits for IPv6 + while keeping ABI compatibility. + +* **Reworked rte_ring library.** + + The rte_ring library has been reworked and updated. The following changes + have been made to it: + + * Removed the build-time setting ``CONFIG_RTE_RING_SPLIT_PROD_CONS``. + * Removed the build-time setting ``CONFIG_RTE_LIBRTE_RING_DEBUG``. + * Removed the build-time setting ``CONFIG_RTE_RING_PAUSE_REP_COUNT``. + * Removed the function ``rte_ring_set_water_mark`` as part of a general + removal of watermarks support in the library. + * Added an extra parameter to the burst/bulk enqueue functions to + return the number of free spaces in the ring after enqueue. This can + be used by an application to implement its own watermark functionality. + * Added an extra parameter to the burst/bulk dequeue functions to return + the number elements remaining in the ring after dequeue. + * Changed the return value of the enqueue and dequeue bulk functions to + match that of the burst equivalents. In all cases, ring functions which + operate on multiple packets now return the number of elements enqueued + or dequeued, as appropriate. The updated functions are: + + - ``rte_ring_mp_enqueue_bulk`` + - ``rte_ring_sp_enqueue_bulk`` + - ``rte_ring_enqueue_bulk`` + - ``rte_ring_mc_dequeue_bulk`` + - ``rte_ring_sc_dequeue_bulk`` + - ``rte_ring_dequeue_bulk`` + + NOTE: the above functions all have different parameters as well as + different return values, due to the other listed changes above. This + means that all instances of the functions in existing code will be + flagged by the compiler. The return value usage should be checked + while fixing the compiler error due to the extra parameter. + +* **Reworked rte_vhost library.** + + The rte_vhost library has been reworked to make it generic enough so that + the user could build other vhost-user drivers on top of it. To achieve this + the following changes have been made: + + * The following vhost-pmd APIs are removed: + + * ``rte_eth_vhost_feature_disable`` + * ``rte_eth_vhost_feature_enable`` + * ``rte_eth_vhost_feature_get`` + + * The vhost API ``rte_vhost_driver_callback_register(ops)`` is reworked to + be per vhost-user socket file. Thus, it takes one more argument: + ``rte_vhost_driver_callback_register(path, ops)``. + + * The vhost API ``rte_vhost_get_queue_num`` is deprecated, instead, + ``rte_vhost_get_vring_num`` should be used. + + * The following macros are removed in ``rte_virtio_net.h`` + + * ``VIRTIO_RXQ`` + * ``VIRTIO_TXQ`` + * ``VIRTIO_QNUM`` + + * The following net specific header files are removed in ``rte_virtio_net.h`` + + * ``linux/virtio_net.h`` + * ``sys/socket.h`` + * ``linux/if.h`` + * ``rte_ether.h`` + + * The vhost struct ``virtio_net_device_ops`` is renamed to + ``vhost_device_ops`` + + * The vhost API ``rte_vhost_driver_session_start`` is removed. Instead, + ``rte_vhost_driver_start`` should be used, and there is no need to create + a thread to call it. + + * The vhost public header file ``rte_virtio_net.h`` is renamed to + ``rte_vhost.h`` + + +ABI Changes +----------- + +.. This section should contain ABI changes. Sample format: + + * Add a short 1-2 sentence description of the ABI change that was announced + in the previous releases and made in this release. Use fixed width quotes + for ``rte_function_names`` or ``rte_struct_names``. Use the past tense. + + This section is a comment. do not overwrite or remove it. + Also, make sure to start the actual text at the margin. + ========================================================= + +* **Reorganized the mbuf structure.** + + The order and size of the fields in the ``mbuf`` structure changed, + as described in the `New Features`_ section. + +* The ``rte_cryptodev_info.sym`` structure has a new field ``max_nb_sessions_per_qp`` + to support drivers which may support a limited number of sessions per queue_pair. + + +Removed Items +------------- + +.. This section should contain removed items in this release. Sample format: + + * Add a short 1-2 sentence description of the removed item in the past + tense. + + This section is a comment. do not overwrite or remove it. + Also, make sure to start the actual text at the margin. + ========================================================= + +* KNI vhost support has been removed. + +* The dpdk_qat sample application has been removed. + +Shared Library Versions +----------------------- + +.. Update any library version updated in this release and prepend with a ``+`` + sign, like this: + + librte_acl.so.2 + + librte_cfgfile.so.2 + librte_cmdline.so.2 + + This section is a comment. do not overwrite or remove it. + ========================================================= + + +The libraries prepended with a plus sign were incremented in this version. + +.. code-block:: diff + + librte_acl.so.2 + + librte_bitratestats.so.1 + librte_cfgfile.so.2 + librte_cmdline.so.2 + librte_cryptodev.so.2 + librte_distributor.so.1 + + librte_eal.so.4 + librte_ethdev.so.6 + librte_hash.so.2 + librte_ip_frag.so.1 + librte_jobstats.so.1 + librte_kni.so.2 + librte_kvargs.so.1 + + librte_latencystats.so.1 + librte_lpm.so.2 + + librte_mbuf.so.3 + librte_mempool.so.2 + librte_meter.so.1 + + librte_metrics.so.1 + librte_net.so.1 + librte_pdump.so.1 + librte_pipeline.so.3 + librte_pmd_bond.so.1 + librte_pmd_ring.so.2 + librte_port.so.3 + librte_power.so.1 + librte_reorder.so.1 + librte_ring.so.1 + librte_sched.so.1 + librte_table.so.2 + librte_timer.so.1 + librte_vhost.so.3 + + +Tested Platforms +---------------- + +.. This section should contain a list of platforms that were tested with this + release. + + The format is: + + * <vendor> platform with <vendor> <type of devices> combinations + + * List of CPU + * List of OS + * List of devices + * Other relevant details... + + This section is a comment. do not overwrite or remove it. + Also, make sure to start the actual text at the margin. + ========================================================= + +* Intel(R) platforms with Intel(R) NICs combinations + + * CPU + + * Intel(R) Atom(TM) CPU C2758 @ 2.40GHz + * Intel(R) Xeon(R) CPU D-1540 @ 2.00GHz + * Intel(R) Xeon(R) CPU E5-4667 v3 @ 2.00GHz + * Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz + * Intel(R) Xeon(R) CPU E5-2699 v3 @ 2.30GHz + * Intel(R) Xeon(R) CPU E5-2695 v4 @ 2.10GHz + * Intel(R) Xeon(R) CPU E5-2658 v2 @ 2.40GHz + * Intel(R) Xeon(R) CPU E5-2658 v3 @ 2.20GHz + + * OS: + + * CentOS 7.2 + * Fedora 25 + * FreeBSD 11 + * Red Hat Enterprise Linux Server release 7.3 + * SUSE Enterprise Linux 12 + * Wind River Linux 8 + * Ubuntu 16.04 + * Ubuntu 16.10 + + * NICs: + + * Intel(R) 82599ES 10 Gigabit Ethernet Controller + + * Firmware version: 0x61bf0001 + * Device id (pf/vf): 8086:10fb / 8086:10ed + * Driver version: 4.0.1-k (ixgbe) + + * Intel(R) Corporation Ethernet Connection X552/X557-AT 10GBASE-T + + * Firmware version: 0x800001cf + * Device id (pf/vf): 8086:15ad / 8086:15a8 + * Driver version: 4.2.5 (ixgbe) + + * Intel(R) Ethernet Converged Network Adapter X710-DA4 (4x10G) + + * Firmware version: 5.05 + * Device id (pf/vf): 8086:1572 / 8086:154c + * Driver version: 1.5.23 (i40e) + + * Intel(R) Ethernet Converged Network Adapter X710-DA2 (2x10G) + + * Firmware version: 5.05 + * Device id (pf/vf): 8086:1572 / 8086:154c + * Driver version: 1.5.23 (i40e) + + * Intel(R) Ethernet Converged Network Adapter XL710-QDA1 (1x40G) + + * Firmware version: 5.05 + * Device id (pf/vf): 8086:1584 / 8086:154c + * Driver version: 1.5.23 (i40e) + + * Intel(R) Ethernet Converged Network Adapter XL710-QDA2 (2X40G) + + * Firmware version: 5.05 + * Device id (pf/vf): 8086:1583 / 8086:154c + * Driver version: 1.5.23 (i40e) + + * Intel(R) Corporation I350 Gigabit Network Connection + + * Firmware version: 1.48, 0x800006e7 + * Device id (pf/vf): 8086:1521 / 8086:1520 + * Driver version: 5.2.13-k (igb) + +* Intel(R) platforms with Mellanox(R) NICs combinations + + * Platform details: + + * Intel(R) Xeon(R) CPU E5-2697A v4 @ 2.60GHz + * Intel(R) Xeon(R) CPU E5-2697 v3 @ 2.60GHz + * Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz + * Intel(R) Xeon(R) CPU E5-2640 @ 2.50GHz + + * OS: + + * Red Hat Enterprise Linux Server release 7.3 (Maipo) + * Red Hat Enterprise Linux Server release 7.2 (Maipo) + * Ubuntu 16.10 + * Ubuntu 16.04 + * Ubuntu 14.04 + + * MLNX_OFED: 4.0-2.0.0.0 + + * NICs: + + * Mellanox(R) ConnectX(R)-3 Pro 40G MCX354A-FCC_Ax (2x40G) + + * Host interface: PCI Express 3.0 x8 + * Device ID: 15b3:1007 + * Firmware version: 2.40.5030 + + * Mellanox(R) ConnectX(R)-4 10G MCX4111A-XCAT (1x10G) + + * Host interface: PCI Express 3.0 x8 + * Device ID: 15b3:1013 + * Firmware version: 12.18.2000 + + * Mellanox(R) ConnectX(R)-4 10G MCX4121A-XCAT (2x10G) + + * Host interface: PCI Express 3.0 x8 + * Device ID: 15b3:1013 + * Firmware version: 12.18.2000 + + * Mellanox(R) ConnectX(R)-4 25G MCX4111A-ACAT (1x25G) + + * Host interface: PCI Express 3.0 x8 + * Device ID: 15b3:1013 + * Firmware version: 12.18.2000 + + * Mellanox(R) ConnectX(R)-4 25G MCX4121A-ACAT (2x25G) + + * Host interface: PCI Express 3.0 x8 + * Device ID: 15b3:1013 + * Firmware version: 12.18.2000 + + * Mellanox(R) ConnectX(R)-4 40G MCX4131A-BCAT/MCX413A-BCAT (1x40G) + + * Host interface: PCI Express 3.0 x8 + * Device ID: 15b3:1013 + * Firmware version: 12.18.2000 + + * Mellanox(R) ConnectX(R)-4 40G MCX415A-BCAT (1x40G) + + * Host interface: PCI Express 3.0 x16 + * Device ID: 15b3:1013 + * Firmware version: 12.18.2000 + + * Mellanox(R) ConnectX(R)-4 50G MCX4131A-GCAT/MCX413A-GCAT (1x50G) + + * Host interface: PCI Express 3.0 x8 + * Device ID: 15b3:1013 + * Firmware version: 12.18.2000 + + * Mellanox(R) ConnectX(R)-4 50G MCX414A-BCAT (2x50G) + + * Host interface: PCI Express 3.0 x8 + * Device ID: 15b3:1013 + * Firmware version: 12.18.2000 + + * Mellanox(R) ConnectX(R)-4 50G MCX415A-GCAT/MCX416A-BCAT/MCX416A-GCAT (2x50G) + + * Host interface: PCI Express 3.0 x16 + * Device ID: 15b3:1013 + * Firmware version: 12.18.2000 + + * Mellanox(R) ConnectX(R)-4 50G MCX415A-CCAT (1x100G) + + * Host interface: PCI Express 3.0 x16 + * Device ID: 15b3:1013 + * Firmware version: 12.18.2000 + + * Mellanox(R) ConnectX(R)-4 100G MCX416A-CCAT (2x100G) + + * Host interface: PCI Express 3.0 x16 + * Device ID: 15b3:1013 + * Firmware version: 12.18.2000 + + * Mellanox(R) ConnectX(R)-4 Lx 10G MCX4121A-XCAT (2x10G) + + * Host interface: PCI Express 3.0 x8 + * Device ID: 15b3:1015 + * Firmware version: 14.18.2000 + + * Mellanox(R) ConnectX(R)-4 Lx 25G MCX4121A-ACAT (2x25G) + + * Host interface: PCI Express 3.0 x8 + * Device ID: 15b3:1015 + * Firmware version: 14.18.2000 + + * Mellanox(R) ConnectX(R)-5 100G MCX556A-ECAT (2x100G) + + * Host interface: PCI Express 3.0 x16 + * Device ID: 15b3:1017 + * Firmware version: 16.19.1200 + + * Mellanox(R) ConnectX-5 Ex EN 100G MCX516A-CDAT (2x100G) + + * Host interface: PCI Express 4.0 x16 + * Device ID: 15b3:1019 + * Firmware version: 16.19.1200 + +* IBM(R) Power8(R) with Mellanox(R) NICs combinations + + * Platform details: + + * Processor: POWER8E (raw), AltiVec supported + * type-model: 8247-22L + * Firmware FW810.21 (SV810_108) + + * OS: Ubuntu 16.04 LTS PPC le + + * MLNX_OFED: 4.0-2.0.0.0 + + * NICs: + + * Mellanox(R) ConnectX(R)-4 10G MCX4111A-XCAT (1x10G) + + * Host interface: PCI Express 3.0 x8 + * Device ID: 15b3:1013 + * Firmware version: 12.18.2000 + + * Mellanox(R) ConnectX(R)-4 10G MCX4121A-XCAT (2x10G) + + * Host interface: PCI Express 3.0 x8 + * Device ID: 15b3:1013 + * Firmware version: 12.18.2000 + + * Mellanox(R) ConnectX(R)-4 25G MCX4111A-ACAT (1x25G) + + * Host interface: PCI Express 3.0 x8 + * Device ID: 15b3:1013 + * Firmware version: 12.18.2000 + + * Mellanox(R) ConnectX(R)-4 25G MCX4121A-ACAT (2x25G) + + * Host interface: PCI Express 3.0 x8 + * Device ID: 15b3:1013 + * Firmware version: 12.18.2000 + + * Mellanox(R) ConnectX(R)-4 40G MCX4131A-BCAT/MCX413A-BCAT (1x40G) + + * Host interface: PCI Express 3.0 x8 + * Device ID: 15b3:1013 + * Firmware version: 12.18.2000 + + * Mellanox(R) ConnectX(R)-4 40G MCX415A-BCAT (1x40G) + + * Host interface: PCI Express 3.0 x16 + * Device ID: 15b3:1013 + * Firmware version: 12.18.2000 + + * Mellanox(R) ConnectX(R)-4 50G MCX4131A-GCAT/MCX413A-GCAT (1x50G) + + * Host interface: PCI Express 3.0 x8 + * Device ID: 15b3:1013 + * Firmware version: 12.18.2000 + + * Mellanox(R) ConnectX(R)-4 50G MCX414A-BCAT (2x50G) + + * Host interface: PCI Express 3.0 x8 + * Device ID: 15b3:1013 + * Firmware version: 12.18.2000 + + * Mellanox(R) ConnectX(R)-4 50G MCX415A-GCAT/MCX416A-BCAT/MCX416A-GCAT (2x50G) + + * Host interface: PCI Express 3.0 x16 + * Device ID: 15b3:1013 + * Firmware version: 12.18.2000 + + * Mellanox(R) ConnectX(R)-4 50G MCX415A-CCAT (1x100G) + + * Host interface: PCI Express 3.0 x16 + * Device ID: 15b3:1013 + * Firmware version: 12.18.2000 + + * Mellanox(R) ConnectX(R)-4 100G MCX416A-CCAT (2x100G) + + * Host interface: PCI Express 3.0 x16 + * Device ID: 15b3:1013 + * Firmware version: 12.18.2000 |