New upstream version 18.02
[deb_dpdk.git] / doc / guides / rel_notes / release_2_1.rst
1 ..  SPDX-License-Identifier: BSD-3-Clause
2     Copyright(c) 2010-2015 Intel Corporation.
3
4 DPDK Release 2.1
5 ================
6
7
8 New Features
9 ------------
10
11 * **Enabled cloning of indirect mbufs.**
12
13   This feature removes a limitation of ``rte_pktmbuf_attach()`` which
14   generated the warning: "mbuf we're attaching to must be direct".
15
16   Now, when attaching to an indirect mbuf it is possible to:
17
18    * Copy all relevant fields (address, length, offload, ...) as before.
19
20    * Get the pointer to the mbuf that embeds the data buffer (direct mbuf),
21      and increase the reference counter.
22
23    When detaching the mbuf, we can now retrieve this direct mbuf as the
24    pointer is determined from the buffer address.
25
26
27 * **Extended packet type support.**
28
29   In previous releases mbuf packet types were indicated by 6 bits in the
30   ``ol_flags``. This was not enough for some supported NICs. For example i40e
31   hardware can recognize more than 150 packet types. Not being able to
32   identify these additional packet types limits access to hardware offload
33   capabilities
34
35   So an extended "unified" packet type was added to support all possible
36   PMDs. The 16 bit packet_type in the mbuf structure was changed to 32 bits
37   and used for this purpose.
38
39   To avoid breaking ABI compatibility, the code changes for this feature are
40   enclosed in a ``RTE_NEXT_ABI`` ifdef. This is enabled by default but can be
41   turned off for ABI compatibility with DPDK R2.0.
42
43
44 * **Reworked memzone to be allocated by malloc and also support freeing.**
45
46   In the memory hierarchy, memsegs are groups of physically contiguous
47   hugepages, memzones are slices of memsegs, and malloc slices memzones
48   into smaller memory chunks.
49
50   This feature modifies ``malloc()`` so it partitions memsegs instead of
51   memzones. Now  memzones allocate their memory from the malloc heap.
52
53   Backward compatibility with API and ABI are maintained.
54
55   This allow memzones, and any other structure based on memzones, for example
56   mempools, to be freed. Currently only the API from freeing memzones is
57   supported.
58
59
60 * **Interrupt mode PMD.**
61
62   This feature introduces a low-latency one-shot RX interrupt into DPDK. It
63   also adds a polling and interrupt mode switch control example.
64
65   DPDK userspace interrupt notification and handling mechanism is based on
66   UIO/VFIO with the following limitations:
67
68   * Per queue RX interrupt events are only allowed in VFIO which supports
69     multiple MSI-X vectors.
70   * In UIO, the RX interrupt shares the same vector with other
71     interrupts. When the RX interrupt and LSC interrupt are both enabled, only
72     the former is available.
73   * RX interrupt is only implemented for the linuxapp target.
74   * The feature is only currently enabled for tow PMDs: ixgbe and igb.
75
76
77 * **Packet Framework enhancements.**
78
79   Several enhancements were made to the Packet Framework:
80
81   * A new configuration file syntax has been introduced for IP pipeline
82     applications. Parsing of the configuration file is changed.
83   * Implementation of the IP pipeline application is modified to make it more
84     structured and user friendly.
85   * Implementation of the command line interface (CLI) for each pipeline type
86     has been moved to the separate compilation unit. Syntax of pipeline CLI
87     commands has been changed.
88   * Initialization of IP pipeline is modified to match the new parameters
89     structure.
90   * New implementation of pass-through pipeline, firewall pipeline, routing
91     pipeline, and flow classification has been added.
92   * Master pipeline with CLI interface has been added.
93   * Added extended documentation of the IP Pipeline.
94
95
96 * **Added API for IEEE1588 timestamping.**
97
98   This feature adds an ethdev API to enable, disable and read IEEE1588/802.1AS
99   PTP timestamps from devices that support it. The following functions were
100   added:
101
102   * ``rte_eth_timesync_enable()``
103   * ``rte_eth_timesync_disable()``
104   * ``rte_eth_timesync_read_rx_timestamp()``
105   * ``rte_eth_timesync_read_tx_timestamp()``
106
107   The "ieee1588" forwarding mode in testpmd was also refactored to demonstrate
108   the new API.
109
110
111 * **Added multicast address filtering.**
112
113   Added multicast address filtering via a new ethdev function
114   ``set_mc_addr_list()``.
115
116   This overcomes a limitation in previous releases where the receipt of
117   multicast packets on a given port could only be enabled by invoking the
118   ``rte_eth_allmulticast_enable()`` function. This method did not work for VFs
119   in SR-IOV architectures when the host PF driver does not allow these
120   operation on VFs. In such cases, joined multicast addresses had to be added
121   individually to the set of multicast addresses that are filtered by the [VF]
122   port.
123
124
125 * **Added Flow Director extensions.**
126
127   Several Flow Director extensions were added such as:
128
129   * Support for RSS and Flow Director hashes in vector RX.
130   * Added Flow Director for L2 payload.
131
132
133 * **Added RSS hash key size query per port.**
134
135   This feature supports querying the RSS hash key size of each port. A new
136   field ``hash_key_size`` has been added in the ``rte_eth_dev_info`` struct
137   for storing hash key size in bytes.
138
139
140 * **Added userspace ethtool support.**
141
142   Added userspace ethtool support to provide a familiar interface for
143   applications that manage devices via kernel-space ``ethtool_op`` and
144   ``net_device_op``.
145
146   The initial implementation focuses on operations that can be implemented
147   through existing ``netdev`` APIs. More operations will be supported in later
148   releases.
149
150
151 * **Updated the ixgbe base driver.**
152
153   The ixgbe base driver was updated with several changes including the
154   following:
155
156   * Added a new 82599 device id.
157   * Added new X550 PHY ids.
158   * Added SFP+ dual-speed support.
159   * Added wait helper for X550 IOSF accesses.
160   * Added X550em features.
161   * Added X557 PHY LEDs support.
162   * Commands for flow director.
163   * Issue firmware command when resetting X550em.
164
165   See the git log for full details of the ixgbe/base changes.
166
167
168 * **Added additional hotplug support.**
169
170   Port hotplug support was added to the following PMDs:
171
172   * e1000/igb.
173   * ixgbe.
174   * i40e.
175   * fm10k.
176   * ring.
177   * bonding.
178   * virtio.
179
180   Port hotplug support was added to BSD.
181
182
183 * **Added ixgbe LRO support.**
184
185   Added LRO support for x540 and 82599 devices.
186
187
188 * **Added extended statistics for ixgbe.**
189
190   Implemented ``xstats_get()`` and ``xstats_reset()`` in dev_ops for
191   ixgbe to expose detailed error statistics to DPDK applications.
192
193   These will be implemented for other PMDs in later releases.
194
195
196 * **Added proc_info application.**
197
198   Created a new ``proc_info`` application, by refactoring the existing
199   ``dump_cfg`` application, to demonstrate the usage of retrieving statistics,
200   and the new extended statistics (see above), for DPDK interfaces.
201
202
203 * **Updated the i40e base driver.**
204
205   The i40e base driver was updated with several changes including the
206   following:
207
208   *  Support for building both PF and VF driver together.
209   *  Support for CEE DCBX on recent firmware versions.
210   *  Replacement of ``i40e_debug_read_register()``.
211   *  Rework of ``i40e_hmc_get_object_va``.
212   *  Update of shadow RAM read/write functions.
213   *  Enhancement of polling NVM semaphore.
214   *  Enhancements on adminq init and sending asq command.
215   *  Update of get/set LED functions.
216   *  Addition of AOC phy types to case statement in get_media_type.
217   *  Support for iSCSI capability.
218   *  Setting of FLAG_RD when sending driver version to FW.
219
220   See the git log for full details of the i40e/base changes.
221
222
223 * **Added support for port mirroring in i40e.**
224
225   Enabled mirror functionality in the i40e driver.
226
227
228 * **Added support for i40e double VLAN, QinQ, stripping and insertion.**
229
230   Added support to the i40e driver for offloading double VLAN (QinQ) tags to
231   the mbuf header, and inserting double vlan tags by hardware to the packets
232   to be transmitted.  Added a new field ``vlan_tci_outer`` in the ``rte_mbuf``
233   struct, and new flags in ``ol_flags`` to support this feature.
234
235
236
237 * **Added fm10k promiscuous mode support.**
238
239   Added support for promiscuous/allmulticast enable and disable in the fm10k PF
240   function. VF is not supported yet.
241
242
243 * **Added fm10k jumbo frame support.**
244
245   Added support for jumbo frame less than 15K in both VF and PF functions in the
246   fm10k pmd.
247
248
249 * **Added fm10k mac vlan filtering support.**
250
251   Added support for the fm10k MAC filter, only available in PF. Updated the
252   VLAN filter to add/delete one static entry in the MAC table for each
253   combination of VLAN and MAC address.
254
255
256 * **Added support for the Broadcom bnx2x driver.**
257
258   Added support for the Broadcom NetXtreme II bnx2x driver.
259   It is supported only on Linux 64-bit and disabled by default.
260
261
262 * **Added support for the Chelsio CXGBE driver.**
263
264   Added support for the CXGBE Poll Mode Driver for the Chelsio Terminator 5
265   series of 10G/40G adapters.
266
267
268 * **Enhanced support for Mellanox ConnectX-3 driver (mlx4).**
269
270   *  Support Mellanox OFED 3.0.
271   *  Improved performance for both RX and TX operations.
272   *  Better link status information.
273   *  Outer L3/L4 checksum offload support.
274   *  Inner L3/L4 checksum offload support for VXLAN.
275
276
277 * **Enabled VMXNET3 vlan filtering.**
278
279   Added support for the VLAN filter functionality of the VMXNET3 interface.
280
281
282 * **Added support for vhost live migration.**
283
284   Added support to allow live migration of vhost. Without this feature, qemu
285   will report the following error: "migrate: Migration disabled: vhost lacks
286   VHOST_F_LOG_ALL feature".
287
288
289 * **Added support for pcap jumbo frames.**
290
291   Extended the PCAP PMD to support jumbo frames for RX and TX.
292
293
294 * **Added support for the TILE-Gx architecture.**
295
296   Added support for the EZchip TILE-Gx family of SoCs.
297
298
299 * **Added hardware memory transactions/lock elision for x86.**
300
301   Added the use of hardware memory transactions (HTM) on fast-path for rwlock
302   and spinlock (a.k.a. lock elision). The methods are implemented for x86
303   using Restricted Transactional Memory instructions (Intel(r) Transactional
304   Synchronization Extensions). The implementation fall-backs to the normal
305   rwlock if HTM is not available or memory transactions fail. This is not a
306   replacement for all rwlock usages since not all critical sections protected
307   by locks are friendly to HTM. For example, an attempt to perform a HW I/O
308   operation inside a hardware memory transaction always aborts the transaction
309   since the CPU is not able to roll-back should the transaction
310   fail. Therefore, hardware transactional locks are not advised to be used
311   around ``rte_eth_rx_burst()`` and ``rte_eth_tx_burst()`` calls.
312
313
314 * **Updated Jenkins Hash function**
315
316   Updated the version of the Jenkins Hash (jhash) function used in DPDK from
317   the 1996 version to the 2006 version. This gives up to 35% better
318   performance, compared to the original one.
319
320   Note, the hashes generated by the updated version differ from the hashes
321   generated by the previous version.
322
323
324 * **Added software implementation of the Toeplitz RSS hash**
325
326   Added a software implementation of the Toeplitz hash function used by RSS. It
327   can be used either for packet distribution on a single queue NIC or for
328   simulating RSS computation on a specific NIC (for example after GRE header
329   de-encapsulation).
330
331
332 * **Replaced the existing hash library with a Cuckoo hash implementation.**
333
334   Replaced the existing hash library with another approach, using the Cuckoo
335   Hash method to resolve collisions (open addressing). This method pushes
336   items from a full bucket when a new entry must be added to it, storing the
337   evicted entry in an alternative location, using a secondary hash function.
338
339   This gives the user the ability to store more entries when a bucket is full,
340   in comparison with the previous implementation.
341
342   The API has not been changed, although new fields have been added in the
343   ``rte_hash`` structure, which has been changed to internal use only.
344
345   The main change when creating a new table is that the number of entries per
346   bucket is now fixed, so its parameter is ignored now (it is still there to
347   maintain the same parameters structure).
348
349   Also, the maximum burst size in lookup_burst function hash been increased to
350   64, to improve performance.
351
352
353 * **Optimized KNI RX burst size computation.**
354
355   Optimized KNI RX burst size computation by avoiding checking how many
356   entries are in ``kni->rx_q`` prior to actually pulling them from the fifo.
357
358
359 * **Added KNI multicast.**
360
361   Enabled adding multicast addresses to KNI interfaces by adding an empty
362   callback for ``set_rx_mode`` (typically used for setting up hardware) so
363   that the ioctl succeeds. This is the same thing as the Linux tap interface
364   does.
365
366
367 * **Added cmdline polling mode.**
368
369   Added the ability to process console input in the same thread as packet
370   processing by using the ``poll()`` function.
371
372 * **Added VXLAN Tunnel End point sample application.**
373
374   Added a Tunnel End point (TEP) sample application that simulates a VXLAN
375   Tunnel Endpoint (VTEP) termination in DPDK. It is used to demonstrate the
376   offload and filtering capabilities of Intel XL710 10/40 GbE NICsfor VXLAN
377   packets.
378
379
380 * **Enabled combining of the ``-m`` and ``--no-huge`` EAL options.**
381
382   Added option to allow combining of the ``-m`` and ``--no-huge`` EAL command
383   line options.
384
385   This allows user application to run as non-root but with higher memory
386   allocations, and removes a constraint on ``--no-huge`` mode being limited to
387   64M.
388
389
390
391 Resolved Issues
392 ---------------
393
394 * **acl: Fix ambiguity between test rules.**
395
396   Some test rules had equal priority for the same category. That could cause
397   an ambiguity in building the trie and test results.
398
399
400 * **acl: Fix invalid rule wildness calculation for bitmask field type.**
401
402
403 * **acl: Fix matching rule.**
404
405
406 * **acl: Fix unneeded trie splitting for subset of rules.**
407
408   When rebuilding a trie for limited rule-set, don't try to split the rule-set
409   even further.
410
411
412 * **app/testpmd: Fix crash when port id out of bound.**
413
414   Fixed issues in testpmd where using a port greater than 32 would cause a seg
415   fault.
416
417   Fixes: edab33b1c01d ("app/testpmd: support port hotplug")
418
419
420 * **app/testpmd: Fix reply to a multicast ICMP request.**
421
422   Set the IP source and destination addresses in the IP header of the ICMP
423   reply.
424
425
426 * **app/testpmd: fix MAC address in ARP reply.**
427
428   Fixed issue where in the ``icmpecho`` forwarding mode, ARP replies from
429   testpmd contain invalid zero-filled MAC addresses.
430
431   Fixes: 31db4d38de72 ("net: change arp header struct declaration")
432
433
434 * **app/testpmd: fix default flow control values.**
435
436   Fixes: 422a20a4e62d ("app/testpmd: fix uninitialized flow control variables")
437
438
439 * **bonding: Fix crash when stopping inactive slave.**
440
441
442 * **bonding: Fix device initialization error handling.**
443
444
445 * **bonding: Fix initial link status of slave.**
446
447   On Fortville NIC, link status change interrupt callback was not executed
448   when slave in bonding was (re-)started.
449
450
451 * **bonding: Fix socket id for LACP slave.**
452
453   Fixes: 46fb43683679 ("bond: add mode 4")
454
455
456 * **bonding: Fix device initialization error handling.**
457
458
459 * **cmdline: Fix small memory leak.**
460
461   A function in ``cmdline.c`` had a return that did not free the buf properly.
462
463
464 * **config: Enable same drivers options for Linux and BSD.**
465
466   Enabled vector ixgbe and i40e bulk alloc for BSD as it is already done for
467   Linux.
468
469   Fixes: 304caba12643 ("config: fix bsd options")
470   Fixes: 0ff3324da2eb ("ixgbe: rework vector pmd following mbuf changes")
471
472
473 * **devargs: Fix crash on failure.**
474
475   This problem occurred when passing an invalid PCI id to the blacklist API in
476   devargs.
477
478
479 * **e1000/i40e: Fix descriptor done flag with odd address.**
480
481
482 * **e1000/igb: fix ieee1588 timestamping initialization.**
483
484   Fixed issue with e1000 ieee1588 timestamp initialization. On initialization
485   the IEEE1588 functions read the system time to set their timestamp. However,
486   on some 1G NICs, for example, i350, system time is disabled by default and
487   the IEEE1588 timestamp was always 0.
488
489
490 * **eal/bsd: Fix inappropriate header guards.**
491
492
493 * **eal/bsd: Fix virtio on FreeBSD.**
494
495   Closing the ``/dev/io`` fd caused a SIGBUS in inb/outb instructions as the
496   process lost the IOPL privileges once the fd is closed.
497
498   Fixes: 8a312224bcde ("eal/bsd: fix fd leak")
499
500
501 * **eal/linux: Fix comments on vfio MSI.**
502
503
504 * **eal/linux: Fix irq handling with igb_uio.**
505
506   Fixed an issue where the introduction of ``uio_pci_generic`` broke
507   interrupt handling with igb_uio.
508
509   Fixes: c112df6875a5 ("eal/linux: toggle interrupt for uio_pci_generic")
510
511
512 * **eal/linux: Fix numa node detection.**
513
514
515 * **eal/linux: Fix socket value for undetermined numa node.**
516
517   Sets zero as the default value of pci device numa_node if the socket could
518   not be determined. This provides the same default value as FreeBSD which has
519   no NUMA support, and makes the return value of ``rte_eth_dev_socket_id()``
520   be consistent with the API description.
521
522
523 * **eal/ppc: Fix cpu cycle count for little endian.**
524
525   On IBM POWER8 PPC64 little endian architecture, the definition of tsc union
526   will be different. This fix enables the right output from ``rte_rdtsc()``.
527
528
529 * **ethdev: Fix check of threshold for TX freeing.**
530
531   Fixed issue where the parameter to ``tx_free_thresh`` was not consistent
532   between the drivers.
533
534
535 * **ethdev: Fix crash if malloc of user callback fails.**
536
537   If ``rte_zmalloc()`` failed in ``rte_eth_dev_callback_register`` then the
538   NULL pointer would be dereferenced.
539
540
541 * **ethdev: Fix illegal port access.**
542
543   To obtain a detachable flag, ``pci_drv`` is accessed in
544   ``rte_eth_dev_is_detachable()``. However ``pci_drv`` is only valid if port
545   is enabled. Fixed by checking ``rte_eth_dev_is_valid_port()`` first.
546
547
548 * **ethdev: Make tables const.**
549
550
551 * **ethdev: Rename and extend the mirror type.**
552
553
554 * **examples/distributor: Fix debug macro.**
555
556   The macro to turn on additional debug output when the app was compiled with
557   ``-DDEBUG`` was broken.
558
559   Fixes: 07db4a975094 ("examples/distributor: new sample app")
560
561
562 * **examples/kni: Fix crash on exit.**
563
564
565 * **examples/vhost: Fix build with debug enabled.**
566
567   Fixes: 72ec8d77ac68 ("examples/vhost: rework duplicated code")
568
569
570 * **fm10k: Fix RETA table initialization.**
571
572   The fm10k driver has 128 RETA entries in 32 registers, but it only
573   initialized the first 32 when doing multiple RX queue configurations. This
574   fix initializes all 128 entries.
575
576
577 * **fm10k: Fix RX buffer size.**
578
579
580 * **fm10k: Fix TX multi-segment frame.**
581
582
583 * **fm10k: Fix TX queue cleaning after start error.**
584
585
586 * **fm10k: Fix Tx queue cleaning after start error.**
587
588
589 * **fm10k: Fix default mac/vlan in switch.**
590
591
592 * **fm10k: Fix interrupt fault handling.**
593
594
595 * **fm10k: Fix jumbo frame issue.**
596
597
598 * **fm10k: Fix mac/vlan filtering.**
599
600
601 * **fm10k: Fix maximum VF number.**
602
603
604 * **fm10k: Fix maximum queue number for VF.**
605
606   Both PF and VF shared code in function ``fm10k_stats_get()``. The function
607   worked with PF, but had problems with VF since it has less queues than PF.
608
609   Fixes: a6061d9e7075 ("fm10k: register PF driver")
610
611
612 * **fm10k: Fix queue disabling.**
613
614
615 * **fm10k: Fix switch synchronization.**
616
617
618 * **i40e/base: Fix error handling of NVM state update.**
619
620
621 * **i40e/base: Fix hardware port number for pass-through.**
622
623
624 * **i40e/base: Rework virtual address retrieval for lan queue.**
625
626
627 * **i40e/base: Update LED blinking.**
628
629
630 * **i40e/base: Workaround for PHY type with firmware < 4.4.**
631
632
633 * **i40e: Disable setting of PHY configuration.**
634
635
636 * **i40e: Fix SCTP flow director.**
637
638
639 * **i40e: Fix check of descriptor done flag.**
640
641   Fixes: 4861cde46116 ("i40e: new poll mode driver")
642   Fixes: 05999aab4ca6 ("i40e: add or delete flow director")
643
644
645 * **i40e: Fix condition to get VMDQ info.**
646
647
648 * **i40e: Fix registers access from big endian CPU.**
649
650
651 * **i40evf: Clear command when error occurs.**
652
653
654 * **i40evf: Fix RSS with less RX queues than TX queues.**
655
656
657 * **i40evf: Fix crash when setup TX queues.**
658
659
660 * **i40evf: Fix jumbo frame support.**
661
662
663 * **i40evf: Fix offload capability flags.**
664
665   Added checksum offload capability flags which have already been supported
666   for a long time.
667
668
669 * **ivshmem: Fix crash in corner case.**
670
671   Fixed issues where depending on the configured segments it was possible to
672   hit a segmentation fault as a result of decrementing an unsigned index with
673   value 0.
674
675
676   Fixes: 40b966a211ab ("ivshmem: library changes for mmaping using ivshmem")
677
678
679 * **ixgbe/base: Fix SFP probing.**
680
681
682 * **ixgbe/base: Fix TX pending clearing.**
683
684
685 * **ixgbe/base: Fix X550 CS4227 address.**
686
687
688 * **ixgbe/base: Fix X550 PCIe master disabling.**
689
690
691 * **ixgbe/base: Fix X550 check.**
692
693
694 * **ixgbe/base: Fix X550 init early return.**
695
696
697 * **ixgbe/base: Fix X550 link speed.**
698
699
700 * **ixgbe/base: Fix X550em CS4227 speed mode.**
701
702
703 * **ixgbe/base: Fix X550em SFP+ link stability.**
704
705
706 * **ixgbe/base: Fix X550em UniPHY link configuration.**
707
708
709 * **ixgbe/base: Fix X550em flow control for KR backplane.**
710
711
712 * **ixgbe/base: Fix X550em flow control to be KR only.**
713
714
715 * **ixgbe/base: Fix X550em link setup without SFP.**
716
717
718 * **ixgbe/base: Fix X550em mux after MAC reset.**
719
720   Fixes: d2e72774e58c ("ixgbe/base: support X550")
721
722
723 * **ixgbe/base: Fix bus type overwrite.**
724
725
726 * **ixgbe/base: Fix init handling of X550em link down.**
727
728
729 * **ixgbe/base: Fix lan id before first i2c access.**
730
731
732 * **ixgbe/base: Fix mac type checks.**
733
734
735 * **ixgbe/base: Fix tunneled UDP and TCP frames in flow director.**
736
737
738 * **ixgbe: Check mbuf refcnt when clearing a ring.**
739
740   The function to clear the TX ring when a port was being closed, e.g. on exit
741   in testpmd, was not checking the mbuf refcnt before freeing it. Since the
742   function in the vector driver to clear the ring after TX does not setting
743   the pointer to NULL post-free, this caused crashes if mbuf debugging was
744   turned on.
745
746
747 * **ixgbe: Fix RX with buffer address not word aligned.**
748
749   Niantic HW expects the Header Buffer Address in the RXD must be word
750   aligned.
751
752
753 * **ixgbe: Fix RX with buffer address not word aligned.**
754
755
756 * **ixgbe: Fix Rx queue reset.**
757
758   Fix to reset vector related RX queue fields to their initial values.
759
760   Fixes: c95584dc2b18 ("ixgbe: new vectorized functions for Rx/Tx")
761
762
763 * **ixgbe: Fix TSO in IPv6.**
764
765   When TSO was used with IPv6, the generated frames were incorrect. The L4
766   frame was OK, but the length field of IPv6 header was not populated
767   correctly.
768
769
770 * **ixgbe: Fix X550 flow director check.**
771
772
773 * **ixgbe: Fix check for split packets.**
774
775   The check for split packets to be reassembled in the vector ixgbe PMD was
776   incorrectly only checking the first 16 elements of the array instead of
777   all 32.
778
779   Fixes: cf4b4708a88a ("ixgbe: improve slow-path perf with vector scattered Rx")
780
781
782 * **ixgbe: Fix data access on big endian cpu.**
783
784
785 * **ixgbe: Fix flow director flexbytes offset.**
786
787
788   Fixes: d54a9888267c ("ixgbe: support flexpayload configuration of flow director")
789
790
791 * **ixgbe: Fix number of segments with vector scattered Rx.**
792
793   Fixes: cf4b4708a88a (ixgbe: improve slow-path perf with vector scattered Rx)
794
795
796 * **ixgbe: Fix offload config option name.**
797
798   The RX_OLFLAGS option was renamed from DISABLE to ENABLE in the driver code
799   and Linux config. It is now renamed also in the BSD config and
800   documentation.
801
802   Fixes: 359f106a69a9 ("ixgbe: prefer enabling olflags rather than not disabling")
803
804
805 * **ixgbe: Fix release queue mbufs.**
806
807   The calculations of what mbufs were valid in the RX and TX queues were
808   incorrect when freeing the mbufs for the vector PMD. This led to crashes due
809   to invalid reference counts when mbuf debugging was turned on, and possibly
810   other more subtle problems (such as mbufs being freed when in use) in other
811   cases.
812
813
814   Fixes: c95584dc2b18 ("ixgbe: new vectorized functions for Rx/Tx")
815
816
817 * **ixgbe: Move PMD specific fields out of base driver.**
818
819   Move ``rx_bulk_alloc_allowed`` and ``rx_vec_allowed`` from ``ixgbe_hw`` to
820   ``ixgbe_adapter``.
821
822   Fixes: 01fa1d6215fa ("ixgbe: unify Rx setup")
823
824
825 * **ixgbe: Rename TX queue release function.**
826
827
828 * **ixgbevf: Fix RX function selection.**
829
830   The logic to select ixgbe the VF RX function is different than the PF.
831
832
833 * **ixgbevf: Fix link status for PF up/down events.**
834
835
836 * **kni: Fix RX loop limit.**
837
838   Loop processing packets dequeued from rx_q was using the number of packets
839   requested, not how many it actually received.
840
841
842 * **kni: Fix ioctl in containers, like Docker.**
843
844
845 * **kni: Fix multicast ioctl handling.**
846
847
848 * **log: Fix crash after log_history dump.**
849
850
851 * **lpm: Fix big endian support.**
852
853
854 * **lpm: Fix depth small entry add.**
855
856
857 * **mbuf: Fix cloning with private mbuf data.**
858
859   Added a new ``priv_size`` field in mbuf structure that should be initialized
860   at mbuf pool creation. This field contains the size of the application
861   private data in mbufs.
862
863   Introduced new static inline functions ``rte_mbuf_from_indirect()`` and
864   ``rte_mbuf_to_baddr()`` to replace the existing macros, which take the
865   private size into account when attaching and detaching mbufs.
866
867
868 * **mbuf: Fix data room size calculation in pool init.**
869
870   Deduct the mbuf data room size from ``mempool->elt_size`` and ``priv_size``,
871   instead of using an hardcoded value that is not related to the real buffer
872   size.
873
874   To use ``rte_pktmbuf_pool_init()``, the user can either:
875
876   * Give a NULL parameter to rte_pktmbuf_pool_init(): in this case, the
877     private size is assumed to be 0, and the room size is ``mp->elt_size`` -
878     ``sizeof(struct rte_mbuf)``.
879   * Give the ``rte_pktmbuf_pool_private`` filled with appropriate
880     data_room_size and priv_size values.
881
882
883 * **mbuf: Fix init when private size is not zero.**
884
885   Allow the user to use the default ``rte_pktmbuf_init()`` function even if
886   the mbuf private size is not 0.
887
888
889 * **mempool: Add structure for object headers.**
890
891   Each object stored in mempools are prefixed by a header, allowing for
892   instance to retrieve the mempool pointer from the object. When debug is
893   enabled, a cookie is also added in this header that helps to detect
894   corruptions and double-frees.
895
896   Introduced a structure that materializes the content of this header,
897   and will simplify future patches adding things in this header.
898
899
900 * **mempool: Fix pages computation to determine number of objects.**
901
902
903 * **mempool: Fix returned value after counting objects.**
904
905   Fixes: 148f963fb532 ("xen: core library changes")
906
907
908 * **mlx4: Avoid requesting TX completion events to improve performance.**
909
910   Instead of requesting a completion event for each TX burst, request it on a
911   fixed schedule once every MLX4_PMD_TX_PER_COMP_REQ (currently 64) packets to
912   improve performance.
913
914
915 * **mlx4: Fix compilation as a shared library and on 32 bit platforms.**
916
917
918 * **mlx4: Fix possible crash on scattered mbuf allocation failure.**
919
920   Fixes issue where failing to allocate a segment, ``mlx4_rx_burst_sp()``
921   could call ``rte_pktmbuf_free()`` on an incomplete scattered mbuf whose next
922   pointer in the last segment is not set.
923
924
925 * **mlx4: Fix support for multiple vlan filters.**
926
927   This fixes the "Multiple RX VLAN filters can be configured, but only the
928   first one works" bug.
929
930
931 * **pcap: Fix storage of name and type in queues.**
932
933   pcap_rx_queue/pcap_tx_queue should store it's own copy of name/type values,
934   not the pointer to temporary allocated space.
935
936
937 * **pci: Fix memory leaks and needless increment of map address.**
938
939
940 * **pci: Fix uio mapping differences between linux and bsd.**
941
942
943 * **port: Fix unaligned access to metadata.**
944
945   Fix RTE_MBUF_METADATA macros to allow for unaligned accesses to meta-data
946   fields.
947
948
949 * **ring: Fix return of new port id on creation.**
950
951
952 * **timer: Fix race condition.**
953
954   Eliminate problematic race condition in ``rte_timer_manage()`` that can lead
955   to corruption of per-lcore pending-lists (implemented as skip-lists).
956
957
958 * **vfio: Fix overflow of BAR region offset and size.**
959
960   Fixes: 90a1633b2347 ("eal/Linux: allow to map BARs with MSI-X tables")
961
962
963 * **vhost: Fix enqueue/dequeue to handle chained vring descriptors.**
964
965
966 * **vhost: Fix race for connection fd.**
967
968
969 * **vhost: Fix virtio freeze due to missed interrupt.**
970
971
972 * **virtio: Fix crash if CQ is not negotiated.**
973
974   Fix NULL dereference if virtio control queue is not negotiated.
975
976
977 * **virtio: Fix ring size negotiation.**
978
979   Negotiate the virtio ring size. The host may allow for very large rings but
980   application may only want a smaller ring. Conversely, if the number of
981   descriptors requested exceeds the virtio host queue size, then just silently
982   use the smaller host size.
983
984   This fixes issues with virtio in non-QEMU environments. For example Google
985   Compute Engine allows up to 16K elements in ring.
986
987
988 * **vmxnet3: Fix link state handling.**
989
990
991 Known Issues
992 ------------
993
994 * When running the ``vmdq`` sample or ``vhost`` sample applications with the
995   Intel(R) XL710 (i40e) NIC, the configuration option
996   ``CONFIG_RTE_MAX_QUEUES_PER_PORT`` should be increased from 256 to 1024.
997
998
999 * VM power manager may not work on systems with more than 64 cores.
1000
1001
1002 API Changes
1003 -----------
1004
1005 * The order that user supplied RX and TX callbacks are called in has been
1006   changed to the order that they were added (fifo) in line with end-user
1007   expectations. The previous calling order was the reverse of this (lifo) and
1008   was counter intuitive for users. The actual API is unchanged.
1009
1010
1011 ABI Changes
1012 -----------
1013
1014 * The ``rte_hash`` structure has been changed to internal use only.