diff options
Diffstat (limited to 'src/seastar/dpdk/doc/guides/rel_notes')
-rw-r--r-- | src/seastar/dpdk/doc/guides/rel_notes/deprecation.rst | 130 | ||||
-rw-r--r-- | src/seastar/dpdk/doc/guides/rel_notes/index.rst | 50 | ||||
-rw-r--r-- | src/seastar/dpdk/doc/guides/rel_notes/known_issues.rst | 744 | ||||
-rw-r--r-- | src/seastar/dpdk/doc/guides/rel_notes/rel_description.rst | 40 | ||||
-rw-r--r-- | src/seastar/dpdk/doc/guides/rel_notes/release_16_04.rst | 649 | ||||
-rw-r--r-- | src/seastar/dpdk/doc/guides/rel_notes/release_16_07.rst | 550 | ||||
-rw-r--r-- | src/seastar/dpdk/doc/guides/rel_notes/release_16_11.rst | 600 | ||||
-rw-r--r-- | src/seastar/dpdk/doc/guides/rel_notes/release_17_02.rst | 692 | ||||
-rw-r--r-- | src/seastar/dpdk/doc/guides/rel_notes/release_17_05.rst | 829 | ||||
-rw-r--r-- | src/seastar/dpdk/doc/guides/rel_notes/release_1_8.rst | 64 | ||||
-rw-r--r-- | src/seastar/dpdk/doc/guides/rel_notes/release_2_0.rst | 139 | ||||
-rw-r--r-- | src/seastar/dpdk/doc/guides/rel_notes/release_2_1.rst | 1042 | ||||
-rw-r--r-- | src/seastar/dpdk/doc/guides/rel_notes/release_2_2.rst | 621 | ||||
-rw-r--r-- | src/seastar/dpdk/doc/guides/rel_notes/supported_os.rst | 49 |
14 files changed, 6199 insertions, 0 deletions
diff --git a/src/seastar/dpdk/doc/guides/rel_notes/deprecation.rst b/src/seastar/dpdk/doc/guides/rel_notes/deprecation.rst new file mode 100644 index 00000000..ba9b5a21 --- /dev/null +++ b/src/seastar/dpdk/doc/guides/rel_notes/deprecation.rst @@ -0,0 +1,130 @@ +ABI and API Deprecation +======================= + +See the :doc:`guidelines document for details of the ABI policy </contributing/versioning>`. +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.05. + +* The VDEV subsystem will be converted as driver of the new bus model. + It may imply some EAL API changes in 17.08. + +* The struct ``rte_pci_driver`` is planned to be removed from + ``rte_cryptodev_driver`` and ``rte_eventdev_driver`` in 17.08. + +* 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``. + + The following fields will be removed from ``struct eth_dev_ops``: + + ``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``. + + The functions will be renamed to the following, and moved to the ``ixgbe`` PMD: + + ``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 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/src/seastar/dpdk/doc/guides/rel_notes/index.rst b/src/seastar/dpdk/doc/guides/rel_notes/index.rst new file mode 100644 index 00000000..c4d243cd --- /dev/null +++ b/src/seastar/dpdk/doc/guides/rel_notes/index.rst @@ -0,0 +1,50 @@ +.. BSD LICENSE + Copyright(c) 2010-2014 Intel Corporation. All rights reserved. + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + * Neither the name of Intel Corporation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Release Notes +============= + +.. toctree:: + :maxdepth: 1 + :numbered: + + rel_description + release_17_05 + release_17_02 + release_16_11 + release_16_07 + release_16_04 + release_2_2 + release_2_1 + release_2_0 + release_1_8 + supported_os + known_issues + deprecation diff --git a/src/seastar/dpdk/doc/guides/rel_notes/known_issues.rst b/src/seastar/dpdk/doc/guides/rel_notes/known_issues.rst new file mode 100644 index 00000000..3f6d8cb5 --- /dev/null +++ b/src/seastar/dpdk/doc/guides/rel_notes/known_issues.rst @@ -0,0 +1,744 @@ +.. BSD LICENSE + Copyright(c) 2010-2014 Intel Corporation. All rights reserved. + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + * Neither the name of Intel Corporation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +Known Issues and Limitations in Legacy Releases +=============================================== + +This section describes known issues with the DPDK software that aren't covered in the version specific release +notes sections. + + +Unit Test for Link Bonding may fail at test_tlb_tx_burst() +---------------------------------------------------------- + +**Description**: + Unit tests will fail in ``test_tlb_tx_burst()`` function with error for uneven distribution of packets. + +**Implication**: + Unit test link_bonding_autotest will fail. + +**Resolution/Workaround**: + There is no workaround available. + +**Affected Environment/Platform**: + Fedora 20. + +**Driver/Module**: + Link Bonding. + + +Pause Frame Forwarding does not work properly on igb +---------------------------------------------------- + +**Description**: + For igb devices rte_eth_flow_ctrl_set does not work as expected. + Pause frames are always forwarded on igb, regardless of the ``RFCE``, ``MPMCF`` and ``DPF`` registers. + +**Implication**: + Pause frames will never be rejected by the host on 1G NICs and they will always be forwarded. + +**Resolution/Workaround**: + There is no workaround available. + +**Affected Environment/Platform**: + All. + +**Driver/Module**: + Poll Mode Driver (PMD). + + +In packets provided by the PMD, some flags are missing +------------------------------------------------------ + +**Description**: + In packets provided by the PMD, some flags are missing. + The application does not have access to information provided by the hardware + (packet is broadcast, packet is multicast, packet is IPv4 and so on). + +**Implication**: + The ``ol_flags`` field in the ``rte_mbuf`` structure is not correct and should not be used. + +**Resolution/Workaround**: + The application has to parse the Ethernet header itself to get the information, which is slower. + +**Affected Environment/Platform**: + All. + +**Driver/Module**: + Poll Mode Driver (PMD). + +The rte_malloc library is not fully implemented +----------------------------------------------- + +**Description**: + The ``rte_malloc`` library is not fully implemented. + +**Implication**: + All debugging features of rte_malloc library described in architecture documentation are not yet implemented. + +**Resolution/Workaround**: + No workaround available. + +**Affected Environment/Platform**: + All. + +**Driver/Module**: + ``rte_malloc``. + + +HPET reading is slow +-------------------- + +**Description**: + Reading the HPET chip is slow. + +**Implication**: + An application that calls ``rte_get_hpet_cycles()`` or ``rte_timer_manage()`` runs slower. + +**Resolution/Workaround**: + The application should not call these functions too often in the main loop. + An alternative is to use the TSC register through ``rte_rdtsc()`` which is faster, + but specific to an lcore and is a cycle reference, not a time reference. + +**Affected Environment/Platform**: + All. + +**Driver/Module**: + Environment Abstraction Layer (EAL). + + +HPET timers do not work on the Osage customer reference platform +---------------------------------------------------------------- + +**Description**: + HPET timers do not work on the Osage customer reference platform which includes an Intel® Xeon® processor 5500 + series processor) using the released BIOS from Intel. + +**Implication**: + On Osage boards, the implementation of the ``rte_delay_us()`` function must be changed to not use the HPET timer. + +**Resolution/Workaround**: + This can be addressed by building the system with the ``CONFIG_RTE_LIBEAL_USE_HPET=n`` + configuration option or by using the ``--no-hpet`` EAL option. + +**Affected Environment/Platform**: + The Osage customer reference platform. + Other vendor platforms with Intel® Xeon® processor 5500 series processors should + work correctly, provided the BIOS supports HPET. + +**Driver/Module**: + ``lib/librte_eal/common/include/rte_cycles.h`` + + +Not all variants of supported NIC types have been used in testing +----------------------------------------------------------------- + +**Description**: + The supported network interface cards can come in a number of variants with different device ID's. + Not all of these variants have been tested with the DPDK. + + The NIC device identifiers used during testing: + + * Intel® Ethernet Controller XL710 for 40GbE QSFP+ [8086:1584] + * Intel® Ethernet Controller XL710 for 40GbE QSFP+ [8086:1583] + * Intel® Ethernet Controller X710 for 10GbE SFP+ [8086:1572] + * Intel® 82576 Gigabit Ethernet Controller [8086:10c9] + * Intel® 82576 Quad Copper Gigabit Ethernet Controller [8086:10e8] + * Intel® 82580 Dual Copper Gigabit Ethernet Controller [8086:150e] + * Intel® I350 Quad Copper Gigabit Ethernet Controller [8086:1521] + * Intel® 82599 Dual Fibre 10 Gigabit Ethernet Controller [8086:10fb] + * Intel® Ethernet Server Adapter X520-T2 [8086: 151c] + * Intel® Ethernet Controller X540-T2 [8086:1528] + * Intel® 82574L Gigabit Network Connection [8086:10d3] + * Emulated Intel® 82540EM Gigabit Ethernet Controller [8086:100e] + * Emulated Intel® 82545EM Gigabit Ethernet Controller [8086:100f] + * Intel® Ethernet Server Adapter X520-4 [8086:154a] + * Intel® Ethernet Controller I210 [8086:1533] + +**Implication**: + Risk of issues with untested variants. + +**Resolution/Workaround**: + Use tested NIC variants. For those supported Ethernet controllers, additional device + IDs may be added to the software if required. + +**Affected Environment/Platform**: + All. + +**Driver/Module**: + Poll-mode drivers + + +Multi-process sample app requires exact memory mapping +------------------------------------------------------ + +**Description**: + The multi-process example application assumes that + it is possible to map the hugepage memory to the same virtual addresses in client and server applications. + Occasionally, very rarely with 64-bit, this does not occur and a client application will fail on startup. + The Linux "address-space layout randomization" security feature can sometimes cause this to occur. + +**Implication**: + A multi-process client application fails to initialize. + +**Resolution/Workaround**: + See the "Multi-process Limitations" section in the DPDK Programmer's Guide for more information. + +**Affected Environment/Platform**: + All. + +**Driver/Module**: + Multi-process example application + + +Packets are not sent by the 1 GbE/10 GbE SR-IOV driver when the source MAC is not the MAC assigned to the VF NIC +---------------------------------------------------------------------------------------------------------------- + +**Description**: + The 1 GbE/10 GbE SR-IOV driver can only send packets when the Ethernet header's source MAC address is the same as + that of the VF NIC. + The reason for this is that the Linux ``ixgbe`` driver module in the host OS has its anti-spoofing feature enabled. + +**Implication**: + Packets sent using the 1 GbE/10 GbE SR-IOV driver must have the source MAC address correctly set to that of the VF NIC. + Packets with other source address values are dropped by the NIC if the application attempts to transmit them. + +**Resolution/Workaround**: + Configure the Ethernet source address in each packet to match that of the VF NIC. + +**Affected Environment/Platform**: + All. + +**Driver/Module**: + 1 GbE/10 GbE VF Poll Mode Driver (PMD). + + +SR-IOV drivers do not fully implement the rte_ethdev API +-------------------------------------------------------- + +**Description**: + The SR-IOV drivers only supports the following rte_ethdev API functions: + + * rte_eth_dev_configure() + * rte_eth_tx_queue_setup() + * rte_eth_rx_queue_setup() + * rte_eth_dev_info_get() + * rte_eth_dev_start() + * rte_eth_tx_burst() + * rte_eth_rx_burst() + * rte_eth_dev_stop() + * rte_eth_stats_get() + * rte_eth_stats_reset() + * rte_eth_link_get() + * rte_eth_link_get_no_wait() + +**Implication**: + Calling an unsupported function will result in an application error. + +**Resolution/Workaround**: + Do not use other rte_ethdev API functions in applications that use the SR-IOV drivers. + +**Affected Environment/Platform**: + All. + +**Driver/Module**: + VF Poll Mode Driver (PMD). + + +PMD does not work with --no-huge EAL command line parameter +----------------------------------------------------------- + +**Description**: + Currently, the DPDK does not store any information about memory allocated by ``malloc()` (for example, NUMA node, + physical address), hence PMD drivers do not work when the ``--no-huge`` command line parameter is supplied to EAL. + +**Implication**: + Sending and receiving data with PMD will not work. + +**Resolution/Workaround**: + Use huge page memory or use VFIO to map devices. + +**Affected Environment/Platform**: + Systems running the DPDK on Linux + +**Driver/Module**: + Poll Mode Driver (PMD). + + +Some hardware off-load functions are not supported by the VF Driver +------------------------------------------------------------------- + +**Description**: + Currently, configuration of the following items is not supported by the VF driver: + + * IP/UDP/TCP checksum offload + * Jumbo Frame Receipt + * HW Strip CRC + +**Implication**: + Any configuration for these items in the VF register will be ignored. + The behavior is dependent on the current PF setting. + +**Resolution/Workaround**: + For the PF (Physical Function) status on which the VF driver depends, there is an option item under PMD in the + config file. + For others, the VF will keep the same behavior as PF setting. + +**Affected Environment/Platform**: + All. + +**Driver/Module**: + VF (SR-IOV) Poll Mode Driver (PMD). + + +Kernel crash on IGB port unbinding +---------------------------------- + +**Description**: + Kernel crash may occur when unbinding 1G ports from the igb_uio driver, on 2.6.3x kernels such as shipped + with Fedora 14. + +**Implication**: + Kernel crash occurs. + +**Resolution/Workaround**: + Use newer kernels or do not unbind ports. + +**Affected Environment/Platform**: + 2.6.3x kernels such as shipped with Fedora 14 + +**Driver/Module**: + IGB Poll Mode Driver (PMD). + + +Twinpond and Ironpond NICs do not report link status correctly +-------------------------------------------------------------- + +**Description**: + Twin Pond/Iron Pond NICs do not bring the physical link down when shutting down the port. + +**Implication**: + The link is reported as up even after issuing ``shutdown`` command unless the cable is physically disconnected. + +**Resolution/Workaround**: + None. + +**Affected Environment/Platform**: + Twin Pond and Iron Pond NICs + +**Driver/Module**: + Poll Mode Driver (PMD). + + +Discrepancies between statistics reported by different NICs +----------------------------------------------------------- + +**Description**: + Gigabit Ethernet devices from Intel include CRC bytes when calculating packet reception statistics regardless + of hardware CRC stripping state, while 10-Gigabit Ethernet devices from Intel do so only when hardware CRC + stripping is disabled. + +**Implication**: + There may be a discrepancy in how different NICs display packet reception statistics. + +**Resolution/Workaround**: + None + +**Affected Environment/Platform**: + All. + +**Driver/Module**: + Poll Mode Driver (PMD). + + +Error reported opening files on DPDK initialization +--------------------------------------------------- + +**Description**: + On DPDK application startup, errors may be reported when opening files as part of the initialization process. + This occurs if a large number, for example, 500 or more, or if hugepages are used, due to the per-process + limit on the number of open files. + +**Implication**: + The DPDK application may fail to run. + +**Resolution/Workaround**: + If using 2 MB hugepages, consider switching to a fewer number of 1 GB pages. + Alternatively, use the ``ulimit`` command to increase the number of files which can be opened by a process. + +**Affected Environment/Platform**: + All. + +**Driver/Module**: + Environment Abstraction Layer (EAL). + + +Intel® QuickAssist Technology sample application does not work on a 32-bit OS on Shumway +---------------------------------------------------------------------------------------- + +**Description**: + The Intel® Communications Chipset 89xx Series device does not fully support NUMA on a 32-bit OS. + Consequently, the sample application cannot work properly on Shumway, since it requires NUMA on both nodes. + +**Implication**: + The sample application cannot work in 32-bit mode with emulated NUMA, on multi-socket boards. + +**Resolution/Workaround**: + There is no workaround available. + +**Affected Environment/Platform**: + Shumway + +**Driver/Module**: + All. + + +Differences in how different Intel NICs handle maximum packet length for jumbo frame +------------------------------------------------------------------------------------ + +**Description**: + 10 Gigabit Ethernet devices from Intel do not take VLAN tags into account when calculating packet size + while Gigabit Ethernet devices do so for jumbo frames. + +**Implication**: + When receiving packets with VLAN tags, the actual maximum size of useful payload that Intel Gigabit Ethernet + devices are able to receive is 4 bytes (or 8 bytes in the case of packets with extended VLAN tags) less than + that of Intel 10 Gigabit Ethernet devices. + +**Resolution/Workaround**: + Increase the configured maximum packet size when using Intel Gigabit Ethernet devices. + +**Affected Environment/Platform**: + All. + +**Driver/Module**: + Poll Mode Driver (PMD). + + +Binding PCI devices to igb_uio fails on Linux kernel 3.9 when more than one device is used +------------------------------------------------------------------------------------------ + +**Description**: + A known bug in the uio driver included in Linux kernel version 3.9 prevents more than one PCI device to be + bound to the igb_uio driver. + +**Implication**: + The Poll Mode Driver (PMD) will crash on initialization. + +**Resolution/Workaround**: + Use earlier or later kernel versions, or apply the following + `patch <https://github.com/torvalds/linux/commit/5ed0505c713805f89473cdc0bbfb5110dfd840cb>`_. + +**Affected Environment/Platform**: + Linux systems with kernel version 3.9 + +**Driver/Module**: + igb_uio module + + +GCC might generate Intel® AVX instructions for processors without Intel® AVX support +------------------------------------------------------------------------------------ + +**Description**: + When compiling DPDK (and any DPDK app), gcc may generate Intel® AVX instructions, even when the + processor does not support Intel® AVX. + +**Implication**: + Any DPDK app might crash while starting up. + +**Resolution/Workaround**: + Either compile using icc or set ``EXTRA_CFLAGS='-O3'`` prior to compilation. + +**Affected Environment/Platform**: + Platforms which processor does not support Intel® AVX. + +**Driver/Module**: + Environment Abstraction Layer (EAL). + +Ethertype filter could receive other packets (non-assigned) in Niantic +---------------------------------------------------------------------- + +**Description**: + On Intel® Ethernet Controller 82599EB When Ethertype filter (priority enable) was set, unmatched packets also + could be received on the assigned queue, such as ARP packets without 802.1q tags or with the user priority not + equal to set value. + Launch the testpmd by disabling RSS and with multiply queues, then add the ethertype filter like the following + and then start forwarding:: + + add_ethertype_filter 0 ethertype 0x0806 priority enable 3 queue 2 index 1 + + When sending ARP packets without 802.1q tag and with user priority as non-3 by tester, all the ARP packets can + be received on the assigned queue. + +**Implication**: + The user priority comparing in Ethertype filter cannot work probably. + It is a NIC's issue due to the following: "In fact, ETQF.UP is not functional, and the information will + be added in errata of 82599 and X540." + +**Resolution/Workaround**: + None + +**Affected Environment/Platform**: + All. + +**Driver/Module**: + Poll Mode Driver (PMD). + + +Cannot set link speed on Intel® 40G Ethernet controller +------------------------------------------------------- + +**Description**: + On Intel® 40G Ethernet Controller you cannot set the link to specific speed. + +**Implication**: + The link speed cannot be changed forcibly, though it can be configured by application. + +**Resolution/Workaround**: + None + +**Affected Environment/Platform**: + All. + +**Driver/Module**: + Poll Mode Driver (PMD). + + +Devices bound to igb_uio with VT-d enabled do not work on Linux kernel 3.15-3.17 +-------------------------------------------------------------------------------- + +**Description**: + When VT-d is enabled (``iommu=pt intel_iommu=on``), devices are 1:1 mapped. + In the Linux kernel unbinding devices from drivers removes that mapping which result in IOMMU errors. + Introduced in Linux `kernel 3.15 commit + <https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/drivers/iommu/intel-iommu.c?id=816997d03bca9fabcee65f3481eb0297103eceb7>`_, + solved in Linux `kernel 3.18 commit + <https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/drivers/iommu/intel-iommu.c?id=1196c2fb0407683c2df92d3d09f9144d42830894>`_. + +**Implication**: + Devices will not be allowed to access memory, resulting in following kernel errors:: + + dmar: DRHD: handling fault status reg 2 + dmar: DMAR:[DMA Read] Request device [02:00.0] fault addr a0c58000 + DMAR:[fault reason 02] Present bit in context entry is clear + +**Resolution/Workaround**: + Use earlier or later kernel versions, or avoid driver binding on boot by blacklisting the driver modules. + I.e., in the case of ``ixgbe``, we can pass the kernel command line option: ``modprobe.blacklist=ixgbe``. + This way we do not need to unbind the device to bind it to igb_uio. + +**Affected Environment/Platform**: + Linux systems with kernel versions 3.15 to 3.17. + +**Driver/Module**: + ``igb_uio`` module. + + +VM power manager may not work on systems with more than 64 cores +---------------------------------------------------------------- + +**Description**: + When using VM power manager on a system with more than 64 cores, VM(s) should not use cores 64 or higher. + +**Implication**: + VM power manager should not be used with VM(s) that are using cores 64 or above. + +**Resolution/Workaround**: + Do not use cores 64 or above. + +**Affected Environment/Platform**: + Platforms with more than 64 cores. + +**Driver/Module**: + VM power manager application. + + +DPDK may not build on some Intel CPUs using clang < 3.7.0 +--------------------------------------------------------- + +**Description**: + When compiling DPDK with an earlier version than 3.7.0 of clang, CPU flags are not detected on some Intel platforms + such as Intel Broadwell/Skylake (and possibly future CPUs), and therefore compilation fails due to missing intrinsics. + +**Implication**: + DPDK will not build when using a clang version < 3.7.0. + +**Resolution/Workaround**: + Use clang 3.7.0 or higher, or gcc. + +**Affected Environment/Platform**: + Platforms with Intel Broadwell/Skylake using an old clang version. + +**Driver/Module**: + Environment Abstraction Layer (EAL). + + +The last EAL argument is replaced by the program name in argv[] +--------------------------------------------------------------- + +**Description**: + The last EAL argument is replaced by program name in ``argv[]`` after ``eal_parse_args`` is called. + This is the intended behavior but it causes the pointer to the last EAL argument to be lost. + +**Implication**: + If the last EAL argument in ``argv[]`` is generated by a malloc function, changing it will cause memory + issues when freeing the argument. + +**Resolution/Workaround**: + An application should not consider the value in ``argv[]`` as unchanged. + +**Affected Environment/Platform**: + ALL. + +**Driver/Module**: + Environment Abstraction Layer (EAL). + + +I40e VF may not receive packets in the promiscuous mode +------------------------------------------------------- + +**Description**: + Promiscuous mode is not supported by the DPDK i40e VF driver when using the + i40e Linux kernel driver as host driver. + +**Implication**: + The i40e VF does not receive packets when the destination MAC address is unknown. + +**Resolution/Workaround**: + Use a explicit destination MAC address that matches the VF. + +**Affected Environment/Platform**: + All. + +**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/src/seastar/dpdk/doc/guides/rel_notes/rel_description.rst b/src/seastar/dpdk/doc/guides/rel_notes/rel_description.rst new file mode 100644 index 00000000..994845f6 --- /dev/null +++ b/src/seastar/dpdk/doc/guides/rel_notes/rel_description.rst @@ -0,0 +1,40 @@ +.. BSD LICENSE + Copyright(c) 2010-2015 Intel Corporation. All rights reserved. + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + * Neither the name of Intel Corporation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +Description of Release +====================== + +This document contains the release notes for Data Plane Development Kit (DPDK) +release version |release| and previous releases. + +It lists new features, fixed bugs, API and ABI changes and known issues. + +For instructions on compiling and running the release, see the :ref:`DPDK Getting Started Guide <linux_gsg>`. diff --git a/src/seastar/dpdk/doc/guides/rel_notes/release_16_04.rst b/src/seastar/dpdk/doc/guides/rel_notes/release_16_04.rst new file mode 100644 index 00000000..d0a09eff --- /dev/null +++ b/src/seastar/dpdk/doc/guides/rel_notes/release_16_04.rst @@ -0,0 +1,649 @@ +DPDK Release 16.04 +================== + + +New Features +------------ + +* **Added function to check primary process state.** + + A new function ``rte_eal_primary_proc_alive()`` has been added + to allow the user to detect if a primary process is running. + Use cases for this feature include fault detection, and monitoring + using secondary processes. + +* **Enabled bulk allocation of mbufs.** + + A new function ``rte_pktmbuf_alloc_bulk()`` has been added to allow the user + to bulk allocate mbufs. + +* **Added device link speed capabilities.** + + The structure ``rte_eth_dev_info`` now has a ``speed_capa`` bitmap, which + allows the application to determine the supported speeds of each device. + +* **Added bitmap of link speeds to advertise.** + + Added a feature to allow the definition of a set of advertised speeds for auto-negotiation, + explicitly disabling link auto-negotiation (single speed) + and full auto-negotiation. + +* **Added new poll-mode driver for Amazon Elastic Network Adapters (ENA).** + + The driver operates for a variety of ENA adapters through feature negotiation + with the adapter and upgradable commands set. + The ENA driver handles PCI Physical and Virtual ENA functions. + +* **Restored vmxnet3 TX data ring.** + + TX data ring has been shown to improve small packet forwarding performance + on the vSphere environment. + +* **Added vmxnet3 TX L4 checksum offload.** + + Added support for TCP/UDP checksum offload to vmxnet3. + +* **Added vmxnet3 TSO support.** + + Added support for TSO to vmxnet3. + +* **Added vmxnet3 support for jumbo frames.** + + Added support for linking multi-segment buffers together to + handle Jumbo packets. + +* **Enabled Virtio 1.0 support.** + + Enabled Virtio 1.0 support for Virtio pmd driver. + +* **Supported Virtio for ARM.** + + Enabled Virtio support for ARMv7/v8. Tested for ARM64. + Virtio for ARM supports VFIO-noiommu mode only. + Virtio can work with other non-x86 architectures as well, like PowerPC. + +* **Supported Virtio offload in vhost-user.** + + Added the offload and negotiation of checksum and TSO between vhost-user and + vanilla Linux Virtio guest. + +* **Added vhost-user live migration support.** + +* **Added vhost driver.** + + Added a virtual PMD that wraps ``librte_vhost``. + +* **Added multicast promiscuous mode support on VF for ixgbe.** + + Added multicast promiscuous mode support for the ixgbe VF driver so all VFs + can receive the multicast packets. + + Please note if you want to use this promiscuous mode, you need both PF and VF + driver to support it. The reason is that this VF feature is configured in the PF. + If you use kernel PF driver and the dpdk VF driver, make sure the kernel PF driver supports + VF multicast promiscuous mode. If you use dpdk PF and dpdk VF ensure the PF + driver is the same version as the VF. + +* **Added support for E-tag on X550.** + + E-tag is defined in `802.1BR - Bridge Port Extension <http://www.ieee802.org/1/pages/802.1br.html>`_. + + This feature is for the VF, but the settings are on the PF. It means + the CLIs should be used on the PF, but some of their effects will be shown on the VF. + The forwarding of E-tag packets based on GRP and E-CID_base will have an effect + on the PF. Theoretically, the E-tag packets can be forwarded to any pool/queue + but normally we'd like to forward the packets to the pools/queues belonging + to the VFs. And E-tag insertion and stripping will have an effect on VFs. When + a VF receives E-tag packets it should strip the E-tag. When the VF transmits + packets, it should insert the E-tag. Both actions can be offloaded. + + When we want to use this E-tag support feature, the forwarding should be + enabled to forward the packets received by the PF to the indicated VFs. And insertion + and stripping should be enabled for VFs to offload the effort to hardware. + + Features added: + + * Support E-tag offloading of insertion and stripping. + * Support Forwarding E-tag packets to pools based on + GRP and E-CID_base. + +* **Added support for VxLAN and NVGRE checksum off-load on X550.** + + * Added support for VxLAN and NVGRE RX/TX checksum off-load on + X550. RX/TX checksum off-load is provided on both inner and + outer IP header and TCP header. + * Added functions to support VxLAN port configuration. The + default VxLAN port number is 4789 but this can be updated + programmatically. + +* **Added support for new X550EM_a devices.** + + Added support for new X550EM_a devices and their MAC types, X550EM_a and X550EM_a_vf. + Updated the relevant PMD to use the new devices and MAC types. + +* **Added x550em_x V2 device support.** + + Added support for x550em_x V2 device. Only x550em_x V1 was supported before. + A mask for V1 and V2 is defined and used to support both. + +* **Supported link speed auto-negotiation on X550EM_X** + + Normally the auto-negotiation is supported by firmware and software doesn't care about + it. But on x550em_x, firmware doesn't support auto-negotiation. As the ports of x550em_x + are 10GbE, if we connect the port with a peer which is 1GbE, the link will always + be down. + We added the support for auto-negotiation by software to avoid this link down issue. + +* **Added software-firmware sync on X550EM_a.** + + Added support for software-firmware sync for resource sharing. + Use the PHY token, shared between software-firmware for PHY access on X550EM_a. + +* **Updated the i40e base driver.** + + The i40e base driver was updated with changes including the + following: + + * Use RX control AQ commands to read/write RX control registers. + * Add new X722 device IDs, and removed X710 one was never used. + * Expose registers for HASH/FD input set configuring. + +* **Enabled PCI extended tag for i40e.** + + Enabled extended tag for i40e by checking and writing corresponding PCI config + space bytes, to boost the performance. + The legacy method of reading/writing sysfile supported by kernel module igb_uio + is now deprecated. + +* **Added i40e support for setting mac addresses.** + +* **Added dump of i40e registers and EEPROM.** + +* **Supported ether type setting of single and double VLAN for i40e** + +* **Added VMDQ DCB mode in i40e.** + + Added support for DCB in VMDQ mode to i40e driver. + +* **Added i40e VEB switching support.** + +* **Added Flow director enhancements in i40e.** + +* **Added PF reset event reporting in i40e VF driver.** + +* **Added fm10k RX interrupt support.** + +* **Optimized fm10k TX.** + + Optimized fm10k TX by freeing multiple mbufs at a time. + +* **Handled error flags in fm10k vector RX.** + + Parse error flags in RX descriptor and set error bits in mbuf with vector instructions. + +* **Added fm10k FTAG based forwarding support.** + +* **Added mlx5 flow director support.** + + Added flow director support (``RTE_FDIR_MODE_PERFECT`` and + ``RTE_FDIR_MODE_PERFECT_MAC_VLAN``). + + Only available with Mellanox OFED >= 3.2. + +* **Added mlx5 RX VLAN stripping support.** + + Added support for RX VLAN stripping. + + Only available with Mellanox OFED >= 3.2. + +* **Added mlx5 link up/down callbacks.** + + Implemented callbacks to bring link up and down. + +* **Added mlx5 support for operation in secondary processes.** + + Implemented TX support in secondary processes (like mlx4). + +* **Added mlx5 RX CRC stripping configuration.** + + Until now, CRC was always stripped. It can now be configured. + + Only available with Mellanox OFED >= 3.2. + +* **Added mlx5 optional packet padding by HW.** + + Added an option to make PCI bus transactions rounded to a multiple of a + cache line size for better alignment. + + Only available with Mellanox OFED >= 3.2. + +* **Added mlx5 TX VLAN insertion support.** + + Added support for TX VLAN insertion. + + Only available with Mellanox OFED >= 3.2. + +* **Changed szedata2 driver type from vdev to pdev.** + + Previously szedata2 device had to be added by ``--vdev`` option. + Now szedata2 PMD recognizes the device automatically during EAL + initialization. + +* **Added szedata2 functions for setting link up/down.** + +* **Added szedata2 promiscuous and allmulticast modes.** + +* **Added af_packet dynamic removal function.** + + An af_packet device can now be detached using the API, like other PMD devices. + +* **Increased number of next hops for LPM IPv4 to 2^24.** + + The ``next_hop`` field has been extended from 8 bits to 24 bits for IPv4. + +* **Added support of SNOW 3G (UEA2 and UIA2) for Intel Quick Assist devices.** + + Enabled support for the SNOW 3G wireless algorithm for Intel Quick Assist devices. + Support for cipher-only and hash-only is also provided + along with algorithm-chaining operations. + +* **Added SNOW3G SW PMD.** + + A new Crypto PMD has been added, which provides SNOW 3G UEA2 ciphering + and SNOW3G UIA2 hashing. + +* **Added AES GCM PMD.** + + Added new Crypto PMD to support AES-GCM authenticated encryption and + authenticated decryption in software. + +* **Added NULL Crypto PMD** + + Added new Crypto PMD to support null crypto operations in software. + +* **Improved IP Pipeline Application.** + + The following features have been added to ip_pipeline application; + + * Added CPU utilization measurement and idle cycle rate computation. + * Added link identification support through existing port-mask option or by + specifying PCI device in every LINK section in the configuration file. + * Added load balancing support in passthrough pipeline. + +* **Added IPsec security gateway example.** + + Added a new application implementing an IPsec Security Gateway. + + +Resolved Issues +--------------- + +Drivers +~~~~~~~ + +* **ethdev: Fixed overflow for 100Gbps.** + + 100Gbps in Mbps (100000) was exceeding the 16-bit max value of ``link_speed`` + in ``rte_eth_link``. + +* **ethdev: Fixed byte order consistency between fdir flow and mask.** + + Fixed issue in ethdev library where the structure for setting + fdir's mask and flow entry was not consistent in byte ordering. + +* **cxgbe: Fixed crash due to incorrect size allocated for RSS table.** + + Fixed a segfault that occurs when accessing part of port 0's RSS + table that gets overwritten by subsequent port 1's part of the RSS + table due to incorrect size allocated for each entry in the table. + +* **cxgbe: Fixed setting wrong device MTU.** + + Fixed an incorrect device MTU being set due to the Ethernet header and + CRC lengths being added twice. + +* **ixgbe: Fixed zeroed VF mac address.** + + Resolved an issue where the VF MAC address is zeroed out in cases where the VF + driver is loaded while the PF interface is down. + The solution is to only set it when we get an ACK from the PF. + +* **ixgbe: Fixed setting flow director flag twice.** + + Resolved an issue where packets were being dropped when switching to perfect + filters mode. + +* **ixgbe: Set MDIO speed after MAC reset.** + + The MDIO clock speed must be reconfigured after the MAC reset. The MDIO clock + speed becomes invalid, therefore the driver reads invalid PHY register values. + The driver now set the MDIO clock speed prior to initializing PHY ops and + again after the MAC reset. + +* **ixgbe: Fixed maximum number of available TX queues.** + + In IXGBE, the maximum number of TX queues varies depending on the NIC operating + mode. This was not being updated in the device information, providing + an incorrect number in some cases. + +* **i40e: Generated MAC address for each VFs.** + + It generates a MAC address for each VFs during PF host initialization, + and keeps the VF MAC address the same among different VF launch. + +* **i40e: Fixed failure of reading/writing RX control registers.** + + Fixed i40e issue of failing to read/write rx control registers when + under stress with traffic, which might result in application launch + failure. + +* **i40e: Enabled vector driver by default.** + + Previously, vector driver was disabled by default as it couldn't fill packet type + info for l3fwd to work well. Now there is an option for l3fwd to analyze + the packet type so the vector driver is enabled by default. + +* **i40e: Fixed link info of VF.** + + Previously, the VF's link speed stayed at 10GbE and status always was up. + It did not change even when the physical link's status changed. + Now this issue is fixed to make VF's link info consistent with physical link. + +* **mlx5: Fixed possible crash during initialization.** + + A crash could occur when failing to allocate private device context. + +* **mlx5: Added port type check.** + + Added port type check to prevent port initialization on non-Ethernet link layers and + to report an error. + +* **mlx5: Applied VLAN filtering to broadcast and IPv6 multicast flows.** + + Prevented reception of multicast frames outside of configured VLANs. + +* **mlx5: Fixed RX checksum offload in non L3/L4 packets.** + + Fixed report of bad checksum for packets of unknown type. + +* **aesni_mb: Fixed wrong return value when creating a device.** + + The ``cryptodev_aesni_mb_init()`` function was returning the device id of the device created, + instead of 0 (on success) that ``rte_eal_vdev_init()`` expects. + This made it impossible to create more than one aesni_mb device + from the command line. + +* **qat: Fixed AES GCM decryption.** + + Allowed AES GCM on the cryptodev API, but in some cases gave invalid results + due to incorrect IV setting. + + +Libraries +~~~~~~~~~ + +* **hash: Fixed CRC32c hash computation for non multiple of 4 bytes sizes.** + + Fix crc32c hash functions to return a valid crc32c value for data lengths + not a multiple of 4 bytes. + +* **hash: Fixed hash library to support multi-process mode.** + + Fix hash library to support multi-process mode, using a jump table, + instead of storing a function pointer to the key compare function. + Multi-process mode only works with the built-in compare functions, + however a custom compare function (not in the jump table) can only + be used in single-process mode. + +* **hash: Fixed return value when allocating an existing hash table.** + + Changed the ``rte_hash*_create()`` functions to return ``NULL`` and set + ``rte_errno`` to ``EEXIST`` when the object name already exists. This is + the behavior described in the API documentation in the header file. + The previous behavior was to return a pointer to the existing object in + that case, preventing the caller from knowing if the object had to be freed + or not. + +* **lpm: Fixed return value when allocating an existing object.** + + Changed the ``rte_lpm*_create()`` functions to return ``NULL`` and set + ``rte_errno`` to ``EEXIST`` when the object name already exists. This is + the behavior described in the API documentation in the header file. + The previous behavior was to return a pointer to the existing object in + that case, preventing the caller from knowing if the object had to be freed + or not. + +* **librte_port: Fixed segmentation fault for ring and ethdev writer nodrop.** + + Fixed core dump issue on txq and swq when dropless is set to yes. + + +Examples +~~~~~~~~ + +* **l3fwd-power: Fixed memory leak for non-IP packet.** + + Fixed issue in l3fwd-power where, on receiving packets of types + other than IPv4 or IPv6, the mbuf was not released, and caused + a memory leak. + +* **l3fwd: Fixed using packet type blindly.** + + l3fwd makes use of packet type information without querying if devices or PMDs + really set it. For those devices that don't set ptypes, add an option to parse it. + +* **examples/vhost: Fixed frequent mbuf allocation failure.** + + The vhost-switch often fails to allocate mbuf when dequeue from vring because it + wrongly calculates the number of mbufs needed. + + +API Changes +----------- + +* The ethdev statistics counter ``imissed`` is considered to be independent of ``ierrors``. + All drivers are now counting the missed packets only once, i.e. drivers will + not increment ierrors anymore for missed packets. + +* The ethdev structure ``rte_eth_dev_info`` was changed to support device + speed capabilities. + +* The ethdev structures ``rte_eth_link`` and ``rte_eth_conf`` were changed to + support the new link API. + +* The functions ``rte_eth_dev_udp_tunnel_add`` and ``rte_eth_dev_udp_tunnel_delete`` + have been renamed into ``rte_eth_dev_udp_tunnel_port_add`` and + ``rte_eth_dev_udp_tunnel_port_delete``. + +* The ``outer_mac`` and ``inner_mac`` fields in structure + ``rte_eth_tunnel_filter_conf`` are changed from pointer to struct in order + to keep code's readability. + +* The fields in ethdev structure ``rte_eth_fdir_masks`` were changed + to be in big endian. + +* A parameter ``vlan_type`` has been added to the function + ``rte_eth_dev_set_vlan_ether_type``. + +* The af_packet device init function is no longer public. The device should be attached + via the API. + +* The LPM ``next_hop`` field is extended from 8 bits to 24 bits for IPv4 + while keeping ABI compatibility. + +* A new ``rte_lpm_config`` structure is used so the LPM library will allocate + exactly the amount of memory which is necessary to hold application’s rules. + The previous ABI is kept for compatibility. + +* The prototype for the pipeline input port, output port and table action + handlers are updated: the pipeline parameter is added, + the packets mask parameter has been either removed or made input-only. + + +ABI Changes +----------- + +* The RETA entry size in ``rte_eth_rss_reta_entry64`` has been increased + from 8-bit to 16-bit. + +* The ethdev flow director structure ``rte_eth_fdir_flow`` structure was + changed. New fields were added to extend flow director's input set. + +* The cmdline buffer size has been increase from 256 to 512. + + +Shared Library Versions +----------------------- + +The libraries prepended with a plus sign were incremented in this version. + +.. code-block:: diff + + + libethdev.so.3 + librte_acl.so.2 + librte_cfgfile.so.2 + + librte_cmdline.so.2 + librte_distributor.so.1 + librte_eal.so.2 + librte_hash.so.2 + librte_ip_frag.so.1 + librte_ivshmem.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.1 + librte_meter.so.1 + + librte_pipeline.so.3 + librte_pmd_bond.so.1 + librte_pmd_ring.so.2 + librte_port.so.2 + 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.2 + + +Tested Platforms +---------------- + +#. SuperMicro 1U + + - BIOS: 1.0c + - Processor: Intel(R) Atom(TM) CPU C2758 @ 2.40GHz + +#. SuperMicro 1U + + - BIOS: 1.0a + - Processor: Intel(R) Xeon(R) CPU D-1540 @ 2.00GHz + - Onboard NIC: Intel(R) X552/X557-AT (2x10G) + + - Firmware-version: 0x800001cf + - Device ID (PF/VF): 8086:15ad /8086:15a8 + + - kernel driver version: 4.2.5 (ixgbe) + +#. SuperMicro 1U + + - BIOS: 1.0a + - Processor: Intel(R) Xeon(R) CPU E5-4667 v3 @ 2.00GHz + +#. Intel(R) Server board S2600GZ + + - BIOS: SE5C600.86B.02.02.0002.122320131210 + - Processor: Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz + +#. Intel(R) Server board W2600CR + + - BIOS: SE5C600.86B.02.01.0002.082220131453 + - Processor: Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz + +#. Intel(R) Server board S2600CWT + + - BIOS: SE5C610.86B.01.01.0009.060120151350 + - Processor: Intel(R) Xeon(R) CPU E5-2699 v3 @ 2.30GHz + +#. Intel(R) Server board S2600WTT + + - BIOS: SE5C610.86B.01.01.0005.101720141054 + - Processor: Intel(R) Xeon(R) CPU E5-2699 v3 @ 2.30GHz + +#. Intel(R) Server board S2600WTT + + - BIOS: SE5C610.86B.11.01.0044.090120151156 + - Processor: Intel(R) Xeon(R) CPU E5-2695 v4 @ 2.10GHz + + +Tested NICs +----------- + +#. Intel(R) Ethernet Controller X540-AT2 + + - Firmware version: 0x80000389 + - Device id (pf): 8086:1528 + - Driver version: 3.23.2 (ixgbe) + +#. 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.02 0x80002284 + - Device id (pf/vf): 8086:1572 / 8086:154c + - Driver version: 1.4.26 (i40e) + +#. Intel(R) Ethernet Converged Network Adapter X710-DA2 (2x10G) + + - Firmware version: 5.02 0x80002282 + - Device id (pf/vf): 8086:1572 / 8086:154c + - Driver version: 1.4.25 (i40e) + +#. Intel(R) Ethernet Converged Network Adapter XL710-QDA1 (1x40G) + + - Firmware version: 5.02 0x80002281 + - Device id (pf/vf): 8086:1584 / 8086:154c + - Driver version: 1.4.25 (i40e) + +#. Intel(R) Ethernet Converged Network Adapter XL710-QDA2 (2X40G) + + - Firmware version: 5.02 0x80002285 + - Device id (pf/vf): 8086:1583 / 8086:154c + - Driver version: 1.4.25 (i40e) + +#. Intel(R) 82576EB Gigabit Ethernet Controller + + - Firmware version: 1.2.1 + - Device id (pf): 8086:1526 + - Driver version: 5.2.13-k (igb) + +#. Intel(R) Ethernet Controller I210 + + - Firmware version: 3.16, 0x80000500, 1.304.0 + - Device id (pf): 8086:1533 + - Driver version: 5.2.13-k (igb) + +#. 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) Ethernet Multi-host Controller FM10000 + + - Firmware version: N/A + - Device id (pf/vf): 8086:15d0 + - Driver version: 0.17.0.9 (fm10k) diff --git a/src/seastar/dpdk/doc/guides/rel_notes/release_16_07.rst b/src/seastar/dpdk/doc/guides/rel_notes/release_16_07.rst new file mode 100644 index 00000000..a8a3fc11 --- /dev/null +++ b/src/seastar/dpdk/doc/guides/rel_notes/release_16_07.rst @@ -0,0 +1,550 @@ +DPDK Release 16.07 +================== + +.. **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_16_07.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. + +* **Removed the mempool cache memory if caching is not being used.** + + The size of the mempool structure is reduced if the per-lcore cache is disabled. + +* **Added mempool external cache for non-EAL thread.** + + Added new functions to create, free or flush a user-owned mempool + cache for non-EAL threads. Previously the caching was always disabled + on these threads. + +* **Changed the memory allocation scheme in the mempool library.** + + * Added the ability to allocate a large mempool in fragmented virtual memory. + * Added new APIs to populate a mempool with memory. + * Added an API to free a mempool. + * Modified the API of the ``rte_mempool_obj_iter()`` function. + * Dropped the specific Xen Dom0 code. + * Dropped the specific anonymous mempool code in testpmd. + +* **Added a new driver for Broadcom NetXtreme-C devices.** + + Added the new bnxt driver for Broadcom NetXtreme-C devices. See the + "Network Interface Controller Drivers" document for more details on this + new driver. + +* **Added a new driver for ThunderX nicvf devices.** + + Added the new thunderx net driver for ThunderX nicvf devices. See the + "Network Interface Controller Drivers" document for more details on this new + driver. + +* **Added mailbox interrupt support for ixgbe and igb VFs.** + + When the physical NIC link comes up or down, the PF driver will send a + mailbox message to notify each VF. To handle this link up/down event, + support have been added for a mailbox interrupt to receive the message and + allow the application to register a callback for it. + +* **Updated the ixgbe base driver.** + + The ixgbe base driver was updated with changes including the + following: + + * Added sgmii link for X550. + * Added MAC link setup for X550a SFP and SFP+. + * Added KR support for X550em_a. + * Added new PHY definitions for M88E1500. + * Added support for the VLVF to be bypassed when adding/removing a VFTA entry. + * Added X550a flow control auto negotiation support. + +* **Updated the i40e base driver.** + + Updated the i40e base driver including support for new devices IDs. + +* **Updated the enic driver.** + + The enic driver was updated with changes including the following: + + * Optimized the Tx function. + * Added Scattered Rx capability. + * Improved packet type identification. + * Added MTU update in non Scattered Rx mode and enabled MTU of up to 9208 + with UCS Software release 2.2 on 1300 series VICs. + +* **Updated the mlx5 driver.** + + The mlx5 driver was updated with changes including the following: + + * Data path was refactored to bypass Verbs to improve RX and TX performance. + * Removed compilation parameters for inline send, ``MLX5_MAX_INLINE``, and + added command line parameter instead, ``txq_inline``. + * Improved TX scatter gather support: + Removed compilation parameter ``MLX5_PMD_SGE_WR_N``. + Scatter-gather elements is set to the maximum value the NIC supports. + Removed linearization logic, this decreases the memory consumption of the PMD. + * Improved jumbo frames support, by dynamically setting RX scatter gather elements + according to the MTU and mbuf size, + no need for compilation parameter ``MLX5_PMD_SGE_WR_N`` + +* **Added support for virtio on IBM POWER8.** + + The ioports are mapped in memory when using Linux UIO. + +* **Added support for Virtio in containers.** + + Add a new virtual device, named virtio_user, to support virtio for containers. + + Known limitations: + + * Control queue and multi-queue are not supported yet. + * Doesn't work with ``--huge-unlink``. + * Doesn't work with ``--no-huge``. + * Doesn't work when there are more than ``VHOST_MEMORY_MAX_NREGIONS(8)`` hugepages. + * Root privilege is required for sorting hugepages by physical address. + * Can only be used with the vhost user backend. + +* **Added vhost-user client mode.** + + DPDK vhost-user now supports client mode as well as server mode. Client mode + is enabled when the ``RTE_VHOST_USER_CLIENT`` flag is set while calling + ``rte_vhost_driver_register``. + + When DPDK vhost-user restarts from an normal or abnormal exit (such as a + crash), the client mode allows DPDK to establish the connection again. Note + that QEMU version v2.7 or above is required for this feature. + + DPDK vhost-user will also try to reconnect by default when: + + * The first connect fails (for example when QEMU is not started yet). + * The connection is broken (for example when QEMU restarts). + + It can be turned off by setting the ``RTE_VHOST_USER_NO_RECONNECT`` flag. + +* **Added NSH packet recognition in i40e.** + +* **Added AES-CTR support to AESNI MB PMD.** + + Now AESNI MB PMD supports 128/192/256-bit counter mode AES encryption and + decryption. + +* **Added AES counter mode support for Intel QuickAssist devices.** + + Enabled support for the AES CTR algorithm for Intel QuickAssist devices. + Provided support for algorithm-chaining operations. + +* **Added KASUMI SW PMD.** + + A new Crypto PMD has been added, which provides KASUMI F8 (UEA1) ciphering + and KASUMI F9 (UIA1) hashing. + +* **Added multi-writer support for RTE Hash with Intel TSX.** + + The following features/modifications have been added to rte_hash library: + + * Enabled application developers to use an extra flag for ``rte_hash`` + creation to specify default behavior (multi-thread safe/unsafe) with the + ``rte_hash_add_key`` function. + * Changed the Cuckoo Hash Search algorithm to breadth first search for + multi-writer routines and split Cuckoo Hash Search and Move operations in + order to reduce transactional code region and improve TSX performance. + * Added a hash multi-writer test case to the test app. + +* **Improved IP Pipeline Application.** + + The following features have been added to the ip_pipeline application: + + * Configure the MAC address in the routing pipeline and automatic route + updates with change in link state. + * Enable RSS per network interface through the configuration file. + * Streamline the CLI code. + +* **Added keepalive enhancements.** + + Added support for reporting of core states other than "dead" to + monitoring applications, enabling the support of broader liveness + reporting to external processes. + +* **Added packet capture framework.** + + * A new library ``librte_pdump`` is added to provide a packet capture API. + * A new ``app/pdump`` tool is added to demonstrate capture packets in DPDK. + + +* **Added floating VEB support for i40e PF driver.** + + A "floating VEB" is a special Virtual Ethernet Bridge (VEB) which does not + have an upload port, but instead is used for switching traffic between + virtual functions (VFs) on a port. + + For information on this feature, please see the "I40E Poll Mode Driver" + section of the "Network Interface Controller Drivers" document. + +* **Added support for live migration of a VM with SRIOV VF.** + + Live migration of a VM with Virtio and VF PMD's using the bonding PMD. + + +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. + + +EAL +~~~ + +* **igb_uio: Fixed possible mmap failure for Linux >= 4.5.** + + The mmaping of the iomem range of the PCI device fails for kernels that + enabled the ``CONFIG_IO_STRICT_DEVMEM`` option. The error seen by the + user is as similar to the following:: + + EAL: pci_map_resource(): + + cannot mmap(39, 0x7f1c51800000, 0x100000, 0x0): + Invalid argument (0xffffffffffffffff) + + The ``CONFIG_IO_STRICT_DEVMEM`` kernel option was introduced in Linux v4.5. + + The issues was resolve by updating ``igb_uio`` to stop reserving PCI memory + resources. From the kernel point of view the iomem region looks like idle + and mmap works again. This matches the ``uio_pci_generic`` usage. + + +Drivers +~~~~~~~ + +* **i40e: Fixed vlan stripping from inner header.** + + Previously, for tunnel packets, such as VXLAN/NVGRE, the vlan + tags of the inner header will be stripped without putting vlan + info to descriptor. + Now this issue is fixed by disabling vlan stripping from inner header. + +* **i40e: Fixed the type issue of a single VLAN type.** + + Currently, if a single VLAN header is added in a packet, it's treated + as inner VLAN. But generally, a single VLAN header is treated as the + outer VLAN header. + This issue is fixed by changing corresponding register for single VLAN. + +* **enic: Fixed several issues when stopping then restarting ports and queues.** + + Fixed several crashes related to stopping then restarting ports and queues. + Fixed possible crash when re-configuring the number of Rx queue descriptors. + +* **enic: Fixed Rx data mis-alignment if mbuf data offset modified.** + + Fixed possible Rx corruption when mbufs were returned to a pool with data + offset other than RTE_PKTMBUF_HEADROOM. + +* **enic: Fixed Tx IP/UDP/TCP checksum offload and VLAN insertion.** + +* **enic: Fixed Rx error and missed counters.** + + +Libraries +~~~~~~~~~ + +* **mbuf: Fixed refcnt update when detaching.** + + Fix the ``rte_pktmbuf_detach()`` function to decrement the direct mbuf's + reference counter. The previous behavior was not to affect the reference + counter. This lead to a memory leak of the direct mbuf. + + +Examples +~~~~~~~~ + + +Other +~~~~~ + + +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. + + +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. + +* The following counters are removed from the ``rte_eth_stats`` structure: + + * ``ibadcrc`` + * ``ibadlen`` + * ``imcasts`` + * ``fdirmatch`` + * ``fdirmiss`` + * ``tx_pause_xon`` + * ``rx_pause_xon`` + * ``tx_pause_xoff`` + * ``rx_pause_xoff`` + +* The extended statistics are fetched by ids with ``rte_eth_xstats_get`` + after a lookup by name ``rte_eth_xstats_get_names``. + +* The function ``rte_eth_dev_info_get`` fill the new fields ``nb_rx_queues`` + and ``nb_tx_queues`` in the structure ``rte_eth_dev_info``. + +* The vhost function ``rte_vring_available_entries`` is renamed to + ``rte_vhost_avail_entries``. + +* All existing vhost APIs and callbacks with ``virtio_net`` struct pointer + as the parameter have been changed due to the ABI refactoring described + below. It is replaced by ``int vid``. + +* The function ``rte_vhost_enqueue_burst`` no longer supports concurrent enqueuing + packets to the same queue. + +* The function ``rte_eth_dev_set_mtu`` adds a new return value ``-EBUSY``, which + indicates the operation is forbidden because the port is running. + +* The script ``dpdk_nic_bind.py`` is renamed to ``dpdk-devbind.py``. + And the script ``setup.sh`` is renamed to ``dpdk-setup.sh``. + + +ABI Changes +----------- + +.. * 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. + +* The ``rte_port_source_params`` structure has new fields to support PCAP files. + It was already in release 16.04 with ``RTE_NEXT_ABI`` flag. + +* The ``rte_eth_dev_info`` structure has new fields ``nb_rx_queues`` and ``nb_tx_queues`` + to support the number of queues configured by software. + +* A Vhost ABI refactoring has been made: the ``virtio_net`` structure is no + longer exported directly to the application. Instead, a handle, ``vid``, has + been used to represent this structure internally. + + +Shared Library Versions +----------------------- + +.. Update any library version updated in this release and prepend with a ``+`` sign. + +The libraries prepended with a plus sign were incremented in this version. + +.. code-block:: diff + + + libethdev.so.4 + librte_acl.so.2 + librte_cfgfile.so.2 + librte_cmdline.so.2 + librte_cryptodev.so.1 + librte_distributor.so.1 + librte_eal.so.2 + librte_hash.so.2 + librte_ip_frag.so.1 + librte_ivshmem.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_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: + + #. Platform name. + + - Platform details. + - Platform details. + +#. SuperMicro 1U + + - BIOS: 1.0c + - Processor: Intel(R) Atom(TM) CPU C2758 @ 2.40GHz + +#. SuperMicro 1U + + - BIOS: 1.0a + - Processor: Intel(R) Xeon(R) CPU D-1540 @ 2.00GHz + - Onboard NIC: Intel(R) X552/X557-AT (2x10G) + + - Firmware-version: 0x800001cf + - Device ID (PF/VF): 8086:15ad /8086:15a8 + + - kernel driver version: 4.2.5 (ixgbe) + +#. SuperMicro 2U + + - BIOS: 1.0a + - Processor: Intel(R) Xeon(R) CPU E5-4667 v3 @ 2.00GHz + +#. Intel(R) Server board S2600GZ + + - BIOS: SE5C600.86B.02.02.0002.122320131210 + - Processor: Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz + +#. Intel(R) Server board W2600CR + + - BIOS: SE5C600.86B.02.01.0002.082220131453 + - Processor: Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz + +#. Intel(R) Server board S2600CWT + + - BIOS: SE5C610.86B.01.01.0009.060120151350 + - Processor: Intel(R) Xeon(R) CPU E5-2699 v3 @ 2.30GHz + +#. Intel(R) Server board S2600WTT + + - BIOS: SE5C610.86B.01.01.0005.101720141054 + - Processor: Intel(R) Xeon(R) CPU E5-2699 v3 @ 2.30GHz + +#. Intel(R) Server board S2600WTT + + - BIOS: SE5C610.86B.11.01.0044.090120151156 + - Processor: Intel(R) Xeon(R) CPU E5-2695 v4 @ 2.10GHz + + +Tested NICs +----------- + +.. This section should contain a list of NICs that were tested with this release. + + The format is: + + #. NIC name. + + - NIC details. + - NIC details. + +#. Intel(R) Ethernet Controller X540-AT2 + + - Firmware version: 0x80000389 + - Device id (pf): 8086:1528 + - Driver version: 3.23.2 (ixgbe) + +#. 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.04 + - Device id (pf/vf): 8086:1572 / 8086:154c + - Driver version: 1.4.26 (i40e) + +#. Intel(R) Ethernet Converged Network Adapter X710-DA2 (2x10G) + + - Firmware version: 5.04 + - Device id (pf/vf): 8086:1572 / 8086:154c + - Driver version: 1.4.25 (i40e) + +#. Intel(R) Ethernet Converged Network Adapter XL710-QDA1 (1x40G) + + - Firmware version: 5.04 + - Device id (pf/vf): 8086:1584 / 8086:154c + - Driver version: 1.4.25 (i40e) + +#. Intel(R) Ethernet Converged Network Adapter XL710-QDA2 (2X40G) + + - Firmware version: 5.04 + - Device id (pf/vf): 8086:1583 / 8086:154c + - Driver version: 1.4.25 (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) Ethernet Multi-host Controller FM10000 + + - Firmware version: N/A + - Device id (pf/vf): 8086:15d0 + - Driver version: 0.17.0.9 (fm10k) + + +Tested OSes +----------- + +.. This section should contain a list of OSes that were tested with this release. + +- CentOS 7.0 +- Fedora 23 +- Fedora 24 +- FreeBSD 10.3 +- Red Hat Enterprise Linux 7.2 +- SUSE Enterprise Linux 12 +- Ubuntu 15.10 +- Ubuntu 16.04 LTS +- Wind River Linux 8 + diff --git a/src/seastar/dpdk/doc/guides/rel_notes/release_16_11.rst b/src/seastar/dpdk/doc/guides/rel_notes/release_16_11.rst new file mode 100644 index 00000000..8c9ec65c --- /dev/null +++ b/src/seastar/dpdk/doc/guides/rel_notes/release_16_11.rst @@ -0,0 +1,600 @@ +DPDK Release 16.11 +================== + +.. **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_16_11.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. Make sure to start the actual text at the margin. + + +* **Added software parser for packet type.** + + * Added a new function ``rte_pktmbuf_read()`` to read the packet data from an + mbuf chain, linearizing if required. + * Added a new function ``rte_net_get_ptype()`` to parse an Ethernet packet + in an mbuf chain and retrieve its packet type from software. + * Added new functions ``rte_get_ptype_*()`` to dump a packet type as a string. + +* **Improved offloads support in mbuf.** + + * Added a new function ``rte_raw_cksum_mbuf()`` to process the checksum of + data embedded in an mbuf chain. + * Added new Rx checksum flags in mbufs to describe more states: unknown, + good, bad, or not present (useful for virtual drivers). This modification + was done for IP and L4. + * Added a new Rx LRO mbuf flag, used when packets are coalesced. This + flag indicates that the segment size of original packets is known. + +* **Added vhost-user dequeue zero copy support.** + + The copy in the dequeue path is avoided in order to improve the performance. + In the VM2VM case, the boost is quite impressive. The bigger the packet size, + the bigger performance boost you may get. However, for the VM2NIC case, there + are some limitations, so the boost is not as impressive as the VM2VM case. + It may even drop quite a bit for small packets. + + For that reason, this feature is disabled by default. It can be enabled when + the ``RTE_VHOST_USER_DEQUEUE_ZERO_COPY`` flag is set. Check the VHost section + of the Programming Guide for more information. + +* **Added vhost-user indirect descriptors support.** + + If the indirect descriptor feature is enabled, each packet sent by the guest + will take exactly one slot in the enqueue virtqueue. Without this feature, as in + the current version, even 64 bytes packets take two slots with Virtio PMD on guest + side. + + The main impact is better performance for 0% packet loss use-cases, as it + behaves as if the virtqueue size was enlarged, so more packets can be buffered + in the case of system perturbations. On the downside, small performance degradations + were measured when running micro-benchmarks. + +* **Added vhost PMD xstats.** + + Added extended statistics to vhost PMD from a per port perspective. + +* **Supported offloads with virtio.** + + Added support for the following offloads in virtio: + + * Rx/Tx checksums. + * LRO. + * TSO. + +* **Added virtio NEON support for ARM.** + + Added NEON support for ARM based virtio. + +* **Updated the ixgbe base driver.** + + Updated the ixgbe base driver, including the following changes: + + * Added X550em_a 10G PHY support. + * Added support for flow control auto negotiation for X550em_a 1G PHY. + * Added X550em_a FW ALEF support. + * Increased mailbox version to ``ixgbe_mbox_api_13``. + * Added two MAC operations for Hyper-V support. + +* **Added APIs for VF management to the ixgbe PMD.** + + Eight new APIs have been added to the ixgbe PMD for VF management from the PF. + The declarations for the API's can be found in ``rte_pmd_ixgbe.h``. + +* **Updated the enic driver.** + + * Added update to use interrupt for link status checking instead of polling. + * Added more flow director modes on UCS Blade with firmware version >= 2.0(13e). + * Added full support for MTU update. + * Added support for the ``rte_eth_rx_queue_count`` function. + +* **Updated the mlx5 driver.** + + * Added support for RSS hash results. + * Added several performance improvements. + * Added several bug fixes. + +* **Updated the QAT PMD.** + + The QAT PMD was updated with additional support for: + + * MD5_HMAC algorithm. + * SHA224-HMAC algorithm. + * SHA384-HMAC algorithm. + * GMAC algorithm. + * KASUMI (F8 and F9) algorithm. + * 3DES algorithm. + * NULL algorithm. + * C3XXX device. + * C62XX device. + +* **Added openssl PMD.** + + A new crypto PMD has been added, which provides several ciphering and hashing algorithms. + All cryptography operations use the Openssl library crypto API. + +* **Updated the IPsec example.** + + Updated the IPsec example with the following support: + + * Configuration file support. + * AES CBC IV generation with cipher forward function. + * AES GCM/CTR mode. + +* **Added support for new gcc -march option.** + + The GCC 4.9 ``-march`` option supports the Intel processor code names. + The config option ``RTE_MACHINE`` can be used to pass code names to the compiler via the ``-march`` flag. + + +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. Make sure to start the actual text at the margin. + + +Drivers +~~~~~~~ + +* **enic: Fixed several flow director issues.** + +* **enic: Fixed inadvertent setting of L4 checksum ptype on ICMP packets.** + +* **enic: Fixed high driver overhead when servicing Rx queues beyond the first.** + + + +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. Make sure to start the actual text at the margin. + +* **L3fwd-power app does not work properly when Rx vector is enabled.** + + The L3fwd-power app doesn't work properly with some drivers in vector mode + since the queue monitoring works differently between scalar and vector modes + leading to incorrect frequency scaling. In addition, L3fwd-power application + requires the mbuf to have correct packet type set but in some drivers the + vector mode must be disabled for this. + + Therefore, in order to use L3fwd-power, vector mode should be disabled + via the config file. + +* **Digest address must be supplied for crypto auth operation on QAT PMD.** + + The cryptodev API specifies that if the rte_crypto_sym_op.digest.data field, + and by inference the digest.phys_addr field which points to the same location, + is not set for an auth operation the driver is to understand that the digest + result is located immediately following the region over which the digest is + computed. The QAT PMD doesn't correctly handle this case and reads and writes + to an incorrect location. + + Callers can workaround this by always supplying the digest virtual and + physical address fields in the rte_crypto_sym_op for an auth operation. + + +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. Make sure to start the actual text at the margin. + +* The driver naming convention has been changed to make them more + consistent. It especially impacts ``--vdev`` arguments. For example + ``eth_pcap`` becomes ``net_pcap`` and ``cryptodev_aesni_mb_pmd`` becomes + ``crypto_aesni_mb``. + + For backward compatibility an alias feature has been enabled to support the + original names. + +* The log history has been removed. + +* The ``rte_ivshmem`` feature (including library and EAL code) has been removed + in 16.11 because it had some design issues which were not planned to be fixed. + +* The ``file_name`` data type of ``struct rte_port_source_params`` and + ``struct rte_port_sink_params`` is changed from ``char *`` to ``const char *``. + +* **Improved device/driver hierarchy and generalized hotplugging.** + + The device and driver relationship has been restructured by introducing generic + classes. This paves the way for having PCI, VDEV and other device types as + instantiated objects rather than classes in themselves. Hotplugging has also + been generalized into EAL so that Ethernet or crypto devices can use the + common infrastructure. + + * Removed ``pmd_type`` as a way of segregation of devices. + * Moved ``numa_node`` and ``devargs`` into ``rte_driver`` from + ``rte_pci_driver``. These can now be used by any instantiated object of + ``rte_driver``. + * Added ``rte_device`` class and all PCI and VDEV devices inherit from it + * Renamed devinit/devuninit handlers to probe/remove to make it more + semantically correct with respect to the device <=> driver relationship. + * Moved hotplugging support to EAL. Hereafter, PCI and vdev can use the + APIs ``rte_eal_dev_attach`` and ``rte_eal_dev_detach``. + * Renamed helpers and support macros to make them more synonymous + with their device types + (e.g. ``PMD_REGISTER_DRIVER`` => ``RTE_PMD_REGISTER_PCI``). + * Device naming functions have been generalized from ethdev and cryptodev + to EAL. ``rte_eal_pci_device_name`` has been introduced for obtaining + unique device name from PCI Domain-BDF description. + * Virtual device registration APIs have been added: ``rte_eal_vdrv_register`` + and ``rte_eal_vdrv_unregister``. + + +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. 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: + + libethdev.so.4 + librte_acl.so.2 + + librte_cfgfile.so.2 + librte_cmdline.so.2 + + + +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.5 + 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: + + #. Platform name. + + * Platform details. + * Platform details. + + This section is a comment. Make sure to start the actual text at the margin. + +#. SuperMicro 1U + + - BIOS: 1.0c + - Processor: Intel(R) Atom(TM) CPU C2758 @ 2.40GHz + +#. SuperMicro 1U + + - BIOS: 1.0a + - Processor: Intel(R) Xeon(R) CPU D-1540 @ 2.00GHz + - Onboard NIC: Intel(R) X552/X557-AT (2x10G) + + - Firmware-version: 0x800001cf + - Device ID (PF/VF): 8086:15ad /8086:15a8 + + - kernel driver version: 4.2.5 (ixgbe) + +#. SuperMicro 2U + + - BIOS: 1.0a + - Processor: Intel(R) Xeon(R) CPU E5-4667 v3 @ 2.00GHz + +#. Intel(R) Server board S2600GZ + + - BIOS: SE5C600.86B.02.02.0002.122320131210 + - Processor: Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz + +#. Intel(R) Server board W2600CR + + - BIOS: SE5C600.86B.02.01.0002.082220131453 + - Processor: Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz + +#. Intel(R) Server board S2600CWT + + - BIOS: SE5C610.86B.01.01.0009.060120151350 + - Processor: Intel(R) Xeon(R) CPU E5-2699 v3 @ 2.30GHz + +#. Intel(R) Server board S2600WTT + + - BIOS: SE5C610.86B.01.01.0005.101720141054 + - Processor: Intel(R) Xeon(R) CPU E5-2699 v3 @ 2.30GHz + +#. Intel(R) Server board S2600WTT + + - BIOS: SE5C610.86B.11.01.0044.090120151156 + - Processor: Intel(R) Xeon(R) CPU E5-2695 v4 @ 2.10GHz + +#. Intel(R) Server board S2600WTT + + - Processor: Intel(R) Xeon(R) CPU E5-2697 v2 @ 2.70GHz + +#. Intel(R) Server + + - Intel(R) Xeon(R) CPU E5-2697 v3 @ 2.60GHz + +#. IBM(R) Power8(R) + + - Machine type-model: 8247-22L + - Firmware FW810.21 (SV810_108) + - Processor: POWER8E (raw), AltiVec supported + + +Tested NICs +----------- + +.. This section should contain a list of NICs that were tested with this release. + + The format is: + + #. NIC name. + + * NIC details. + * NIC details. + + This section is a comment. Make sure to start the actual text at the margin. + +#. Intel(R) Ethernet Controller X540-AT2 + + - Firmware version: 0x80000389 + - Device id (pf): 8086:1528 + - Driver version: 3.23.2 (ixgbe) + +#. 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) Ethernet Multi-host Controller FM10000 + + - Firmware version: N/A + - Device id (pf/vf): 8086:15d0 + - Driver version: 0.17.0.9 (fm10k) + +#. Mellanox(R) ConnectX(R)-4 10G MCX4111A-XCAT (1x10G) + + * Host interface: PCI Express 3.0 x8 + * Device ID: 15b3:1013 + * MLNX_OFED: 3.4-1.0.0.0 + * Firmware version: 12.17.1010 + +#. Mellanox(R) ConnectX(R)-4 10G MCX4121A-XCAT (2x10G) + + * Host interface: PCI Express 3.0 x8 + * Device ID: 15b3:1013 + * MLNX_OFED: 3.4-1.0.0.0 + * Firmware version: 12.17.1010 + +#. Mellanox(R) ConnectX(R)-4 25G MCX4111A-ACAT (1x25G) + + * Host interface: PCI Express 3.0 x8 + * Device ID: 15b3:1013 + * MLNX_OFED: 3.4-1.0.0.0 + * Firmware version: 12.17.1010 + +#. Mellanox(R) ConnectX(R)-4 25G MCX4121A-ACAT (2x25G) + + * Host interface: PCI Express 3.0 x8 + * Device ID: 15b3:1013 + * MLNX_OFED: 3.4-1.0.0.0 + * Firmware version: 12.17.1010 + +#. Mellanox(R) ConnectX(R)-4 40G MCX4131A-BCAT/MCX413A-BCAT (1x40G) + + * Host interface: PCI Express 3.0 x8 + * Device ID: 15b3:1013 + * MLNX_OFED: 3.4-1.0.0.0 + * Firmware version: 12.17.1010 + +#. Mellanox(R) ConnectX(R)-4 40G MCX415A-BCAT (1x40G) + + * Host interface: PCI Express 3.0 x16 + * Device ID: 15b3:1013 + * MLNX_OFED: 3.4-1.0.0.0 + * Firmware version: 12.17.1010 + +#. Mellanox(R) ConnectX(R)-4 50G MCX4131A-GCAT/MCX413A-GCAT (1x50G) + + * Host interface: PCI Express 3.0 x8 + * Device ID: 15b3:1013 + * MLNX_OFED: 3.4-1.0.0.0 + * Firmware version: 12.17.1010 + +#. Mellanox(R) ConnectX(R)-4 50G MCX414A-BCAT (2x50G) + + * Host interface: PCI Express 3.0 x8 + * Device ID: 15b3:1013 + * MLNX_OFED: 3.4-1.0.0.0 + * Firmware version: 12.17.1010 + +#. Mellanox(R) ConnectX(R)-4 50G MCX415A-GCAT/MCX416A-BCAT/MCX416A-GCAT (2x50G) + + * Host interface: PCI Express 3.0 x16 + * Device ID: 15b3:1013 + * MLNX_OFED: 3.4-1.0.0.0 + * Firmware version: 12.17.1010 + +#. Mellanox(R) ConnectX(R)-4 50G MCX415A-CCAT (1x100G) + + * Host interface: PCI Express 3.0 x16 + * Device ID: 15b3:1013 + * MLNX_OFED: 3.4-1.0.0.0 + * Firmware version: 12.17.1010 + +#. Mellanox(R) ConnectX(R)-4 100G MCX416A-CCAT (2x100G) + + * Host interface: PCI Express 3.0 x16 + * Device ID: 15b3:1013 + * MLNX_OFED: 3.4-1.0.0.0 + * Firmware version: 12.17.1010 + +#. Mellanox(R) ConnectX(R)-4 Lx 10G MCX4121A-XCAT (2x10G) + + * Host interface: PCI Express 3.0 x8 + * Device ID: 15b3:1015 + * MLNX_OFED: 3.4-1.0.0.0 + * Firmware version: 14.17.1010 + +#. Mellanox(R) ConnectX(R)-4 Lx 25G MCX4121A-ACAT (2x25G) + + * Host interface: PCI Express 3.0 x8 + * Device ID: 15b3:1015 + * MLNX_OFED: 3.4-1.0.0.0 + * Firmware version: 14.17.1010 + + +Tested OSes +----------- + +.. This section should contain a list of OSes that were tested with this release. + The format is as follows, in alphabetical order: + + * CentOS 7.0 + * Fedora 23 + * Fedora 24 + * FreeBSD 10.3 + * Red Hat Enterprise Linux 7.2 + * SUSE Enterprise Linux 12 + * Ubuntu 15.10 + * Ubuntu 16.04 LTS + * Wind River Linux 8 + + This section is a comment. Make sure to start the actual text at the margin. + +* CentOS 7.2 +* Fedora 23 +* Fedora 24 +* FreeBSD 10.3 +* FreeBSD 11 +* Red Hat Enterprise Linux Server release 6.7 (Santiago) +* Red Hat Enterprise Linux Server release 7.0 (Maipo) +* Red Hat Enterprise Linux Server release 7.2 (Maipo) +* SUSE Enterprise Linux 12 +* Wind River Linux 6.0.0.26 +* Wind River Linux 8 +* Ubuntu 14.04 +* Ubuntu 15.04 +* Ubuntu 16.04 diff --git a/src/seastar/dpdk/doc/guides/rel_notes/release_17_02.rst b/src/seastar/dpdk/doc/guides/rel_notes/release_17_02.rst new file mode 100644 index 00000000..357965ac --- /dev/null +++ b/src/seastar/dpdk/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/src/seastar/dpdk/doc/guides/rel_notes/release_17_05.rst b/src/seastar/dpdk/doc/guides/rel_notes/release_17_05.rst new file mode 100644 index 00000000..cbdb4065 --- /dev/null +++ b/src/seastar/dpdk/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 diff --git a/src/seastar/dpdk/doc/guides/rel_notes/release_1_8.rst b/src/seastar/dpdk/doc/guides/rel_notes/release_1_8.rst new file mode 100644 index 00000000..dd36e7d7 --- /dev/null +++ b/src/seastar/dpdk/doc/guides/rel_notes/release_1_8.rst @@ -0,0 +1,64 @@ +.. BSD LICENSE + Copyright(c) 2010-2014 Intel Corporation. All rights reserved. + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + * Neither the name of Intel Corporation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +DPDK Release 1.8 +================ + +New Features +------------ + +* Link Bonding + + * Support for 802.3ad link aggregation (mode 4) and transmit load balancing (mode 5) to the link bonding library. + + * Support for registration of link status change callbacks with link bonding devices. + + * Support for slaves devices which do not support link status change interrupts in the link bonding library via a link status polling mechanism. + +* Poll Mode Driver - 40 GbE Controllers (librte_pmd_i40e) + + * Support for Flow Director + + * Support for ethertype filter + + * Support RSS in VF + + * Support configuring redirection table with different size from 1GbE and 10 GbE + + - 128/512 entries of 40GbE PF + + - 64 entries of 40GbE VF + + * Support configuring hash functions + + * Support for VXLAN packet on Intel 40GbE Controllers + +* Packet Distributor Sample Application diff --git a/src/seastar/dpdk/doc/guides/rel_notes/release_2_0.rst b/src/seastar/dpdk/doc/guides/rel_notes/release_2_0.rst new file mode 100644 index 00000000..62737ae7 --- /dev/null +++ b/src/seastar/dpdk/doc/guides/rel_notes/release_2_0.rst @@ -0,0 +1,139 @@ +.. BSD LICENSE + Copyright(c) 2010-2014 Intel Corporation. All rights reserved. + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + * Neither the name of Intel Corporation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +DPDK Release 2.0 +================ + + +New Features +------------ + +* Poll-mode driver support for an early release of the PCIE host interface of the Intel(R) Ethernet Switch FM10000. + + * Basic Rx/Tx functions for PF/VF + + * Interrupt handling support for PF/VF + + * Per queue start/stop functions for PF/VF + + * Support Mailbox handling between PF/VF and PF/Switch Manager + + * Receive Side Scaling (RSS) for PF/VF + + * Scatter receive function for PF/VF + + * Reta update/query for PF/VF + + * VLAN filter set for PF + + * Link status query for PF/VF + +.. note:: The software is intended to run on pre-release hardware and may contain unknown or unresolved defects or + issues related to functionality and performance. + The poll mode driver is also pre-release and will be updated to a released version post hardware and base driver release. + Should the official hardware release be made between DPDK releases an updated poll-mode driver will be made available. + +* Link Bonding + + * Support for adaptive load balancing (mode 6) to the link bonding library. + + * Support for registration of link status change callbacks with link bonding devices. + + * Support for slaves devices which do not support link status change interrupts in the link bonding library via a link status polling mechanism. + +* PCI Hotplug with NULL PMD sample application + +* ABI versioning + +* x32 ABI + +* Non-EAL Thread Support + +* Multi-pthread Support + +* Re-order Library + +* ACL for AVX2 + +* Architecture Independent CRC Hash + +* uio_pci_generic Support + +* KNI Optimizations + +* Vhost-user support + +* Virtio (link, vlan, mac, port IO, perf) + +* IXGBE-VF RSS + +* RX/TX Callbacks + +* Unified Flow Types + +* Indirect Attached MBUF Flag + +* Use default port configuration in TestPMD + +* Tunnel offloading in TestPMD + +* Poll Mode Driver - 40 GbE Controllers (librte_pmd_i40e) + + * Support for Flow Director + + * Support for ethertype filter + + * Support RSS in VF + + * Support configuring redirection table with different size from 1GbE and 10 GbE + + - 128/512 entries of 40GbE PF + + - 64 entries of 40GbE VF + + * Support configuring hash functions + + * Support for VXLAN packet on Intel® 40GbE Controllers + +* Poll Mode Driver for Mellanox ConnectX-3 EN adapters (mlx4) + +.. note:: This PMD is only available for Linux and is disabled by default + due to external dependencies (libibverbs and libmlx4). Please + refer to the NIC drivers guide for more information. + +* Packet Distributor Sample Application + +* Job Stats library and Sample Application. + +* Enhanced Jenkins hash (jhash) library + +.. note:: The hash values returned by the new jhash library are different + from the ones returned by the previous library. diff --git a/src/seastar/dpdk/doc/guides/rel_notes/release_2_1.rst b/src/seastar/dpdk/doc/guides/rel_notes/release_2_1.rst new file mode 100644 index 00000000..103a5ee8 --- /dev/null +++ b/src/seastar/dpdk/doc/guides/rel_notes/release_2_1.rst @@ -0,0 +1,1042 @@ +.. BSD LICENSE + Copyright(c) 2010-2015 Intel Corporation. All rights reserved. + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + * Neither the name of Intel Corporation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +DPDK Release 2.1 +================ + + +New Features +------------ + +* **Enabled cloning of indirect mbufs.** + + This feature removes a limitation of ``rte_pktmbuf_attach()`` which + generated the warning: "mbuf we're attaching to must be direct". + + Now, when attaching to an indirect mbuf it is possible to: + + * Copy all relevant fields (address, length, offload, ...) as before. + + * Get the pointer to the mbuf that embeds the data buffer (direct mbuf), + and increase the reference counter. + + When detaching the mbuf, we can now retrieve this direct mbuf as the + pointer is determined from the buffer address. + + +* **Extended packet type support.** + + In previous releases mbuf packet types were indicated by 6 bits in the + ``ol_flags``. This was not enough for some supported NICs. For example i40e + hardware can recognize more than 150 packet types. Not being able to + identify these additional packet types limits access to hardware offload + capabilities + + So an extended "unified" packet type was added to support all possible + PMDs. The 16 bit packet_type in the mbuf structure was changed to 32 bits + and used for this purpose. + + To avoid breaking ABI compatibility, the code changes for this feature are + enclosed in a ``RTE_NEXT_ABI`` ifdef. This is enabled by default but can be + turned off for ABI compatibility with DPDK R2.0. + + +* **Reworked memzone to be allocated by malloc and also support freeing.** + + In the memory hierarchy, memsegs are groups of physically contiguous + hugepages, memzones are slices of memsegs, and malloc slices memzones + into smaller memory chunks. + + This feature modifies ``malloc()`` so it partitions memsegs instead of + memzones. Now memzones allocate their memory from the malloc heap. + + Backward compatibility with API and ABI are maintained. + + This allow memzones, and any other structure based on memzones, for example + mempools, to be freed. Currently only the API from freeing memzones is + supported. + + +* **Interrupt mode PMD.** + + This feature introduces a low-latency one-shot RX interrupt into DPDK. It + also adds a polling and interrupt mode switch control example. + + DPDK userspace interrupt notification and handling mechanism is based on + UIO/VFIO with the following limitations: + + * Per queue RX interrupt events are only allowed in VFIO which supports + multiple MSI-X vectors. + * In UIO, the RX interrupt shares the same vector with other + interrupts. When the RX interrupt and LSC interrupt are both enabled, only + the former is available. + * RX interrupt is only implemented for the linuxapp target. + * The feature is only currently enabled for tow PMDs: ixgbe and igb. + + +* **Packet Framework enhancements.** + + Several enhancements were made to the Packet Framework: + + * A new configuration file syntax has been introduced for IP pipeline + applications. Parsing of the configuration file is changed. + * Implementation of the IP pipeline application is modified to make it more + structured and user friendly. + * Implementation of the command line interface (CLI) for each pipeline type + has been moved to the separate compilation unit. Syntax of pipeline CLI + commands has been changed. + * Initialization of IP pipeline is modified to match the new parameters + structure. + * New implementation of pass-through pipeline, firewall pipeline, routing + pipeline, and flow classification has been added. + * Master pipeline with CLI interface has been added. + * Added extended documentation of the IP Pipeline. + + +* **Added API for IEEE1588 timestamping.** + + This feature adds an ethdev API to enable, disable and read IEEE1588/802.1AS + PTP timestamps from devices that support it. The following functions were + added: + + * ``rte_eth_timesync_enable()`` + * ``rte_eth_timesync_disable()`` + * ``rte_eth_timesync_read_rx_timestamp()`` + * ``rte_eth_timesync_read_tx_timestamp()`` + + The "ieee1588" forwarding mode in testpmd was also refactored to demonstrate + the new API. + + +* **Added multicast address filtering.** + + Added multicast address filtering via a new ethdev function + ``set_mc_addr_list()``. + + This overcomes a limitation in previous releases where the receipt of + multicast packets on a given port could only be enabled by invoking the + ``rte_eth_allmulticast_enable()`` function. This method did not work for VFs + in SR-IOV architectures when the host PF driver does not allow these + operation on VFs. In such cases, joined multicast addresses had to be added + individually to the set of multicast addresses that are filtered by the [VF] + port. + + +* **Added Flow Director extensions.** + + Several Flow Director extensions were added such as: + + * Support for RSS and Flow Director hashes in vector RX. + * Added Flow Director for L2 payload. + + +* **Added RSS hash key size query per port.** + + This feature supports querying the RSS hash key size of each port. A new + field ``hash_key_size`` has been added in the ``rte_eth_dev_info`` struct + for storing hash key size in bytes. + + +* **Added userspace ethtool support.** + + Added userspace ethtool support to provide a familiar interface for + applications that manage devices via kernel-space ``ethtool_op`` and + ``net_device_op``. + + The initial implementation focuses on operations that can be implemented + through existing ``netdev`` APIs. More operations will be supported in later + releases. + + +* **Updated the ixgbe base driver.** + + The ixgbe base driver was updated with several changes including the + following: + + * Added a new 82599 device id. + * Added new X550 PHY ids. + * Added SFP+ dual-speed support. + * Added wait helper for X550 IOSF accesses. + * Added X550em features. + * Added X557 PHY LEDs support. + * Commands for flow director. + * Issue firmware command when resetting X550em. + + See the git log for full details of the ixgbe/base changes. + + +* **Added additional hotplug support.** + + Port hotplug support was added to the following PMDs: + + * e1000/igb. + * ixgbe. + * i40e. + * fm10k. + * ring. + * bonding. + * virtio. + + Port hotplug support was added to BSD. + + +* **Added ixgbe LRO support.** + + Added LRO support for x540 and 82599 devices. + + +* **Added extended statistics for ixgbe.** + + Implemented ``xstats_get()`` and ``xstats_reset()`` in dev_ops for + ixgbe to expose detailed error statistics to DPDK applications. + + These will be implemented for other PMDs in later releases. + + +* **Added proc_info application.** + + Created a new ``proc_info`` application, by refactoring the existing + ``dump_cfg`` application, to demonstrate the usage of retrieving statistics, + and the new extended statistics (see above), for DPDK interfaces. + + +* **Updated the i40e base driver.** + + The i40e base driver was updated with several changes including the + following: + + * Support for building both PF and VF driver together. + * Support for CEE DCBX on recent firmware versions. + * Replacement of ``i40e_debug_read_register()``. + * Rework of ``i40e_hmc_get_object_va``. + * Update of shadow RAM read/write functions. + * Enhancement of polling NVM semaphore. + * Enhancements on adminq init and sending asq command. + * Update of get/set LED functions. + * Addition of AOC phy types to case statement in get_media_type. + * Support for iSCSI capability. + * Setting of FLAG_RD when sending driver version to FW. + + See the git log for full details of the i40e/base changes. + + +* **Added support for port mirroring in i40e.** + + Enabled mirror functionality in the i40e driver. + + +* **Added support for i40e double VLAN, QinQ, stripping and insertion.** + + Added support to the i40e driver for offloading double VLAN (QinQ) tags to + the mbuf header, and inserting double vlan tags by hardware to the packets + to be transmitted. Added a new field ``vlan_tci_outer`` in the ``rte_mbuf`` + struct, and new flags in ``ol_flags`` to support this feature. + + + +* **Added fm10k promiscuous mode support.** + + Added support for promiscuous/allmulticast enable and disable in the fm10k PF + function. VF is not supported yet. + + +* **Added fm10k jumbo frame support.** + + Added support for jumbo frame less than 15K in both VF and PF functions in the + fm10k pmd. + + +* **Added fm10k mac vlan filtering support.** + + Added support for the fm10k MAC filter, only available in PF. Updated the + VLAN filter to add/delete one static entry in the MAC table for each + combination of VLAN and MAC address. + + +* **Added support for the Broadcom bnx2x driver.** + + Added support for the Broadcom NetXtreme II bnx2x driver. + It is supported only on Linux 64-bit and disabled by default. + + +* **Added support for the Chelsio CXGBE driver.** + + Added support for the CXGBE Poll Mode Driver for the Chelsio Terminator 5 + series of 10G/40G adapters. + + +* **Enhanced support for Mellanox ConnectX-3 driver (mlx4).** + + * Support Mellanox OFED 3.0. + * Improved performance for both RX and TX operations. + * Better link status information. + * Outer L3/L4 checksum offload support. + * Inner L3/L4 checksum offload support for VXLAN. + + +* **Enabled VMXNET3 vlan filtering.** + + Added support for the VLAN filter functionality of the VMXNET3 interface. + + +* **Added support for vhost live migration.** + + Added support to allow live migration of vhost. Without this feature, qemu + will report the following error: "migrate: Migration disabled: vhost lacks + VHOST_F_LOG_ALL feature". + + +* **Added support for pcap jumbo frames.** + + Extended the PCAP PMD to support jumbo frames for RX and TX. + + +* **Added support for the TILE-Gx architecture.** + + Added support for the EZchip TILE-Gx family of SoCs. + + +* **Added hardware memory transactions/lock elision for x86.** + + Added the use of hardware memory transactions (HTM) on fast-path for rwlock + and spinlock (a.k.a. lock elision). The methods are implemented for x86 + using Restricted Transactional Memory instructions (Intel(r) Transactional + Synchronization Extensions). The implementation fall-backs to the normal + rwlock if HTM is not available or memory transactions fail. This is not a + replacement for all rwlock usages since not all critical sections protected + by locks are friendly to HTM. For example, an attempt to perform a HW I/O + operation inside a hardware memory transaction always aborts the transaction + since the CPU is not able to roll-back should the transaction + fail. Therefore, hardware transactional locks are not advised to be used + around ``rte_eth_rx_burst()`` and ``rte_eth_tx_burst()`` calls. + + +* **Updated Jenkins Hash function** + + Updated the version of the Jenkins Hash (jhash) function used in DPDK from + the 1996 version to the 2006 version. This gives up to 35% better + performance, compared to the original one. + + Note, the hashes generated by the updated version differ from the hashes + generated by the previous version. + + +* **Added software implementation of the Toeplitz RSS hash** + + Added a software implementation of the Toeplitz hash function used by RSS. It + can be used either for packet distribution on a single queue NIC or for + simulating RSS computation on a specific NIC (for example after GRE header + de-encapsulation). + + +* **Replaced the existing hash library with a Cuckoo hash implementation.** + + Replaced the existing hash library with another approach, using the Cuckoo + Hash method to resolve collisions (open addressing). This method pushes + items from a full bucket when a new entry must be added to it, storing the + evicted entry in an alternative location, using a secondary hash function. + + This gives the user the ability to store more entries when a bucket is full, + in comparison with the previous implementation. + + The API has not been changed, although new fields have been added in the + ``rte_hash`` structure, which has been changed to internal use only. + + The main change when creating a new table is that the number of entries per + bucket is now fixed, so its parameter is ignored now (it is still there to + maintain the same parameters structure). + + Also, the maximum burst size in lookup_burst function hash been increased to + 64, to improve performance. + + +* **Optimized KNI RX burst size computation.** + + Optimized KNI RX burst size computation by avoiding checking how many + entries are in ``kni->rx_q`` prior to actually pulling them from the fifo. + + +* **Added KNI multicast.** + + Enabled adding multicast addresses to KNI interfaces by adding an empty + callback for ``set_rx_mode`` (typically used for setting up hardware) so + that the ioctl succeeds. This is the same thing as the Linux tap interface + does. + + +* **Added cmdline polling mode.** + + Added the ability to process console input in the same thread as packet + processing by using the ``poll()`` function. + +* **Added VXLAN Tunnel End point sample application.** + + Added a Tunnel End point (TEP) sample application that simulates a VXLAN + Tunnel Endpoint (VTEP) termination in DPDK. It is used to demonstrate the + offload and filtering capabilities of Intel XL710 10/40 GbE NICsfor VXLAN + packets. + + +* **Enabled combining of the ``-m`` and ``--no-huge`` EAL options.** + + Added option to allow combining of the ``-m`` and ``--no-huge`` EAL command + line options. + + This allows user application to run as non-root but with higher memory + allocations, and removes a constraint on ``--no-huge`` mode being limited to + 64M. + + + +Resolved Issues +--------------- + +* **acl: Fix ambiguity between test rules.** + + Some test rules had equal priority for the same category. That could cause + an ambiguity in building the trie and test results. + + +* **acl: Fix invalid rule wildness calculation for bitmask field type.** + + +* **acl: Fix matching rule.** + + +* **acl: Fix unneeded trie splitting for subset of rules.** + + When rebuilding a trie for limited rule-set, don't try to split the rule-set + even further. + + +* **app/testpmd: Fix crash when port id out of bound.** + + Fixed issues in testpmd where using a port greater than 32 would cause a seg + fault. + + Fixes: edab33b1c01d ("app/testpmd: support port hotplug") + + +* **app/testpmd: Fix reply to a multicast ICMP request.** + + Set the IP source and destination addresses in the IP header of the ICMP + reply. + + +* **app/testpmd: fix MAC address in ARP reply.** + + Fixed issue where in the ``icmpecho`` forwarding mode, ARP replies from + testpmd contain invalid zero-filled MAC addresses. + + Fixes: 31db4d38de72 ("net: change arp header struct declaration") + + +* **app/testpmd: fix default flow control values.** + + Fixes: 422a20a4e62d ("app/testpmd: fix uninitialized flow control variables") + + +* **bonding: Fix crash when stopping inactive slave.** + + +* **bonding: Fix device initialization error handling.** + + +* **bonding: Fix initial link status of slave.** + + On Fortville NIC, link status change interrupt callback was not executed + when slave in bonding was (re-)started. + + +* **bonding: Fix socket id for LACP slave.** + + Fixes: 46fb43683679 ("bond: add mode 4") + + +* **bonding: Fix device initialization error handling.** + + +* **cmdline: Fix small memory leak.** + + A function in ``cmdline.c`` had a return that did not free the buf properly. + + +* **config: Enable same drivers options for Linux and BSD.** + + Enabled vector ixgbe and i40e bulk alloc for BSD as it is already done for + Linux. + + Fixes: 304caba12643 ("config: fix bsd options") + Fixes: 0ff3324da2eb ("ixgbe: rework vector pmd following mbuf changes") + + +* **devargs: Fix crash on failure.** + + This problem occurred when passing an invalid PCI id to the blacklist API in + devargs. + + +* **e1000/i40e: Fix descriptor done flag with odd address.** + + +* **e1000/igb: fix ieee1588 timestamping initialization.** + + Fixed issue with e1000 ieee1588 timestamp initialization. On initialization + the IEEE1588 functions read the system time to set their timestamp. However, + on some 1G NICs, for example, i350, system time is disabled by default and + the IEEE1588 timestamp was always 0. + + +* **eal/bsd: Fix inappropriate header guards.** + + +* **eal/bsd: Fix virtio on FreeBSD.** + + Closing the ``/dev/io`` fd caused a SIGBUS in inb/outb instructions as the + process lost the IOPL privileges once the fd is closed. + + Fixes: 8a312224bcde ("eal/bsd: fix fd leak") + + +* **eal/linux: Fix comments on vfio MSI.** + + +* **eal/linux: Fix irq handling with igb_uio.** + + Fixed an issue where the the introduction of ``uio_pci_generic`` broke + interrupt handling with igb_uio. + + Fixes: c112df6875a5 ("eal/linux: toggle interrupt for uio_pci_generic") + + +* **eal/linux: Fix numa node detection.** + + +* **eal/linux: Fix socket value for undetermined numa node.** + + Sets zero as the default value of pci device numa_node if the socket could + not be determined. This provides the same default value as FreeBSD which has + no NUMA support, and makes the return value of ``rte_eth_dev_socket_id()`` + be consistent with the API description. + + +* **eal/ppc: Fix cpu cycle count for little endian.** + + On IBM POWER8 PPC64 little endian architecture, the definition of tsc union + will be different. This fix enables the right output from ``rte_rdtsc()``. + + +* **ethdev: Fix check of threshold for TX freeing.** + + Fixed issue where the parameter to ``tx_free_thresh`` was not consistent + between the drivers. + + +* **ethdev: Fix crash if malloc of user callback fails.** + + If ``rte_zmalloc()`` failed in ``rte_eth_dev_callback_register`` then the + NULL pointer would be dereferenced. + + +* **ethdev: Fix illegal port access.** + + To obtain a detachable flag, ``pci_drv`` is accessed in + ``rte_eth_dev_is_detachable()``. However ``pci_drv`` is only valid if port + is enabled. Fixed by checking ``rte_eth_dev_is_valid_port()`` first. + + +* **ethdev: Make tables const.** + + +* **ethdev: Rename and extend the mirror type.** + + +* **examples/distributor: Fix debug macro.** + + The macro to turn on additional debug output when the app was compiled with + ``-DDEBUG`` was broken. + + Fixes: 07db4a975094 ("examples/distributor: new sample app") + + +* **examples/kni: Fix crash on exit.** + + +* **examples/vhost: Fix build with debug enabled.** + + Fixes: 72ec8d77ac68 ("examples/vhost: rework duplicated code") + + +* **fm10k: Fix RETA table initialization.** + + The fm10k driver has 128 RETA entries in 32 registers, but it only + initialized the first 32 when doing multiple RX queue configurations. This + fix initializes all 128 entries. + + +* **fm10k: Fix RX buffer size.** + + +* **fm10k: Fix TX multi-segment frame.** + + +* **fm10k: Fix TX queue cleaning after start error.** + + +* **fm10k: Fix Tx queue cleaning after start error.** + + +* **fm10k: Fix default mac/vlan in switch.** + + +* **fm10k: Fix interrupt fault handling.** + + +* **fm10k: Fix jumbo frame issue.** + + +* **fm10k: Fix mac/vlan filtering.** + + +* **fm10k: Fix maximum VF number.** + + +* **fm10k: Fix maximum queue number for VF.** + + Both PF and VF shared code in function ``fm10k_stats_get()``. The function + worked with PF, but had problems with VF since it has less queues than PF. + + Fixes: a6061d9e7075 ("fm10k: register PF driver") + + +* **fm10k: Fix queue disabling.** + + +* **fm10k: Fix switch synchronization.** + + +* **i40e/base: Fix error handling of NVM state update.** + + +* **i40e/base: Fix hardware port number for pass-through.** + + +* **i40e/base: Rework virtual address retrieval for lan queue.** + + +* **i40e/base: Update LED blinking.** + + +* **i40e/base: Workaround for PHY type with firmware < 4.4.** + + +* **i40e: Disable setting of PHY configuration.** + + +* **i40e: Fix SCTP flow director.** + + +* **i40e: Fix check of descriptor done flag.** + + Fixes: 4861cde46116 ("i40e: new poll mode driver") + Fixes: 05999aab4ca6 ("i40e: add or delete flow director") + + +* **i40e: Fix condition to get VMDQ info.** + + +* **i40e: Fix registers access from big endian CPU.** + + +* **i40evf: Clear command when error occurs.** + + +* **i40evf: Fix RSS with less RX queues than TX queues.** + + +* **i40evf: Fix crash when setup TX queues.** + + +* **i40evf: Fix jumbo frame support.** + + +* **i40evf: Fix offload capability flags.** + + Added checksum offload capability flags which have already been supported + for a long time. + + +* **ivshmem: Fix crash in corner case.** + + Fixed issues where depending on the configured segments it was possible to + hit a segmentation fault as a result of decrementing an unsigned index with + value 0. + + + Fixes: 40b966a211ab ("ivshmem: library changes for mmaping using ivshmem") + + +* **ixgbe/base: Fix SFP probing.** + + +* **ixgbe/base: Fix TX pending clearing.** + + +* **ixgbe/base: Fix X550 CS4227 address.** + + +* **ixgbe/base: Fix X550 PCIe master disabling.** + + +* **ixgbe/base: Fix X550 check.** + + +* **ixgbe/base: Fix X550 init early return.** + + +* **ixgbe/base: Fix X550 link speed.** + + +* **ixgbe/base: Fix X550em CS4227 speed mode.** + + +* **ixgbe/base: Fix X550em SFP+ link stability.** + + +* **ixgbe/base: Fix X550em UniPHY link configuration.** + + +* **ixgbe/base: Fix X550em flow control for KR backplane.** + + +* **ixgbe/base: Fix X550em flow control to be KR only.** + + +* **ixgbe/base: Fix X550em link setup without SFP.** + + +* **ixgbe/base: Fix X550em mux after MAC reset.** + + Fixes: d2e72774e58c ("ixgbe/base: support X550") + + +* **ixgbe/base: Fix bus type overwrite.** + + +* **ixgbe/base: Fix init handling of X550em link down.** + + +* **ixgbe/base: Fix lan id before first i2c access.** + + +* **ixgbe/base: Fix mac type checks.** + + +* **ixgbe/base: Fix tunneled UDP and TCP frames in flow director.** + + +* **ixgbe: Check mbuf refcnt when clearing a ring.** + + The function to clear the TX ring when a port was being closed, e.g. on exit + in testpmd, was not checking the mbuf refcnt before freeing it. Since the + function in the vector driver to clear the ring after TX does not setting + the pointer to NULL post-free, this caused crashes if mbuf debugging was + turned on. + + +* **ixgbe: Fix RX with buffer address not word aligned.** + + Niantic HW expects the Header Buffer Address in the RXD must be word + aligned. + + +* **ixgbe: Fix RX with buffer address not word aligned.** + + +* **ixgbe: Fix Rx queue reset.** + + Fix to reset vector related RX queue fields to their initial values. + + Fixes: c95584dc2b18 ("ixgbe: new vectorized functions for Rx/Tx") + + +* **ixgbe: Fix TSO in IPv6.** + + When TSO was used with IPv6, the generated frames were incorrect. The L4 + frame was OK, but the length field of IPv6 header was not populated + correctly. + + +* **ixgbe: Fix X550 flow director check.** + + +* **ixgbe: Fix check for split packets.** + + The check for split packets to be reassembled in the vector ixgbe PMD was + incorrectly only checking the first 16 elements of the array instead of + all 32. + + Fixes: cf4b4708a88a ("ixgbe: improve slow-path perf with vector scattered Rx") + + +* **ixgbe: Fix data access on big endian cpu.** + + +* **ixgbe: Fix flow director flexbytes offset.** + + + Fixes: d54a9888267c ("ixgbe: support flexpayload configuration of flow director") + + +* **ixgbe: Fix number of segments with vector scattered Rx.** + + Fixes: cf4b4708a88a (ixgbe: improve slow-path perf with vector scattered Rx) + + +* **ixgbe: Fix offload config option name.** + + The RX_OLFLAGS option was renamed from DISABLE to ENABLE in the driver code + and Linux config. It is now renamed also in the BSD config and + documentation. + + Fixes: 359f106a69a9 ("ixgbe: prefer enabling olflags rather than not disabling") + + +* **ixgbe: Fix release queue mbufs.** + + The calculations of what mbufs were valid in the RX and TX queues were + incorrect when freeing the mbufs for the vector PMD. This led to crashes due + to invalid reference counts when mbuf debugging was turned on, and possibly + other more subtle problems (such as mbufs being freed when in use) in other + cases. + + + Fixes: c95584dc2b18 ("ixgbe: new vectorized functions for Rx/Tx") + + +* **ixgbe: Move PMD specific fields out of base driver.** + + Move ``rx_bulk_alloc_allowed`` and ``rx_vec_allowed`` from ``ixgbe_hw`` to + ``ixgbe_adapter``. + + Fixes: 01fa1d6215fa ("ixgbe: unify Rx setup") + + +* **ixgbe: Rename TX queue release function.** + + +* **ixgbevf: Fix RX function selection.** + + The logic to select ixgbe the VF RX function is different than the PF. + + +* **ixgbevf: Fix link status for PF up/down events.** + + +* **kni: Fix RX loop limit.** + + Loop processing packets dequeued from rx_q was using the number of packets + requested, not how many it actually received. + + +* **kni: Fix ioctl in containers, like Docker.** + + +* **kni: Fix multicast ioctl handling.** + + +* **log: Fix crash after log_history dump.** + + +* **lpm: Fix big endian support.** + + +* **lpm: Fix depth small entry add.** + + +* **mbuf: Fix cloning with private mbuf data.** + + Added a new ``priv_size`` field in mbuf structure that should be initialized + at mbuf pool creation. This field contains the size of the application + private data in mbufs. + + Introduced new static inline functions ``rte_mbuf_from_indirect()`` and + ``rte_mbuf_to_baddr()`` to replace the existing macros, which take the + private size into account when attaching and detaching mbufs. + + +* **mbuf: Fix data room size calculation in pool init.** + + Deduct the mbuf data room size from ``mempool->elt_size`` and ``priv_size``, + instead of using an hardcoded value that is not related to the real buffer + size. + + To use ``rte_pktmbuf_pool_init()``, the user can either: + + * Give a NULL parameter to rte_pktmbuf_pool_init(): in this case, the + private size is assumed to be 0, and the room size is ``mp->elt_size`` - + ``sizeof(struct rte_mbuf)``. + * Give the ``rte_pktmbuf_pool_private`` filled with appropriate + data_room_size and priv_size values. + + +* **mbuf: Fix init when private size is not zero.** + + Allow the user to use the default ``rte_pktmbuf_init()`` function even if + the mbuf private size is not 0. + + +* **mempool: Add structure for object headers.** + + Each object stored in mempools are prefixed by a header, allowing for + instance to retrieve the mempool pointer from the object. When debug is + enabled, a cookie is also added in this header that helps to detect + corruptions and double-frees. + + Introduced a structure that materializes the content of this header, + and will simplify future patches adding things in this header. + + +* **mempool: Fix pages computation to determine number of objects.** + + +* **mempool: Fix returned value after counting objects.** + + Fixes: 148f963fb532 ("xen: core library changes") + + +* **mlx4: Avoid requesting TX completion events to improve performance.** + + Instead of requesting a completion event for each TX burst, request it on a + fixed schedule once every MLX4_PMD_TX_PER_COMP_REQ (currently 64) packets to + improve performance. + + +* **mlx4: Fix compilation as a shared library and on 32 bit platforms.** + + +* **mlx4: Fix possible crash on scattered mbuf allocation failure.** + + Fixes issue where failing to allocate a segment, ``mlx4_rx_burst_sp()`` + could call ``rte_pktmbuf_free()`` on an incomplete scattered mbuf whose next + pointer in the last segment is not set. + + +* **mlx4: Fix support for multiple vlan filters.** + + This fixes the "Multiple RX VLAN filters can be configured, but only the + first one works" bug. + + +* **pcap: Fix storage of name and type in queues.** + + pcap_rx_queue/pcap_tx_queue should store it's own copy of name/type values, + not the pointer to temporary allocated space. + + +* **pci: Fix memory leaks and needless increment of map address.** + + +* **pci: Fix uio mapping differences between linux and bsd.** + + +* **port: Fix unaligned access to metadata.** + + Fix RTE_MBUF_METADATA macros to allow for unaligned accesses to meta-data + fields. + + +* **ring: Fix return of new port id on creation.** + + +* **timer: Fix race condition.** + + Eliminate problematic race condition in ``rte_timer_manage()`` that can lead + to corruption of per-lcore pending-lists (implemented as skip-lists). + + +* **vfio: Fix overflow of BAR region offset and size.** + + Fixes: 90a1633b2347 ("eal/Linux: allow to map BARs with MSI-X tables") + + +* **vhost: Fix enqueue/dequeue to handle chained vring descriptors.** + + +* **vhost: Fix race for connection fd.** + + +* **vhost: Fix virtio freeze due to missed interrupt.** + + +* **virtio: Fix crash if CQ is not negotiated.** + + Fix NULL dereference if virtio control queue is not negotiated. + + +* **virtio: Fix ring size negotiation.** + + Negotiate the virtio ring size. The host may allow for very large rings but + application may only want a smaller ring. Conversely, if the number of + descriptors requested exceeds the virtio host queue size, then just silently + use the smaller host size. + + This fixes issues with virtio in non-QEMU environments. For example Google + Compute Engine allows up to 16K elements in ring. + + +* **vmxnet3: Fix link state handling.** + + +Known Issues +------------ + +* When running the ``vmdq`` sample or ``vhost`` sample applications with the + Intel(R) XL710 (i40e) NIC, the configuration option + ``CONFIG_RTE_MAX_QUEUES_PER_PORT`` should be increased from 256 to 1024. + + +* VM power manager may not work on systems with more than 64 cores. + + +API Changes +----------- + +* The order that user supplied RX and TX callbacks are called in has been + changed to the order that they were added (fifo) in line with end-user + expectations. The previous calling order was the reverse of this (lifo) and + was counter intuitive for users. The actual API is unchanged. + + +ABI Changes +----------- + +* The ``rte_hash`` structure has been changed to internal use only. diff --git a/src/seastar/dpdk/doc/guides/rel_notes/release_2_2.rst b/src/seastar/dpdk/doc/guides/rel_notes/release_2_2.rst new file mode 100644 index 00000000..bb7d15a6 --- /dev/null +++ b/src/seastar/dpdk/doc/guides/rel_notes/release_2_2.rst @@ -0,0 +1,621 @@ +DPDK Release 2.2 +================ + +New Features +------------ + +* **Introduce ARMv7 and ARMv8 architectures.** + + * It is now possible to build DPDK for the ARMv7 and ARMv8 platforms. + * ARMv7 can be tested with virtual PMD drivers. + * ARMv8 can be tested with virtual and physical PMD drivers. + +* **Enabled freeing of ring.** + + A new function ``rte_ring_free()`` has been added to allow the user to free + a ring if it was created with ``rte_ring_create()``. + +* **Added keepalive support to EAL and example application.** + +* **Added experimental cryptodev API** + + The cryptographic processing of packets is provided as a preview + with two drivers for: + + * Intel QuickAssist devices + * Intel AES-NI multi-buffer library + + Due to its experimental state, the API may change without prior notice. + +* **Added ethdev APIs for additional IEEE1588 support.** + + Added functions to read, write and adjust system time in the NIC. + Added client slave sample application to demonstrate the IEEE1588 + functionality. + +* **Extended Statistics.** + + Defined an extended statistics naming scheme to store metadata in the name + string of each statistic. Refer to the Extended Statistics section of the + Programmers Guide for more details. + + Implemented the extended statistics API for the following PMDs: + + * ``igb`` + * ``igbvf`` + * ``i40e`` + * ``i40evf`` + * ``fm10k`` + * ``virtio`` + +* **Added API in ethdev to retrieve RX/TX queue information.** + + * Added the ability for the upper layer to query RX/TX queue information. + * Added new fields in ``rte_eth_dev_info`` to represent information about + RX/TX descriptors min/max/align numbers, per queue, for the device. + +* **Added RSS dynamic configuration to bonding.** + +* **Updated the e1000 base driver.** + + The e1000 base driver was updated with several features including the + following: + + * Added new i218 devices + * Allowed both ULP and EEE in Sx state + * Initialized 88E1543 (Marvell 1543) PHY + * Added flags to set EEE advertisement modes + * Supported inverted format ETrackId + * Added bit to disable packetbuffer read + * Added defaults for i210 RX/TX PBSIZE + * Check more errors for ESB2 init and reset + * Check more NVM read errors + * Return code after setting receive address register + * Removed all NAHUM6LP_HW tags + +* **Added e1000 RX interrupt support.** + +* **Added igb TSO support for both PF and VF.** + +* **Added RSS enhancements to Intel x550 NIC.** + + * Added support for 512 entry RSS redirection table. + * Added support for per VF RSS redirection table. + +* **Added Flow director enhancements on Intel x550 NIC.** + + * Added 2 new flow director modes on x550. + One is MAC VLAN mode, the other is tunnel mode. + +* **Updated the i40e base driver.** + + The i40e base driver was updated with several changes including the + following: + + * Added promiscuous on VLAN support + * Added a workaround to drop all flow control frames + * Added VF capabilities to virtual channel interface + * Added TX Scheduling related AQ commands + * Added additional PCTYPES supported for FortPark RSS + * Added parsing for CEE DCBX TLVs + * Added FortPark specific registers + * Added AQ functions to handle RSS Key and LUT programming + * Increased PF reset max loop limit + +* **Added i40e vector RX/TX.** + +* **Added i40e RX interrupt support.** + +* **Added i40e flow control support.** + +* **Added DCB support to i40e PF driver.** + +* **Added RSS/FD input set granularity on Intel X710/XL710.** + +* **Added different GRE key length for input set on Intel X710/XL710.** + +* **Added flow director support in i40e VF.** + +* **Added i40e support of early X722 series.** + + Added early X722 support, for evaluation only, as the hardware is alpha. + +* **Added fm10k vector RX/TX.** + +* **Added fm10k TSO support for both PF and VF.** + +* **Added fm10k VMDQ support.** + +* **New NIC Boulder Rapid support.** + + Added support for the Boulder Rapid variant of Intel's fm10k NIC family. + +* **Enhanced support for the Chelsio CXGBE driver.** + + * Added support for Jumbo Frames. + * Optimized forwarding performance for Chelsio T5 40GbE cards. + +* **Improved enic TX packet rate.** + + Reduced frequency of TX tail pointer updates to the NIC. + +* **Added support for link status interrupts in mlx4.** + +* **Added partial support (TX only) for secondary processes in mlx4.** + +* **Added support for Mellanox ConnectX-4 adapters (mlx5).** + + The mlx5 poll-mode driver implements support for Mellanox ConnectX-4 EN + and Mellanox ConnectX-4 Lx EN families of 10/25/40/50/100 Gb/s adapters. + + Like mlx4, this PMD is only available for Linux and is disabled by default + due to external dependencies (libibverbs and libmlx5). + +* **Added driver for Netronome nfp-6xxx card.** + + Support for using Netronome nfp-6xxx with PCI VFs. + +* **Added virtual szedata2 driver for COMBO cards.** + + Added virtual PMD for COMBO-100G and COMBO-80G cards. + PMD is disabled in default configuration. + +* **Enhanced support for virtio driver.** + + * Virtio ring layout optimization (fixed avail ring) + * Vector RX + * Simple TX + +* **Added vhost-user multiple queue support.** + +* **Added port hotplug support to vmxnet3.** + +* **Added port hotplug support to xenvirt.** + +* **Added ethtool shim and sample application.** + +* **Added experimental performance thread example application.** + + The new sample application demonstrates L3 forwarding with different threading + models: pthreads, cgroups, or lightweight threads. The example includes + a simple cooperative scheduler. + + Due to its experimental state this application may change without notice. + The application is supported only for Linux x86_64. + +* **Enhancements to the IP pipeline application.** + + The following features have been added to the ``ip_pipeline`` + application; + + * Added Multiple Producers/Multiple Consumers (MPSC) + and fragmentation/reassembly support to software rings. + + * Added a dynamic pipeline reconfiguration feature that + allows binding a pipeline to other threads at runtime + using CLI commands. + + * Added enable/disable of ``promisc`` mode from ``ip_pipeline`` + configuration file. + + * Added check on RX queues and TX queues of each link + whether they are used correctly in the ``ip_pipeline`` + configuration file. + + * Added flow id parameters to the flow-classification + table entries. + + * Added more functions to the routing pipeline: + ARP table enable/disable, Q-in-Q and MPLS encapsulation, + add color (traffic-class for QoS) to the MPLS tag. + + * Added flow-actions pipeline for traffic metering/marking + (for e.g. Two Rate Three Color Marker (trTCM)), policer etc. + + * Modified the pass-through pipeline's actions-handler to + implement a generic approach to extract fields from the + packet's header and copy them to packet metadata. + + +Resolved Issues +--------------- + +EAL +~~~ + +* **eal/linux: Fixed epoll timeout.** + + Fixed issue where the ``rte_epoll_wait()`` function didn't return when the + underlying call to ``epoll_wait()`` timed out. + + +Drivers +~~~~~~~ + +* **e1000/base: Synchronize PHY interface on non-ME systems.** + + On power up, the MAC - PHY interface needs to be set to PCIe, even if the + cable is disconnected. In ME systems, the ME handles this on exit from the + Sx (Sticky mode) state. In non-ME, the driver handles it. Added a check for + non-ME system to the driver code that handles it. + +* **e1000/base: Increased timeout of reset check.** + + Previously, in ``check_reset_block`` RSPCIPHY was polled for 100 ms before + determining that the ME veto was set. This was not enough and it was + increased to 300 ms. + +* **e1000/base: Disabled IPv6 extension header parsing on 82575.** + + Disabled IPv6 options as per hardware limitation. + +* **e1000/base: Prevent ULP flow if cable connected.** + + Enabling ULP on link down when the cable is connected caused an infinite + loop of link up/down indications in the NDIS driver. + The driver now enables ULP only when the cable is disconnected. + +* **e1000/base: Support different EEARBC for i210.** + + EEARBC has changed on i210. It means EEARBC has a different address on + i210 than on other NICs. So, add a new entity named EEARBC_I210 to the + register list and make sure the right one is being used on i210. + +* **e1000/base: Fix K1 configuration.** + + Added fix for the following updates to the K1 configurations: + TX idle period for entering K1 should be 128 ns. + Minimum TX idle period in K1 should be 256 ns. + +* **e1000/base: Fix link detect flow.** + + Fix link detect flow in case where auto-negotiate is not enabled, by calling + ``e1000_setup_copper_link_generic`` instead of ``e1000_phy_setup_autoneg``. + +* **e1000/base: Fix link check for i354 M88E1112 PHY.** + + The ``e1000_check_for_link_media_swap()`` function is supposed to check PHY + page 0 for copper and PHY page 1 for "other" (fiber) links. The driver + switched back from page 1 to page 0 too soon, before + ``e1000_check_for_link_82575()`` is executed and was never finding the link + on the fiber (other). + + If the link is copper, as the M88E1112 page address is set to 1, it should be + set back to 0 before checking this link. + +* **e1000/base: Fix beacon duration for i217.** + + Fix for I217 Packet Loss issue - The Management Engine sets the FEXTNVM4 + Beacon Duration incorrectly. This fix ensures that the correct value will + always be set. Correct value for this field is 8 usec. + +* **e1000/base: Fix TIPG for non 10 half duplex mode.** + + TIPG value is increased when setting speed to 10 half duplex to prevent + packet loss. However, it was never decreased again when speed + changed. This caused performance issues in the NDIS driver. + Fix this to restore TIPG to default value on non 10 half duplex. + +* **e1000/base: Fix reset of DH89XXCC SGMII.** + + For DH89XXCC_SGMII, a write flush leaves registers of this device trashed + (0xFFFFFFFF). Add check for this device. + + Also, after both Port SW Reset and Device Reset case, the platform should + wait at least 3ms before reading any registers. Remove this condition since + waiting is conditionally executed only for Device Reset. + +* **e1000/base: Fix redundant PHY power down for i210.** + + Bit 11 of PHYREG 0 is used to power down PHY. The use of PHYREG 16 is + no longer necessary. + +* **e1000/base: fix jumbo frame CRC failures.** + + Change the value of register 776.20[11:2] for jumbo mode from 0x1A to 0x1F. + This is to enlarge the gap between read and write pointers in the TX FIFO. + +* **e1000/base: Fix link flap on 82579.** + + Several customers have reported a link flap issue on 82579. The symptoms + are random and intermittent link losses when 82579 is connected to specific + switches. the Issue was root caused as an inter-operability problem between + the NIC and at least some Broadcom PHYs in the Energy Efficient Ethernet + wake mechanism. + + To fix the issue, we are disabling the Phase Locked Loop shutdown in 100M + Low Power Idle. This solution will cause an increase of power in 100M EEE + link. It may cost an additional 28mW in this specific mode. + +* **igb: Fixed IEEE1588 frame identification in I210.** + + Fixed issue where the flag ``PKT_RX_IEEE1588_PTP`` was not being set + in the Intel I210 NIC, as the EtherType in RX descriptor is in bits 8:10 of + Packet Type and not in the default bits 0:2. + +* **igb: Fixed VF start with PF stopped.** + + VF needs the PF interrupt support initialized even if not started. + +* **igb: Fixed VF MAC address when using with DPDK PF.** + + Assign a random MAC address in VF when not assigned by PF. + +* **igb: Removed CRC bytes from byte counter statistics.** + +* **ixgbe: Fixed issue with X550 DCB.** + + Fixed a DCB issue with x550 where for 8 TCs (Traffic Classes), if a packet + with user priority 6 or 7 was injected to the NIC, then the NIC would only + put 3 packets into the queue. There was also a similar issue for 4 TCs. + +* **ixgbe: Removed burst size restriction of vector RX.** + + Fixed issue where a burst size less than 32 didn't receive anything. + +* **ixgbe: Fixed VF start with PF stopped.** + + VF needs the PF interrupt support initialized even if not started. + +* **ixgbe: Fixed TX hang when RS distance exceeds HW limit.** + + Fixed an issue where the TX queue can hang when a lot of highly fragmented + packets have to be sent. As part of that fix, ``tx_rs_thresh`` for ixgbe PMD + is not allowed to be greater then to 32 to comply with HW restrictions. + +* **ixgbe: Fixed rx error statistic counter.** + + Fixed an issue that the rx error counter of ixgbe was not accurate. The + mac short packet discard count (mspdc) was added to the counter. Mac local + faults and mac remote faults are removed as they do not count packets but + errors, and jabber errors were removed as they are already accounted for + by the CRC error counter. Finally the XEC (l3 / l4 checksum error) counter + was removed due to errata, see commit 256ff05a9cae for details. + +* **ixgbe: Removed CRC bytes from byte counter statistics.** + +* **i40e: Fixed base driver allocation when not using first numa node.** + + Fixed i40e issue that occurred when a DPDK application didn't initialize + ports if memory wasn't available on socket 0. + +* **i40e: Fixed maximum of 64 queues per port.** + + Fixed an issue in i40e where it would not support more than 64 queues per + port, even though the hardware actually supports it. The real number of + queues may vary, as long as the total number of queues used in PF, VFs, VMDq + and FD does not exceeds the hardware maximum. + +* **i40e: Fixed statistics of packets.** + + Added discarding packets on VSI to the stats and rectify the old statistics. + +* **i40e: Fixed issue of not freeing memzone.** + + Fixed an issue of not freeing a memzone in the call to free the memory for + adminq DMA. + +* **i40e: Removed CRC bytes from byte counter statistics.** + +* **mlx: Fixed driver loading.** + + The mlx drivers were unable to load when built as a shared library, + due to a missing symbol in the mempool library. + +* **mlx4: Performance improvements.** + + Fixed bugs in TX and RX flows that improves mlx4 performance. + +* **mlx4: Fixed TX loss after initialization.** + +* **mlx4: Fixed scattered TX with too many segments.** + +* **mlx4: Fixed memory registration for indirect mbuf data.** + +* **vhost: Fixed Qemu shutdown.** + + Fixed issue with libvirt ``virsh destroy`` not killing the VM. + +* **virtio: Fixed crash after changing link state.** + + Fixed IO permission in the interrupt handler. + +* **virtio: Fixed crash when releasing queue.** + + Fixed issue when releasing null control queue. + + +Libraries +~~~~~~~~~ + +* **hash: Fixed memory allocation of Cuckoo Hash key table.** + + Fixed issue where an incorrect Cuckoo Hash key table size could be + calculated limiting the size to 4GB. + +* **hash: Fixed incorrect lookup if key is all zero.** + + Fixed issue in hash library that occurred if an all zero + key was not added to the table and the key was looked up, + resulting in an incorrect hit. + +* **hash: Fixed thread scaling by reducing contention.** + + Fixed issue in the hash library where, using multiple cores with + hardware transactional memory support, thread scaling did not work, + due to the global ring that is shared by all cores. + + +Examples +~~~~~~~~ + +* **l3fwd: Fixed crash with IPv6.** + +* **vhost_xen: Fixed compile error.** + + +Other +~~~~~ + +* This release drops compatibility with Linux kernel 2.6.33. The minimum + kernel requirement is now 2.6.34. + + +Known Issues +------------ + +* Some drivers do not fill in the packet type when receiving. + As the l3fwd example application requires this info, the i40e vector + driver must be disabled to benefit of the packet type with i40e. + +* Some (possibly all) VF drivers (e.g. i40evf) do not handle any PF reset + events/requests in the VF driver. This means that the VF driver may not work + after a PF reset in the host side. The workaround is to avoid triggering any + PF reset events/requests on the host side. + +* 100G link report support is missing. + +* **Mellanox PMDs (mlx4 & mlx5):** + + * PMDs do not support CONFIG_RTE_BUILD_COMBINE_LIBS and + CONFIG_RTE_BUILD_SHARED_LIB simultaneously. + + * There is performance degradation for small packets when the PMD is + compiled with ``SGE_WR_N = 4`` compared to the performance when ``SGE_WR_N + = 1``. If scattered packets are not used it is recommended to compile the + PMD with ``SGE_WR_N = 1``. + + * When a Multicast or Broadcast packet is sent to the SR-IOV mlx4 VF, + it is returned back to the port. + + * PMDs report "bad" L4 checksum when IP packet is received. + + * mlx5 PMD reports "bad" checksum although the packet has "good" checksum. + Will be fixed in upcoming MLNX_OFED release. + + +API Changes +----------- + +* The deprecated flow director API is removed. + It was replaced by ``rte_eth_dev_filter_ctrl()``. + +* The ``dcb_queue`` is renamed to ``dcb_tc`` in following dcb configuration + structures: ``rte_eth_dcb_rx_conf``, ``rte_eth_dcb_tx_conf``, + ``rte_eth_vmdq_dcb_conf``, ``rte_eth_vmdq_dcb_tx_conf``. + +* The ``rte_eth_rx_queue_count()`` function now returns "int" instead of + "uint32_t" to allow the use of negative values as error codes on return. + +* The function ``rte_eal_pci_close_one()`` is removed. + It was replaced by ``rte_eal_pci_detach()``. + +* The deprecated ACL API ``ipv4vlan`` is removed. + +* The deprecated hash function ``rte_jhash2()`` is removed. + It was replaced by ``rte_jhash_32b()``. + +* The deprecated KNI functions are removed: + ``rte_kni_create()``, ``rte_kni_get_port_id()`` and ``rte_kni_info_get()``. + +* The deprecated ring PMD functions are removed: + ``rte_eth_ring_pair_create()`` and ``rte_eth_ring_pair_attach()``. + +* The devargs union field ``virtual`` is renamed to ``virt`` for C++ + compatibility. + + +ABI Changes +----------- + +* The EAL and ethdev structures ``rte_intr_handle`` and ``rte_eth_conf`` were + changed to support RX interrupt. This was already included in 2.1 under the + ``CONFIG_RTE_NEXT_ABI`` #define. + +* The ethdev flow director entries for SCTP were changed. + This was already included in 2.1 under the ``CONFIG_RTE_NEXT_ABI`` #define. + +* The ethdev flow director structure ``rte_eth_fdir_flow_ext`` structure was + changed. New fields were added to support flow director filtering in VF. + +* The size of the ethdev structure ``rte_eth_hash_filter_info`` is changed + by adding a new element ``rte_eth_input_set_conf`` in a union. + +* New fields ``rx_desc_lim`` and ``tx_desc_lim`` are added into + ``rte_eth_dev_info`` structure. + +* For debug builds, the functions ``rte_eth_rx_burst()``, ``rte_eth_tx_burst()`` + ``rte_eth_rx_descriptor_done()`` and ``rte_eth_rx_queue_count()`` will + no longer be separate functions in the DPDK libraries. Instead, they will + only be present in the ``rte_ethdev.h`` header file. + +* The maximum number of queues per port ``CONFIG_RTE_MAX_QUEUES_PER_PORT`` is + increased to 1024. + +* The mbuf structure was changed to support the unified packet type. + This was already included in 2.1 under the ``CONFIG_RTE_NEXT_ABI`` #define. + +* The dummy malloc library is removed. The content was moved into EAL in 2.1. + +* The LPM structure is changed. The deprecated field ``mem_location`` is + removed. + +* librte_table LPM: A new parameter to hold the table name will be added to + the LPM table parameter structure. + +* librte_table hash: The key mask parameter is added to the hash table + parameter structure for 8-byte key and 16-byte key extendable bucket + and LRU tables. + +* librte_port: Macros to access the packet meta-data stored within the packet + buffer has been adjusted to cover the packet mbuf structure. + +* librte_cfgfile: Allow longer names and values by increasing the constants + ``CFG_NAME_LEN`` and ``CFG_VALUE_LEN`` to 64 and 256 respectively. + +* vhost: a new field enabled is added to the ``vhost_virtqueue`` structure. + +* vhost: a new field ``virt_qp_nb`` is added to ``virtio_net`` structure, and + the ``virtqueue`` field is moved to the end of virtio_net structure. + +* vhost: a new operation ``vring_state_changed`` is added to + ``virtio_net_device_ops`` structure. + +* vhost: a few spaces are reserved both at ``vhost_virtqueue`` and + ``virtio_net`` structure for future extension. + + +Shared Library Versions +----------------------- + +The libraries prepended with a plus sign were incremented in this version. + +.. code-block:: diff + + + libethdev.so.2 + + librte_acl.so.2 + + librte_cfgfile.so.2 + librte_cmdline.so.1 + librte_distributor.so.1 + + librte_eal.so.2 + + librte_hash.so.2 + librte_ip_frag.so.1 + librte_ivshmem.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.1 + librte_meter.so.1 + + librte_pipeline.so.2 + librte_pmd_bond.so.1 + + librte_pmd_ring.so.2 + + librte_port.so.2 + 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.2 diff --git a/src/seastar/dpdk/doc/guides/rel_notes/supported_os.rst b/src/seastar/dpdk/doc/guides/rel_notes/supported_os.rst new file mode 100644 index 00000000..92218c18 --- /dev/null +++ b/src/seastar/dpdk/doc/guides/rel_notes/supported_os.rst @@ -0,0 +1,49 @@ +.. BSD LICENSE + Copyright(c) 2010-2014 Intel Corporation. All rights reserved. + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + * Neither the name of Intel Corporation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Supported Operating Systems +=========================== + +The following Linux distributions were successfully used to compiler or run DPDK. + +* FreeBSD 10 + +* Fedora release 20 + +* Ubuntu 14.04 LTS + +* Wind River Linux 6 + +* Red Hat Enterprise Linux 6.5 + +* SUSE Enterprise Linux 11 SP3 + +These distributions may need additional packages that are not installed by default, or a specific kernel. +Refer to the :ref:`Linux guide <linux_gsg>` and :ref:`FreeBSD guide <freebsd_gsg>` for details. |