diff options
Diffstat (limited to 'doc/guides/rel_notes/release_2_1.rst')
-rw-r--r-- | doc/guides/rel_notes/release_2_1.rst | 1042 |
1 files changed, 1042 insertions, 0 deletions
diff --git a/doc/guides/rel_notes/release_2_1.rst b/doc/guides/rel_notes/release_2_1.rst new file mode 100644 index 00000000..103a5ee8 --- /dev/null +++ b/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. |