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