From: Christian Ehrhardt Date: Fri, 29 Jul 2016 06:45:28 +0000 (+0200) Subject: Imported Upstream version 16.07 X-Git-Tag: upstream/18.02~10 X-Git-Url: https://gerrit.fd.io/r/gitweb?p=deb_dpdk.git;a=commitdiff_plain;h=6cfa4f771efe39dbc944e799cbe465134c8931fa Imported Upstream version 16.07 Change-Id: I8bf3b1fc950b92eb78860f8bc8dd675e06e85e48 Signed-off-by: Christian Ehrhardt --- diff --git a/MAINTAINERS b/MAINTAINERS index d0991313..6536c6b1 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -373,7 +373,7 @@ F: drivers/net/vmxnet3/ F: doc/guides/nics/vmxnet3.rst Vhost PMD -M: Tetsuya Mukawa +M: Tetsuya Mukawa M: Yuanhan Liu T: git://dpdk.org/next/dpdk-next-virtio F: drivers/net/vhost/ @@ -392,7 +392,7 @@ F: app/test/test_pmd_ring.c F: app/test/test_pmd_ring_perf.c Null Networking PMD -M: Tetsuya Mukawa +M: Tetsuya Mukawa F: drivers/net/null/ diff --git a/doc/guides/nics/mlx5.rst b/doc/guides/nics/mlx5.rst index 063c4a54..5c10cd34 100644 --- a/doc/guides/nics/mlx5.rst +++ b/doc/guides/nics/mlx5.rst @@ -154,6 +154,11 @@ Run-time configuration allows to save PCI bandwidth and improve performance at the cost of a slightly higher CPU usage. Enabled by default. + Supported on: + + - x86_64 with ConnectX4 and ConnectX4 LX + - Power8 with ConnectX4 LX + - ``txq_inline`` parameter [int] Amount of data to be inlined during TX operations. Improves latency. @@ -234,7 +239,7 @@ DPDK and must be installed separately: Currently supported by DPDK: -- Mellanox OFED **3.3-1.0.0.0**. +- Mellanox OFED **3.3-1.0.0.0** and **3.3-2.0.0.0**. - Minimum firmware version: diff --git a/doc/guides/rel_notes/deprecation.rst b/doc/guides/rel_notes/deprecation.rst index f502f863..d2dc4a9a 100644 --- a/doc/guides/rel_notes/deprecation.rst +++ b/doc/guides/rel_notes/deprecation.rst @@ -11,6 +11,16 @@ Deprecation Notices * The log history is deprecated. It is voided in 16.07 and will be removed in release 16.11. +* The ethdev library file will be renamed from libethdev.* to librte_ethdev.* + in release 16.11 in order to have a more consistent namespace. + +* In 16.11 ABI changes are planned: the ``rte_eth_dev`` structure will be + extended with new function pointer ``tx_pkt_prep`` allowing verification + and processing of packet burst to meet HW specific requirements before + transmit. Also new fields will be added to the ``rte_eth_desc_lim`` structure: + ``nb_seg_max`` and ``nb_mtu_seg_max`` providing information about number of + segments limit to be transmitted by device for TSO/non-TSO packets. + * The ethdev hotplug API is going to be moved to EAL with a notification mechanism added to crypto and ethdev libraries so that hotplug is now available to both of them. This API will be stripped of the device arguments @@ -23,9 +33,11 @@ Deprecation Notices do not need to care about the kind of devices that are being used, making it easier to add new buses later. -* ABI changes are planned for adding four new flow types. This impacts - RTE_ETH_FLOW_MAX. The release 2.2 does not contain these ABI changes, - but release 2.3 will. [postponed] +* ABI changes are planned for 16.11 in the ``rte_mbuf`` structure: some fields + may be reordered to facilitate the writing of ``data_off``, ``refcnt``, and + ``nb_segs`` in one operation, because some platforms have an overhead if the + store address is not naturally aligned. Other mbuf fields, such as the + ``port`` field, may be moved or removed as part of this mbuf work. * The mbuf flags PKT_RX_VLAN_PKT and PKT_RX_QINQ_PKT are deprecated and are respectively replaced by PKT_RX_VLAN_STRIPPED and @@ -41,3 +53,19 @@ Deprecation Notices * The mempool functions for single/multi producer/consumer are deprecated and will be removed in 16.11. It is replaced by rte_mempool_generic_get/put functions. + +* The ``rte_ivshmem`` feature (including library and EAL code) will be removed + in 16.11 because it has some design issues which are not planned to be fixed. + +* The vhost-cuse will be removed in 16.11. Since v2.1, a large majority of + development effort has gone to vhost-user, such as multiple-queue, live + migration, reconnect etc. Therefore, vhost-user should be used instead. + +* Driver names are quite inconsistent among each others and they will be + renamed to something more consistent (net and crypto prefixes) in 16.11. + Some of these driver names are used publicly, to create virtual devices, + so a deprecation notice is necessary. + +* API will change for ``rte_port_source_params`` and ``rte_port_sink_params`` + structures. The member ``file_name`` data type will be changed from + ``char *`` to ``const char *``. This change targets release 16.11. diff --git a/doc/guides/rel_notes/known_issues.rst b/doc/guides/rel_notes/known_issues.rst index 5ec19876..3cd42376 100644 --- a/doc/guides/rel_notes/known_issues.rst +++ b/doc/guides/rel_notes/known_issues.rst @@ -620,3 +620,23 @@ The last EAL argument is replaced by the program name in argv[] **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). diff --git a/doc/guides/rel_notes/release_16_07.rst b/doc/guides/rel_notes/release_16_07.rst index d00a6ed5..a8a3fc11 100644 --- a/doc/guides/rel_notes/release_16_07.rst +++ b/doc/guides/rel_notes/release_16_07.rst @@ -34,32 +34,36 @@ New Features Refer to the previous release notes for examples. -* **Removed mempool cache if not needed.** +* **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 cache was always disabled + cache for non-EAL threads. Previously the caching was always disabled on these threads. -* **Changed the memory allocation in mempool library.** +* **Changed the memory allocation scheme in the mempool library.** - * Added ability to allocate a large mempool in virtually fragmented memory. + * 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 specific Xen Dom0 code. - * Dropped specific anonymous mempool code in testpmd. + * Dropped the specific Xen Dom0 code. + * Dropped the specific anonymous mempool code in testpmd. -* **Added new driver for Broadcom NetXtreme-C devices.** +* **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 new driver for ThunderX nicvf device.** +* **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.** @@ -94,6 +98,21 @@ New Features * 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. @@ -123,8 +142,8 @@ New Features DPDK vhost-user will also try to reconnect by default when: - * The first connect fails (when QEMU is not started yet). - * The connection is broken (when QEMU restarts). + * 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. @@ -135,7 +154,7 @@ New Features Now AESNI MB PMD supports 128/192/256-bit counter mode AES encryption and decryption. -* **Added support for AES counter mode with Intel QuickAssist devices.** +* **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. @@ -168,7 +187,7 @@ New Features * **Added keepalive enhancements.** - Added support for reporting of core states other than dead to + Added support for reporting of core states other than "dead" to monitoring applications, enabling the support of broader liveness reporting to external processes. @@ -400,6 +419,52 @@ Tested Platforms - 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 ----------- @@ -412,3 +477,74 @@ Tested NICs - 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/doc/guides/testpmd_app_ug/build_app.rst b/doc/guides/testpmd_app_ug/build_app.rst index 7f32a7ca..4c7cf2e4 100644 --- a/doc/guides/testpmd_app_ug/build_app.rst +++ b/doc/guides/testpmd_app_ug/build_app.rst @@ -58,4 +58,4 @@ The basic compilation steps are: .. code-block:: console - $RTE_SDK/$RTE_TARGET/build/app/testpmd + $RTE_SDK/$RTE_TARGET/app/testpmd diff --git a/drivers/net/i40e/i40e_rxtx.c b/drivers/net/i40e/i40e_rxtx.c index d3cfb98f..554d1679 100644 --- a/drivers/net/i40e/i40e_rxtx.c +++ b/drivers/net/i40e/i40e_rxtx.c @@ -1436,10 +1436,10 @@ i40e_recv_scattered_pkts(void *rx_queue, i40e_rxd_pkt_type_mapping((uint8_t)((qword1 & I40E_RXD_QW1_PTYPE_MASK) >> I40E_RXD_QW1_PTYPE_SHIFT)); if (pkt_flags & PKT_RX_RSS_HASH) - rxm->hash.rss = + first_seg->hash.rss = rte_le_to_cpu_32(rxd.wb.qword0.hi_dword.rss); if (pkt_flags & PKT_RX_FDIR) - pkt_flags |= i40e_rxd_build_fdir(&rxd, rxm); + pkt_flags |= i40e_rxd_build_fdir(&rxd, first_seg); #ifdef RTE_LIBRTE_IEEE1588 pkt_flags |= i40e_get_iee15888_flags(first_seg, qword1); diff --git a/examples/ip_pipeline/config/flow.cfg b/examples/ip_pipeline/config/flow.cfg index 6895d393..cec990ab 100644 --- a/examples/ip_pipeline/config/flow.cfg +++ b/examples/ip_pipeline/config/flow.cfg @@ -64,8 +64,8 @@ pktq_in = RXQ0.0 RXQ1.0 RXQ2.0 RXQ3.0 pktq_out = TXQ0.0 TXQ1.0 TXQ2.0 TXQ3.0 SINK0 n_flows = 65536 ;key_size = 8 ; QinQ key size -;key_offset = 270 ; QinQ key offset -;key_mask = 0000FFF00000FFF0 ; QinQ key mask +;key_offset = 268 ; QinQ key offset +;key_mask = 00000FFF00000FFF ; QinQ key mask key_size = 16 ; IPv4 5-tuple key size key_offset = 278 ; IPv4 5-tuple key offset key_mask = 00FF0000FFFFFFFFFFFFFFFFFFFFFFFF ; IPv4 5-tuple key mask diff --git a/lib/librte_eal/common/eal_common_options.c b/lib/librte_eal/common/eal_common_options.c index 481c732b..1a1bab36 100644 --- a/lib/librte_eal/common/eal_common_options.c +++ b/lib/librte_eal/common/eal_common_options.c @@ -530,6 +530,13 @@ eal_parse_set(const char *input, uint16_t set[], unsigned num) str = end + 1; } while (*end != '\0' && *end != ')'); + /* + * to avoid failure that tail blank makes end character check fail + * in eal_parse_lcores( ) + */ + while (isblank(*str)) + str++; + return str - input; } @@ -578,13 +585,12 @@ eal_parse_lcores(const char *lcores) struct rte_config *cfg = rte_eal_get_configuration(); static uint16_t set[RTE_MAX_LCORE]; unsigned idx = 0; - int i; unsigned count = 0; const char *lcore_start = NULL; const char *end = NULL; int offset; rte_cpuset_t cpuset; - int lflags = 0; + int lflags; int ret = -1; if (lcores == NULL) @@ -593,9 +599,6 @@ eal_parse_lcores(const char *lcores) /* Remove all blank characters ahead and after */ while (isblank(*lcores)) lcores++; - i = strlen(lcores); - while ((i > 0) && isblank(lcores[i - 1])) - i--; CPU_ZERO(&cpuset); @@ -613,6 +616,8 @@ eal_parse_lcores(const char *lcores) if (*lcores == '\0') goto err; + lflags = 0; + /* record lcore_set start point */ lcore_start = lcores; diff --git a/lib/librte_eal/common/include/rte_version.h b/lib/librte_eal/common/include/rte_version.h index 1e147617..615deb7f 100644 --- a/lib/librte_eal/common/include/rte_version.h +++ b/lib/librte_eal/common/include/rte_version.h @@ -70,14 +70,14 @@ extern "C" { /** * Extra string to be appended to version number */ -#define RTE_VER_SUFFIX "-rc" +#define RTE_VER_SUFFIX "" /** * Patch release number * 0-15 = release candidates * 16 = release */ -#define RTE_VER_RELEASE 5 +#define RTE_VER_RELEASE 16 /** * Macro to compute a version number usable for comparisons diff --git a/lib/librte_ether/rte_ethdev.h b/lib/librte_ether/rte_ethdev.h index 4dac364a..b0fe0334 100644 --- a/lib/librte_ether/rte_ethdev.h +++ b/lib/librte_ether/rte_ethdev.h @@ -2042,9 +2042,8 @@ int rte_eth_dev_socket_id(uint8_t port_id); int rte_eth_dev_is_valid_port(uint8_t port_id); /** - * Allocate mbuf from mempool, setup the DMA physical address - * and then start RX for specified queue of a port. It is used - * when rx_deferred_start flag of the specified queue is true. + * Start specified RX queue of a port. It is used when rx_deferred_start + * flag of the specified queue is true. * * @param port_id * The port identifier of the Ethernet device @@ -2053,7 +2052,7 @@ int rte_eth_dev_is_valid_port(uint8_t port_id); * The value must be in the range [0, nb_rx_queue - 1] previously supplied * to rte_eth_dev_configure(). * @return - * - 0: Success, the transmit queue is correctly set up. + * - 0: Success, the receive queue is started. * - -EINVAL: The port_id or the queue_id out of range. * - -ENOTSUP: The function not supported in PMD driver. */ @@ -2069,7 +2068,7 @@ int rte_eth_dev_rx_queue_start(uint8_t port_id, uint16_t rx_queue_id); * The value must be in the range [0, nb_rx_queue - 1] previously supplied * to rte_eth_dev_configure(). * @return - * - 0: Success, the transmit queue is correctly set up. + * - 0: Success, the receive queue is stopped. * - -EINVAL: The port_id or the queue_id out of range. * - -ENOTSUP: The function not supported in PMD driver. */ @@ -2086,7 +2085,7 @@ int rte_eth_dev_rx_queue_stop(uint8_t port_id, uint16_t rx_queue_id); * The value must be in the range [0, nb_tx_queue - 1] previously supplied * to rte_eth_dev_configure(). * @return - * - 0: Success, the transmit queue is correctly set up. + * - 0: Success, the transmit queue is started. * - -EINVAL: The port_id or the queue_id out of range. * - -ENOTSUP: The function not supported in PMD driver. */ @@ -2102,7 +2101,7 @@ int rte_eth_dev_tx_queue_start(uint8_t port_id, uint16_t tx_queue_id); * The value must be in the range [0, nb_tx_queue - 1] previously supplied * to rte_eth_dev_configure(). * @return - * - 0: Success, the transmit queue is correctly set up. + * - 0: Success, the transmit queue is stopped. * - -EINVAL: The port_id or the queue_id out of range. * - -ENOTSUP: The function not supported in PMD driver. */ diff --git a/pkg/dpdk.spec b/pkg/dpdk.spec index 953f46c9..b594e583 100644 --- a/pkg/dpdk.spec +++ b/pkg/dpdk.spec @@ -30,7 +30,7 @@ # OF THE POSSIBILITY OF SUCH DAMAGE. Name: dpdk -Version: 16.04 +Version: 16.07 Release: 1 Packager: packaging@6wind.com URL: http://dpdk.org @@ -82,7 +82,6 @@ sed -ri 's,(RTE_NEXT_ABI=).*,\1n,' %{target}/.config sed -ri 's,(LIBRTE_VHOST=).*,\1y,' %{target}/.config sed -ri 's,(LIBRTE_PMD_PCAP=).*,\1y,' %{target}/.config sed -ri 's,(LIBRTE_PMD_XENVIRT=).*,\1y,' %{target}/.config -sed -ri 's,(LIBRTE_XEN_DOM0=).*,\1y,' %{target}/.config make O=%{target} %{?_smp_mflags} make O=%{target} doc