2 Copyright(c) 2010-2015 Intel Corporation. All rights reserved.
5 Redistribution and use in source and binary forms, with or without
6 modification, are permitted provided that the following conditions
9 * Redistributions of source code must retain the above copyright
10 notice, this list of conditions and the following disclaimer.
11 * Redistributions in binary form must reproduce the above copyright
12 notice, this list of conditions and the following disclaimer in
13 the documentation and/or other materials provided with the
15 * Neither the name of Intel Corporation nor the names of its
16 contributors may be used to endorse or promote products derived
17 from this software without specific prior written permission.
19 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20 "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22 A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23 OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24 SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25 LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26 DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
39 * **Enabled cloning of indirect mbufs.**
41 This feature removes a limitation of ``rte_pktmbuf_attach()`` which
42 generated the warning: "mbuf we're attaching to must be direct".
44 Now, when attaching to an indirect mbuf it is possible to:
46 * Copy all relevant fields (address, length, offload, ...) as before.
48 * Get the pointer to the mbuf that embeds the data buffer (direct mbuf),
49 and increase the reference counter.
51 When detaching the mbuf, we can now retrieve this direct mbuf as the
52 pointer is determined from the buffer address.
55 * **Extended packet type support.**
57 In previous releases mbuf packet types were indicated by 6 bits in the
58 ``ol_flags``. This was not enough for some supported NICs. For example i40e
59 hardware can recognize more than 150 packet types. Not being able to
60 identify these additional packet types limits access to hardware offload
63 So an extended "unified" packet type was added to support all possible
64 PMDs. The 16 bit packet_type in the mbuf structure was changed to 32 bits
65 and used for this purpose.
67 To avoid breaking ABI compatibility, the code changes for this feature are
68 enclosed in a ``RTE_NEXT_ABI`` ifdef. This is enabled by default but can be
69 turned off for ABI compatibility with DPDK R2.0.
72 * **Reworked memzone to be allocated by malloc and also support freeing.**
74 In the memory hierarchy, memsegs are groups of physically contiguous
75 hugepages, memzones are slices of memsegs, and malloc slices memzones
76 into smaller memory chunks.
78 This feature modifies ``malloc()`` so it partitions memsegs instead of
79 memzones. Now memzones allocate their memory from the malloc heap.
81 Backward compatibility with API and ABI are maintained.
83 This allow memzones, and any other structure based on memzones, for example
84 mempools, to be freed. Currently only the API from freeing memzones is
88 * **Interrupt mode PMD.**
90 This feature introduces a low-latency one-shot RX interrupt into DPDK. It
91 also adds a polling and interrupt mode switch control example.
93 DPDK userspace interrupt notification and handling mechanism is based on
94 UIO/VFIO with the following limitations:
96 * Per queue RX interrupt events are only allowed in VFIO which supports
97 multiple MSI-X vectors.
98 * In UIO, the RX interrupt shares the same vector with other
99 interrupts. When the RX interrupt and LSC interrupt are both enabled, only
100 the former is available.
101 * RX interrupt is only implemented for the linuxapp target.
102 * The feature is only currently enabled for tow PMDs: ixgbe and igb.
105 * **Packet Framework enhancements.**
107 Several enhancements were made to the Packet Framework:
109 * A new configuration file syntax has been introduced for IP pipeline
110 applications. Parsing of the configuration file is changed.
111 * Implementation of the IP pipeline application is modified to make it more
112 structured and user friendly.
113 * Implementation of the command line interface (CLI) for each pipeline type
114 has been moved to the separate compilation unit. Syntax of pipeline CLI
115 commands has been changed.
116 * Initialization of IP pipeline is modified to match the new parameters
118 * New implementation of pass-through pipeline, firewall pipeline, routing
119 pipeline, and flow classification has been added.
120 * Master pipeline with CLI interface has been added.
121 * Added extended documentation of the IP Pipeline.
124 * **Added API for IEEE1588 timestamping.**
126 This feature adds an ethdev API to enable, disable and read IEEE1588/802.1AS
127 PTP timestamps from devices that support it. The following functions were
130 * ``rte_eth_timesync_enable()``
131 * ``rte_eth_timesync_disable()``
132 * ``rte_eth_timesync_read_rx_timestamp()``
133 * ``rte_eth_timesync_read_tx_timestamp()``
135 The "ieee1588" forwarding mode in testpmd was also refactored to demonstrate
139 * **Added multicast address filtering.**
141 Added multicast address filtering via a new ethdev function
142 ``set_mc_addr_list()``.
144 This overcomes a limitation in previous releases where the receipt of
145 multicast packets on a given port could only be enabled by invoking the
146 ``rte_eth_allmulticast_enable()`` function. This method did not work for VFs
147 in SR-IOV architectures when the host PF driver does not allow these
148 operation on VFs. In such cases, joined multicast addresses had to be added
149 individually to the set of multicast addresses that are filtered by the [VF]
153 * **Added Flow Director extensions.**
155 Several Flow Director extensions were added such as:
157 * Support for RSS and Flow Director hashes in vector RX.
158 * Added Flow Director for L2 payload.
161 * **Added RSS hash key size query per port.**
163 This feature supports querying the RSS hash key size of each port. A new
164 field ``hash_key_size`` has been added in the ``rte_eth_dev_info`` struct
165 for storing hash key size in bytes.
168 * **Added userspace ethtool support.**
170 Added userspace ethtool support to provide a familiar interface for
171 applications that manage devices via kernel-space ``ethtool_op`` and
174 The initial implementation focuses on operations that can be implemented
175 through existing ``netdev`` APIs. More operations will be supported in later
179 * **Updated the ixgbe base driver.**
181 The ixgbe base driver was updated with several changes including the
184 * Added a new 82599 device id.
185 * Added new X550 PHY ids.
186 * Added SFP+ dual-speed support.
187 * Added wait helper for X550 IOSF accesses.
188 * Added X550em features.
189 * Added X557 PHY LEDs support.
190 * Commands for flow director.
191 * Issue firmware command when resetting X550em.
193 See the git log for full details of the ixgbe/base changes.
196 * **Added additional hotplug support.**
198 Port hotplug support was added to the following PMDs:
208 Port hotplug support was added to BSD.
211 * **Added ixgbe LRO support.**
213 Added LRO support for x540 and 82599 devices.
216 * **Added extended statistics for ixgbe.**
218 Implemented ``xstats_get()`` and ``xstats_reset()`` in dev_ops for
219 ixgbe to expose detailed error statistics to DPDK applications.
221 These will be implemented for other PMDs in later releases.
224 * **Added proc_info application.**
226 Created a new ``proc_info`` application, by refactoring the existing
227 ``dump_cfg`` application, to demonstrate the usage of retrieving statistics,
228 and the new extended statistics (see above), for DPDK interfaces.
231 * **Updated the i40e base driver.**
233 The i40e base driver was updated with several changes including the
236 * Support for building both PF and VF driver together.
237 * Support for CEE DCBX on recent firmware versions.
238 * Replacement of ``i40e_debug_read_register()``.
239 * Rework of ``i40e_hmc_get_object_va``.
240 * Update of shadow RAM read/write functions.
241 * Enhancement of polling NVM semaphore.
242 * Enhancements on adminq init and sending asq command.
243 * Update of get/set LED functions.
244 * Addition of AOC phy types to case statement in get_media_type.
245 * Support for iSCSI capability.
246 * Setting of FLAG_RD when sending driver version to FW.
248 See the git log for full details of the i40e/base changes.
251 * **Added support for port mirroring in i40e.**
253 Enabled mirror functionality in the i40e driver.
256 * **Added support for i40e double VLAN, QinQ, stripping and insertion.**
258 Added support to the i40e driver for offloading double VLAN (QinQ) tags to
259 the mbuf header, and inserting double vlan tags by hardware to the packets
260 to be transmitted. Added a new field ``vlan_tci_outer`` in the ``rte_mbuf``
261 struct, and new flags in ``ol_flags`` to support this feature.
265 * **Added fm10k promiscuous mode support.**
267 Added support for promiscuous/allmulticast enable and disable in the fm10k PF
268 function. VF is not supported yet.
271 * **Added fm10k jumbo frame support.**
273 Added support for jumbo frame less than 15K in both VF and PF functions in the
277 * **Added fm10k mac vlan filtering support.**
279 Added support for the fm10k MAC filter, only available in PF. Updated the
280 VLAN filter to add/delete one static entry in the MAC table for each
281 combination of VLAN and MAC address.
284 * **Added support for the Broadcom bnx2x driver.**
286 Added support for the Broadcom NetXtreme II bnx2x driver.
287 It is supported only on Linux 64-bit and disabled by default.
290 * **Added support for the Chelsio CXGBE driver.**
292 Added support for the CXGBE Poll Mode Driver for the Chelsio Terminator 5
293 series of 10G/40G adapters.
296 * **Enhanced support for Mellanox ConnectX-3 driver (mlx4).**
298 * Support Mellanox OFED 3.0.
299 * Improved performance for both RX and TX operations.
300 * Better link status information.
301 * Outer L3/L4 checksum offload support.
302 * Inner L3/L4 checksum offload support for VXLAN.
305 * **Enabled VMXNET3 vlan filtering.**
307 Added support for the VLAN filter functionality of the VMXNET3 interface.
310 * **Added support for vhost live migration.**
312 Added support to allow live migration of vhost. Without this feature, qemu
313 will report the following error: "migrate: Migration disabled: vhost lacks
314 VHOST_F_LOG_ALL feature".
317 * **Added support for pcap jumbo frames.**
319 Extended the PCAP PMD to support jumbo frames for RX and TX.
322 * **Added support for the TILE-Gx architecture.**
324 Added support for the EZchip TILE-Gx family of SoCs.
327 * **Added hardware memory transactions/lock elision for x86.**
329 Added the use of hardware memory transactions (HTM) on fast-path for rwlock
330 and spinlock (a.k.a. lock elision). The methods are implemented for x86
331 using Restricted Transactional Memory instructions (Intel(r) Transactional
332 Synchronization Extensions). The implementation fall-backs to the normal
333 rwlock if HTM is not available or memory transactions fail. This is not a
334 replacement for all rwlock usages since not all critical sections protected
335 by locks are friendly to HTM. For example, an attempt to perform a HW I/O
336 operation inside a hardware memory transaction always aborts the transaction
337 since the CPU is not able to roll-back should the transaction
338 fail. Therefore, hardware transactional locks are not advised to be used
339 around ``rte_eth_rx_burst()`` and ``rte_eth_tx_burst()`` calls.
342 * **Updated Jenkins Hash function**
344 Updated the version of the Jenkins Hash (jhash) function used in DPDK from
345 the 1996 version to the 2006 version. This gives up to 35% better
346 performance, compared to the original one.
348 Note, the hashes generated by the updated version differ from the hashes
349 generated by the previous version.
352 * **Added software implementation of the Toeplitz RSS hash**
354 Added a software implementation of the Toeplitz hash function used by RSS. It
355 can be used either for packet distribution on a single queue NIC or for
356 simulating RSS computation on a specific NIC (for example after GRE header
360 * **Replaced the existing hash library with a Cuckoo hash implementation.**
362 Replaced the existing hash library with another approach, using the Cuckoo
363 Hash method to resolve collisions (open addressing). This method pushes
364 items from a full bucket when a new entry must be added to it, storing the
365 evicted entry in an alternative location, using a secondary hash function.
367 This gives the user the ability to store more entries when a bucket is full,
368 in comparison with the previous implementation.
370 The API has not been changed, although new fields have been added in the
371 ``rte_hash`` structure, which has been changed to internal use only.
373 The main change when creating a new table is that the number of entries per
374 bucket is now fixed, so its parameter is ignored now (it is still there to
375 maintain the same parameters structure).
377 Also, the maximum burst size in lookup_burst function hash been increased to
378 64, to improve performance.
381 * **Optimized KNI RX burst size computation.**
383 Optimized KNI RX burst size computation by avoiding checking how many
384 entries are in ``kni->rx_q`` prior to actually pulling them from the fifo.
387 * **Added KNI multicast.**
389 Enabled adding multicast addresses to KNI interfaces by adding an empty
390 callback for ``set_rx_mode`` (typically used for setting up hardware) so
391 that the ioctl succeeds. This is the same thing as the Linux tap interface
395 * **Added cmdline polling mode.**
397 Added the ability to process console input in the same thread as packet
398 processing by using the ``poll()`` function.
400 * **Added VXLAN Tunnel End point sample application.**
402 Added a Tunnel End point (TEP) sample application that simulates a VXLAN
403 Tunnel Endpoint (VTEP) termination in DPDK. It is used to demonstrate the
404 offload and filtering capabilities of Intel XL710 10/40 GbE NICsfor VXLAN
408 * **Enabled combining of the ``-m`` and ``--no-huge`` EAL options.**
410 Added option to allow combining of the ``-m`` and ``--no-huge`` EAL command
413 This allows user application to run as non-root but with higher memory
414 allocations, and removes a constraint on ``--no-huge`` mode being limited to
422 * **acl: Fix ambiguity between test rules.**
424 Some test rules had equal priority for the same category. That could cause
425 an ambiguity in building the trie and test results.
428 * **acl: Fix invalid rule wildness calculation for bitmask field type.**
431 * **acl: Fix matching rule.**
434 * **acl: Fix unneeded trie splitting for subset of rules.**
436 When rebuilding a trie for limited rule-set, don't try to split the rule-set
440 * **app/testpmd: Fix crash when port id out of bound.**
442 Fixed issues in testpmd where using a port greater than 32 would cause a seg
445 Fixes: edab33b1c01d ("app/testpmd: support port hotplug")
448 * **app/testpmd: Fix reply to a multicast ICMP request.**
450 Set the IP source and destination addresses in the IP header of the ICMP
454 * **app/testpmd: fix MAC address in ARP reply.**
456 Fixed issue where in the ``icmpecho`` forwarding mode, ARP replies from
457 testpmd contain invalid zero-filled MAC addresses.
459 Fixes: 31db4d38de72 ("net: change arp header struct declaration")
462 * **app/testpmd: fix default flow control values.**
464 Fixes: 422a20a4e62d ("app/testpmd: fix uninitialized flow control variables")
467 * **bonding: Fix crash when stopping inactive slave.**
470 * **bonding: Fix device initialization error handling.**
473 * **bonding: Fix initial link status of slave.**
475 On Fortville NIC, link status change interrupt callback was not executed
476 when slave in bonding was (re-)started.
479 * **bonding: Fix socket id for LACP slave.**
481 Fixes: 46fb43683679 ("bond: add mode 4")
484 * **bonding: Fix device initialization error handling.**
487 * **cmdline: Fix small memory leak.**
489 A function in ``cmdline.c`` had a return that did not free the buf properly.
492 * **config: Enable same drivers options for Linux and BSD.**
494 Enabled vector ixgbe and i40e bulk alloc for BSD as it is already done for
497 Fixes: 304caba12643 ("config: fix bsd options")
498 Fixes: 0ff3324da2eb ("ixgbe: rework vector pmd following mbuf changes")
501 * **devargs: Fix crash on failure.**
503 This problem occurred when passing an invalid PCI id to the blacklist API in
507 * **e1000/i40e: Fix descriptor done flag with odd address.**
510 * **e1000/igb: fix ieee1588 timestamping initialization.**
512 Fixed issue with e1000 ieee1588 timestamp initialization. On initialization
513 the IEEE1588 functions read the system time to set their timestamp. However,
514 on some 1G NICs, for example, i350, system time is disabled by default and
515 the IEEE1588 timestamp was always 0.
518 * **eal/bsd: Fix inappropriate header guards.**
521 * **eal/bsd: Fix virtio on FreeBSD.**
523 Closing the ``/dev/io`` fd caused a SIGBUS in inb/outb instructions as the
524 process lost the IOPL privileges once the fd is closed.
526 Fixes: 8a312224bcde ("eal/bsd: fix fd leak")
529 * **eal/linux: Fix comments on vfio MSI.**
532 * **eal/linux: Fix irq handling with igb_uio.**
534 Fixed an issue where the the introduction of ``uio_pci_generic`` broke
535 interrupt handling with igb_uio.
537 Fixes: c112df6875a5 ("eal/linux: toggle interrupt for uio_pci_generic")
540 * **eal/linux: Fix numa node detection.**
543 * **eal/linux: Fix socket value for undetermined numa node.**
545 Sets zero as the default value of pci device numa_node if the socket could
546 not be determined. This provides the same default value as FreeBSD which has
547 no NUMA support, and makes the return value of ``rte_eth_dev_socket_id()``
548 be consistent with the API description.
551 * **eal/ppc: Fix cpu cycle count for little endian.**
553 On IBM POWER8 PPC64 little endian architecture, the definition of tsc union
554 will be different. This fix enables the right output from ``rte_rdtsc()``.
557 * **ethdev: Fix check of threshold for TX freeing.**
559 Fixed issue where the parameter to ``tx_free_thresh`` was not consistent
563 * **ethdev: Fix crash if malloc of user callback fails.**
565 If ``rte_zmalloc()`` failed in ``rte_eth_dev_callback_register`` then the
566 NULL pointer would be dereferenced.
569 * **ethdev: Fix illegal port access.**
571 To obtain a detachable flag, ``pci_drv`` is accessed in
572 ``rte_eth_dev_is_detachable()``. However ``pci_drv`` is only valid if port
573 is enabled. Fixed by checking ``rte_eth_dev_is_valid_port()`` first.
576 * **ethdev: Make tables const.**
579 * **ethdev: Rename and extend the mirror type.**
582 * **examples/distributor: Fix debug macro.**
584 The macro to turn on additional debug output when the app was compiled with
585 ``-DDEBUG`` was broken.
587 Fixes: 07db4a975094 ("examples/distributor: new sample app")
590 * **examples/kni: Fix crash on exit.**
593 * **examples/vhost: Fix build with debug enabled.**
595 Fixes: 72ec8d77ac68 ("examples/vhost: rework duplicated code")
598 * **fm10k: Fix RETA table initialization.**
600 The fm10k driver has 128 RETA entries in 32 registers, but it only
601 initialized the first 32 when doing multiple RX queue configurations. This
602 fix initializes all 128 entries.
605 * **fm10k: Fix RX buffer size.**
608 * **fm10k: Fix TX multi-segment frame.**
611 * **fm10k: Fix TX queue cleaning after start error.**
614 * **fm10k: Fix Tx queue cleaning after start error.**
617 * **fm10k: Fix default mac/vlan in switch.**
620 * **fm10k: Fix interrupt fault handling.**
623 * **fm10k: Fix jumbo frame issue.**
626 * **fm10k: Fix mac/vlan filtering.**
629 * **fm10k: Fix maximum VF number.**
632 * **fm10k: Fix maximum queue number for VF.**
634 Both PF and VF shared code in function ``fm10k_stats_get()``. The function
635 worked with PF, but had problems with VF since it has less queues than PF.
637 Fixes: a6061d9e7075 ("fm10k: register PF driver")
640 * **fm10k: Fix queue disabling.**
643 * **fm10k: Fix switch synchronization.**
646 * **i40e/base: Fix error handling of NVM state update.**
649 * **i40e/base: Fix hardware port number for pass-through.**
652 * **i40e/base: Rework virtual address retrieval for lan queue.**
655 * **i40e/base: Update LED blinking.**
658 * **i40e/base: Workaround for PHY type with firmware < 4.4.**
661 * **i40e: Disable setting of PHY configuration.**
664 * **i40e: Fix SCTP flow director.**
667 * **i40e: Fix check of descriptor done flag.**
669 Fixes: 4861cde46116 ("i40e: new poll mode driver")
670 Fixes: 05999aab4ca6 ("i40e: add or delete flow director")
673 * **i40e: Fix condition to get VMDQ info.**
676 * **i40e: Fix registers access from big endian CPU.**
679 * **i40evf: Clear command when error occurs.**
682 * **i40evf: Fix RSS with less RX queues than TX queues.**
685 * **i40evf: Fix crash when setup TX queues.**
688 * **i40evf: Fix jumbo frame support.**
691 * **i40evf: Fix offload capability flags.**
693 Added checksum offload capability flags which have already been supported
697 * **ivshmem: Fix crash in corner case.**
699 Fixed issues where depending on the configured segments it was possible to
700 hit a segmentation fault as a result of decrementing an unsigned index with
704 Fixes: 40b966a211ab ("ivshmem: library changes for mmaping using ivshmem")
707 * **ixgbe/base: Fix SFP probing.**
710 * **ixgbe/base: Fix TX pending clearing.**
713 * **ixgbe/base: Fix X550 CS4227 address.**
716 * **ixgbe/base: Fix X550 PCIe master disabling.**
719 * **ixgbe/base: Fix X550 check.**
722 * **ixgbe/base: Fix X550 init early return.**
725 * **ixgbe/base: Fix X550 link speed.**
728 * **ixgbe/base: Fix X550em CS4227 speed mode.**
731 * **ixgbe/base: Fix X550em SFP+ link stability.**
734 * **ixgbe/base: Fix X550em UniPHY link configuration.**
737 * **ixgbe/base: Fix X550em flow control for KR backplane.**
740 * **ixgbe/base: Fix X550em flow control to be KR only.**
743 * **ixgbe/base: Fix X550em link setup without SFP.**
746 * **ixgbe/base: Fix X550em mux after MAC reset.**
748 Fixes: d2e72774e58c ("ixgbe/base: support X550")
751 * **ixgbe/base: Fix bus type overwrite.**
754 * **ixgbe/base: Fix init handling of X550em link down.**
757 * **ixgbe/base: Fix lan id before first i2c access.**
760 * **ixgbe/base: Fix mac type checks.**
763 * **ixgbe/base: Fix tunneled UDP and TCP frames in flow director.**
766 * **ixgbe: Check mbuf refcnt when clearing a ring.**
768 The function to clear the TX ring when a port was being closed, e.g. on exit
769 in testpmd, was not checking the mbuf refcnt before freeing it. Since the
770 function in the vector driver to clear the ring after TX does not setting
771 the pointer to NULL post-free, this caused crashes if mbuf debugging was
775 * **ixgbe: Fix RX with buffer address not word aligned.**
777 Niantic HW expects the Header Buffer Address in the RXD must be word
781 * **ixgbe: Fix RX with buffer address not word aligned.**
784 * **ixgbe: Fix Rx queue reset.**
786 Fix to reset vector related RX queue fields to their initial values.
788 Fixes: c95584dc2b18 ("ixgbe: new vectorized functions for Rx/Tx")
791 * **ixgbe: Fix TSO in IPv6.**
793 When TSO was used with IPv6, the generated frames were incorrect. The L4
794 frame was OK, but the length field of IPv6 header was not populated
798 * **ixgbe: Fix X550 flow director check.**
801 * **ixgbe: Fix check for split packets.**
803 The check for split packets to be reassembled in the vector ixgbe PMD was
804 incorrectly only checking the first 16 elements of the array instead of
807 Fixes: cf4b4708a88a ("ixgbe: improve slow-path perf with vector scattered Rx")
810 * **ixgbe: Fix data access on big endian cpu.**
813 * **ixgbe: Fix flow director flexbytes offset.**
816 Fixes: d54a9888267c ("ixgbe: support flexpayload configuration of flow director")
819 * **ixgbe: Fix number of segments with vector scattered Rx.**
821 Fixes: cf4b4708a88a (ixgbe: improve slow-path perf with vector scattered Rx)
824 * **ixgbe: Fix offload config option name.**
826 The RX_OLFLAGS option was renamed from DISABLE to ENABLE in the driver code
827 and Linux config. It is now renamed also in the BSD config and
830 Fixes: 359f106a69a9 ("ixgbe: prefer enabling olflags rather than not disabling")
833 * **ixgbe: Fix release queue mbufs.**
835 The calculations of what mbufs were valid in the RX and TX queues were
836 incorrect when freeing the mbufs for the vector PMD. This led to crashes due
837 to invalid reference counts when mbuf debugging was turned on, and possibly
838 other more subtle problems (such as mbufs being freed when in use) in other
842 Fixes: c95584dc2b18 ("ixgbe: new vectorized functions for Rx/Tx")
845 * **ixgbe: Move PMD specific fields out of base driver.**
847 Move ``rx_bulk_alloc_allowed`` and ``rx_vec_allowed`` from ``ixgbe_hw`` to
850 Fixes: 01fa1d6215fa ("ixgbe: unify Rx setup")
853 * **ixgbe: Rename TX queue release function.**
856 * **ixgbevf: Fix RX function selection.**
858 The logic to select ixgbe the VF RX function is different than the PF.
861 * **ixgbevf: Fix link status for PF up/down events.**
864 * **kni: Fix RX loop limit.**
866 Loop processing packets dequeued from rx_q was using the number of packets
867 requested, not how many it actually received.
870 * **kni: Fix ioctl in containers, like Docker.**
873 * **kni: Fix multicast ioctl handling.**
876 * **log: Fix crash after log_history dump.**
879 * **lpm: Fix big endian support.**
882 * **lpm: Fix depth small entry add.**
885 * **mbuf: Fix cloning with private mbuf data.**
887 Added a new ``priv_size`` field in mbuf structure that should be initialized
888 at mbuf pool creation. This field contains the size of the application
889 private data in mbufs.
891 Introduced new static inline functions ``rte_mbuf_from_indirect()`` and
892 ``rte_mbuf_to_baddr()`` to replace the existing macros, which take the
893 private size into account when attaching and detaching mbufs.
896 * **mbuf: Fix data room size calculation in pool init.**
898 Deduct the mbuf data room size from ``mempool->elt_size`` and ``priv_size``,
899 instead of using an hardcoded value that is not related to the real buffer
902 To use ``rte_pktmbuf_pool_init()``, the user can either:
904 * Give a NULL parameter to rte_pktmbuf_pool_init(): in this case, the
905 private size is assumed to be 0, and the room size is ``mp->elt_size`` -
906 ``sizeof(struct rte_mbuf)``.
907 * Give the ``rte_pktmbuf_pool_private`` filled with appropriate
908 data_room_size and priv_size values.
911 * **mbuf: Fix init when private size is not zero.**
913 Allow the user to use the default ``rte_pktmbuf_init()`` function even if
914 the mbuf private size is not 0.
917 * **mempool: Add structure for object headers.**
919 Each object stored in mempools are prefixed by a header, allowing for
920 instance to retrieve the mempool pointer from the object. When debug is
921 enabled, a cookie is also added in this header that helps to detect
922 corruptions and double-frees.
924 Introduced a structure that materializes the content of this header,
925 and will simplify future patches adding things in this header.
928 * **mempool: Fix pages computation to determine number of objects.**
931 * **mempool: Fix returned value after counting objects.**
933 Fixes: 148f963fb532 ("xen: core library changes")
936 * **mlx4: Avoid requesting TX completion events to improve performance.**
938 Instead of requesting a completion event for each TX burst, request it on a
939 fixed schedule once every MLX4_PMD_TX_PER_COMP_REQ (currently 64) packets to
943 * **mlx4: Fix compilation as a shared library and on 32 bit platforms.**
946 * **mlx4: Fix possible crash on scattered mbuf allocation failure.**
948 Fixes issue where failing to allocate a segment, ``mlx4_rx_burst_sp()``
949 could call ``rte_pktmbuf_free()`` on an incomplete scattered mbuf whose next
950 pointer in the last segment is not set.
953 * **mlx4: Fix support for multiple vlan filters.**
955 This fixes the "Multiple RX VLAN filters can be configured, but only the
956 first one works" bug.
959 * **pcap: Fix storage of name and type in queues.**
961 pcap_rx_queue/pcap_tx_queue should store it's own copy of name/type values,
962 not the pointer to temporary allocated space.
965 * **pci: Fix memory leaks and needless increment of map address.**
968 * **pci: Fix uio mapping differences between linux and bsd.**
971 * **port: Fix unaligned access to metadata.**
973 Fix RTE_MBUF_METADATA macros to allow for unaligned accesses to meta-data
977 * **ring: Fix return of new port id on creation.**
980 * **timer: Fix race condition.**
982 Eliminate problematic race condition in ``rte_timer_manage()`` that can lead
983 to corruption of per-lcore pending-lists (implemented as skip-lists).
986 * **vfio: Fix overflow of BAR region offset and size.**
988 Fixes: 90a1633b2347 ("eal/Linux: allow to map BARs with MSI-X tables")
991 * **vhost: Fix enqueue/dequeue to handle chained vring descriptors.**
994 * **vhost: Fix race for connection fd.**
997 * **vhost: Fix virtio freeze due to missed interrupt.**
1000 * **virtio: Fix crash if CQ is not negotiated.**
1002 Fix NULL dereference if virtio control queue is not negotiated.
1005 * **virtio: Fix ring size negotiation.**
1007 Negotiate the virtio ring size. The host may allow for very large rings but
1008 application may only want a smaller ring. Conversely, if the number of
1009 descriptors requested exceeds the virtio host queue size, then just silently
1010 use the smaller host size.
1012 This fixes issues with virtio in non-QEMU environments. For example Google
1013 Compute Engine allows up to 16K elements in ring.
1016 * **vmxnet3: Fix link state handling.**
1022 * When running the ``vmdq`` sample or ``vhost`` sample applications with the
1023 Intel(R) XL710 (i40e) NIC, the configuration option
1024 ``CONFIG_RTE_MAX_QUEUES_PER_PORT`` should be increased from 256 to 1024.
1027 * VM power manager may not work on systems with more than 64 cores.
1033 * The order that user supplied RX and TX callbacks are called in has been
1034 changed to the order that they were added (fifo) in line with end-user
1035 expectations. The previous calling order was the reverse of this (lifo) and
1036 was counter intuitive for users. The actual API is unchanged.
1042 * The ``rte_hash`` structure has been changed to internal use only.