release_2_1.rst revision 97f17497
1..  BSD LICENSE
2    Copyright(c) 2010-2015 Intel Corporation. All rights reserved.
3    All rights reserved.
4
5    Redistribution and use in source and binary forms, with or without
6    modification, are permitted provided that the following conditions
7    are met:
8
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
14    distribution.
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.
18
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.
30
31
32DPDK Release 2.1
33================
34
35
36New Features
37------------
38
39* **Enabled cloning of indirect mbufs.**
40
41  This feature removes a limitation of ``rte_pktmbuf_attach()`` which
42  generated the warning: "mbuf we're attaching to must be direct".
43
44  Now, when attaching to an indirect mbuf it is possible to:
45
46   * Copy all relevant fields (address, length, offload, ...) as before.
47
48   * Get the pointer to the mbuf that embeds the data buffer (direct mbuf),
49     and increase the reference counter.
50
51   When detaching the mbuf, we can now retrieve this direct mbuf as the
52   pointer is determined from the buffer address.
53
54
55* **Extended packet type support.**
56
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
61  capabilities
62
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.
66
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.
70
71
72* **Reworked memzone to be allocated by malloc and also support freeing.**
73
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.
77
78  This feature modifies ``malloc()`` so it partitions memsegs instead of
79  memzones. Now  memzones allocate their memory from the malloc heap.
80
81  Backward compatibility with API and ABI are maintained.
82
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
85  supported.
86
87
88* **Interrupt mode PMD.**
89
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.
92
93  DPDK userspace interrupt notification and handling mechanism is based on
94  UIO/VFIO with the following limitations:
95
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.
103
104
105* **Packet Framework enhancements.**
106
107  Several enhancements were made to the Packet Framework:
108
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
117    structure.
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.
122
123
124* **Added API for IEEE1588 timestamping.**
125
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
128  added:
129
130  * ``rte_eth_timesync_enable()``
131  * ``rte_eth_timesync_disable()``
132  * ``rte_eth_timesync_read_rx_timestamp()``
133  * ``rte_eth_timesync_read_tx_timestamp()``
134
135  The "ieee1588" forwarding mode in testpmd was also refactored to demonstrate
136  the new API.
137
138
139* **Added multicast address filtering.**
140
141  Added multicast address filtering via a new ethdev function
142  ``set_mc_addr_list()``.
143
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]
150  port.
151
152
153* **Added Flow Director extensions.**
154
155  Several Flow Director extensions were added such as:
156
157  * Support for RSS and Flow Director hashes in vector RX.
158  * Added Flow Director for L2 payload.
159
160
161* **Added RSS hash key size query per port.**
162
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.
166
167
168* **Added userspace ethtool support.**
169
170  Added userspace ethtool support to provide a familiar interface for
171  applications that manage devices via kernel-space ``ethtool_op`` and
172  ``net_device_op``.
173
174  The initial implementation focuses on operations that can be implemented
175  through existing ``netdev`` APIs. More operations will be supported in later
176  releases.
177
178
179* **Updated the ixgbe base driver.**
180
181  The ixgbe base driver was updated with several changes including the
182  following:
183
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.
192
193  See the git log for full details of the ixgbe/base changes.
194
195
196* **Added additional hotplug support.**
197
198  Port hotplug support was added to the following PMDs:
199
200  * e1000/igb.
201  * ixgbe.
202  * i40e.
203  * fm10k.
204  * ring.
205  * bonding.
206  * virtio.
207
208  Port hotplug support was added to BSD.
209
210
211* **Added ixgbe LRO support.**
212
213  Added LRO support for x540 and 82599 devices.
214
215
216* **Added extended statistics for ixgbe.**
217
218  Implemented ``xstats_get()`` and ``xstats_reset()`` in dev_ops for
219  ixgbe to expose detailed error statistics to DPDK applications.
220
221  These will be implemented for other PMDs in later releases.
222
223
224* **Added proc_info application.**
225
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.
229
230
231* **Updated the i40e base driver.**
232
233  The i40e base driver was updated with several changes including the
234  following:
235
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.
247
248  See the git log for full details of the i40e/base changes.
249
250
251* **Added support for port mirroring in i40e.**
252
253  Enabled mirror functionality in the i40e driver.
254
255
256* **Added support for i40e double VLAN, QinQ, stripping and insertion.**
257
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.
262
263
264
265* **Added fm10k promiscuous mode support.**
266
267  Added support for promiscuous/allmulticast enable and disable in the fm10k PF
268  function. VF is not supported yet.
269
270
271* **Added fm10k jumbo frame support.**
272
273  Added support for jumbo frame less than 15K in both VF and PF functions in the
274  fm10k pmd.
275
276
277* **Added fm10k mac vlan filtering support.**
278
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.
282
283
284* **Added support for the Broadcom bnx2x driver.**
285
286  Added support for the Broadcom NetXtreme II bnx2x driver.
287  It is supported only on Linux 64-bit and disabled by default.
288
289
290* **Added support for the Chelsio CXGBE driver.**
291
292  Added support for the CXGBE Poll Mode Driver for the Chelsio Terminator 5
293  series of 10G/40G adapters.
294
295
296* **Enhanced support for Mellanox ConnectX-3 driver (mlx4).**
297
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.
303
304
305* **Enabled VMXNET3 vlan filtering.**
306
307  Added support for the VLAN filter functionality of the VMXNET3 interface.
308
309
310* **Added support for vhost live migration.**
311
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".
315
316
317* **Added support for pcap jumbo frames.**
318
319  Extended the PCAP PMD to support jumbo frames for RX and TX.
320
321
322* **Added support for the TILE-Gx architecture.**
323
324  Added support for the EZchip TILE-Gx family of SoCs.
325
326
327* **Added hardware memory transactions/lock elision for x86.**
328
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.
340
341
342* **Updated Jenkins Hash function**
343
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.
347
348  Note, the hashes generated by the updated version differ from the hashes
349  generated by the previous version.
350
351
352* **Added software implementation of the Toeplitz RSS hash**
353
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
357  de-encapsulation).
358
359
360* **Replaced the existing hash library with a Cuckoo hash implementation.**
361
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.
366
367  This gives the user the ability to store more entries when a bucket is full,
368  in comparison with the previous implementation.
369
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.
372
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).
376
377  Also, the maximum burst size in lookup_burst function hash been increased to
378  64, to improve performance.
379
380
381* **Optimized KNI RX burst size computation.**
382
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.
385
386
387* **Added KNI multicast.**
388
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
392  does.
393
394
395* **Added cmdline polling mode.**
396
397  Added the ability to process console input in the same thread as packet
398  processing by using the ``poll()`` function.
399
400* **Added VXLAN Tunnel End point sample application.**
401
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
405  packets.
406
407
408* **Enabled combining of the ``-m`` and ``--no-huge`` EAL options.**
409
410  Added option to allow combining of the ``-m`` and ``--no-huge`` EAL command
411  line options.
412
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
415  64M.
416
417
418
419Resolved Issues
420---------------
421
422* **acl: Fix ambiguity between test rules.**
423
424  Some test rules had equal priority for the same category. That could cause
425  an ambiguity in building the trie and test results.
426
427
428* **acl: Fix invalid rule wildness calculation for bitmask field type.**
429
430
431* **acl: Fix matching rule.**
432
433
434* **acl: Fix unneeded trie splitting for subset of rules.**
435
436  When rebuilding a trie for limited rule-set, don't try to split the rule-set
437  even further.
438
439
440* **app/testpmd: Fix crash when port id out of bound.**
441
442  Fixed issues in testpmd where using a port greater than 32 would cause a seg
443  fault.
444
445  Fixes: edab33b1c01d ("app/testpmd: support port hotplug")
446
447
448* **app/testpmd: Fix reply to a multicast ICMP request.**
449
450  Set the IP source and destination addresses in the IP header of the ICMP
451  reply.
452
453
454* **app/testpmd: fix MAC address in ARP reply.**
455
456  Fixed issue where in the ``icmpecho`` forwarding mode, ARP replies from
457  testpmd contain invalid zero-filled MAC addresses.
458
459  Fixes: 31db4d38de72 ("net: change arp header struct declaration")
460
461
462* **app/testpmd: fix default flow control values.**
463
464  Fixes: 422a20a4e62d ("app/testpmd: fix uninitialized flow control variables")
465
466
467* **bonding: Fix crash when stopping inactive slave.**
468
469
470* **bonding: Fix device initialization error handling.**
471
472
473* **bonding: Fix initial link status of slave.**
474
475  On Fortville NIC, link status change interrupt callback was not executed
476  when slave in bonding was (re-)started.
477
478
479* **bonding: Fix socket id for LACP slave.**
480
481  Fixes: 46fb43683679 ("bond: add mode 4")
482
483
484* **bonding: Fix device initialization error handling.**
485
486
487* **cmdline: Fix small memory leak.**
488
489  A function in ``cmdline.c`` had a return that did not free the buf properly.
490
491
492* **config: Enable same drivers options for Linux and BSD.**
493
494  Enabled vector ixgbe and i40e bulk alloc for BSD as it is already done for
495  Linux.
496
497  Fixes: 304caba12643 ("config: fix bsd options")
498  Fixes: 0ff3324da2eb ("ixgbe: rework vector pmd following mbuf changes")
499
500
501* **devargs: Fix crash on failure.**
502
503  This problem occurred when passing an invalid PCI id to the blacklist API in
504  devargs.
505
506
507* **e1000/i40e: Fix descriptor done flag with odd address.**
508
509
510* **e1000/igb: fix ieee1588 timestamping initialization.**
511
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.
516
517
518* **eal/bsd: Fix inappropriate header guards.**
519
520
521* **eal/bsd: Fix virtio on FreeBSD.**
522
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.
525
526  Fixes: 8a312224bcde ("eal/bsd: fix fd leak")
527
528
529* **eal/linux: Fix comments on vfio MSI.**
530
531
532* **eal/linux: Fix irq handling with igb_uio.**
533
534  Fixed an issue where the the introduction of ``uio_pci_generic`` broke
535  interrupt handling with igb_uio.
536
537  Fixes: c112df6875a5 ("eal/linux: toggle interrupt for uio_pci_generic")
538
539
540* **eal/linux: Fix numa node detection.**
541
542
543* **eal/linux: Fix socket value for undetermined numa node.**
544
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.
549
550
551* **eal/ppc: Fix cpu cycle count for little endian.**
552
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()``.
555
556
557* **ethdev: Fix check of threshold for TX freeing.**
558
559  Fixed issue where the parameter to ``tx_free_thresh`` was not consistent
560  between the drivers.
561
562
563* **ethdev: Fix crash if malloc of user callback fails.**
564
565  If ``rte_zmalloc()`` failed in ``rte_eth_dev_callback_register`` then the
566  NULL pointer would be dereferenced.
567
568
569* **ethdev: Fix illegal port access.**
570
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.
574
575
576* **ethdev: Make tables const.**
577
578
579* **ethdev: Rename and extend the mirror type.**
580
581
582* **examples/distributor: Fix debug macro.**
583
584  The macro to turn on additional debug output when the app was compiled with
585  ``-DDEBUG`` was broken.
586
587  Fixes: 07db4a975094 ("examples/distributor: new sample app")
588
589
590* **examples/kni: Fix crash on exit.**
591
592
593* **examples/vhost: Fix build with debug enabled.**
594
595  Fixes: 72ec8d77ac68 ("examples/vhost: rework duplicated code")
596
597
598* **fm10k: Fix RETA table initialization.**
599
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.
603
604
605* **fm10k: Fix RX buffer size.**
606
607
608* **fm10k: Fix TX multi-segment frame.**
609
610
611* **fm10k: Fix TX queue cleaning after start error.**
612
613
614* **fm10k: Fix Tx queue cleaning after start error.**
615
616
617* **fm10k: Fix default mac/vlan in switch.**
618
619
620* **fm10k: Fix interrupt fault handling.**
621
622
623* **fm10k: Fix jumbo frame issue.**
624
625
626* **fm10k: Fix mac/vlan filtering.**
627
628
629* **fm10k: Fix maximum VF number.**
630
631
632* **fm10k: Fix maximum queue number for VF.**
633
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.
636
637  Fixes: a6061d9e7075 ("fm10k: register PF driver")
638
639
640* **fm10k: Fix queue disabling.**
641
642
643* **fm10k: Fix switch synchronization.**
644
645
646* **i40e/base: Fix error handling of NVM state update.**
647
648
649* **i40e/base: Fix hardware port number for pass-through.**
650
651
652* **i40e/base: Rework virtual address retrieval for lan queue.**
653
654
655* **i40e/base: Update LED blinking.**
656
657
658* **i40e/base: Workaround for PHY type with firmware < 4.4.**
659
660
661* **i40e: Disable setting of PHY configuration.**
662
663
664* **i40e: Fix SCTP flow director.**
665
666
667* **i40e: Fix check of descriptor done flag.**
668
669  Fixes: 4861cde46116 ("i40e: new poll mode driver")
670  Fixes: 05999aab4ca6 ("i40e: add or delete flow director")
671
672
673* **i40e: Fix condition to get VMDQ info.**
674
675
676* **i40e: Fix registers access from big endian CPU.**
677
678
679* **i40evf: Clear command when error occurs.**
680
681
682* **i40evf: Fix RSS with less RX queues than TX queues.**
683
684
685* **i40evf: Fix crash when setup TX queues.**
686
687
688* **i40evf: Fix jumbo frame support.**
689
690
691* **i40evf: Fix offload capability flags.**
692
693  Added checksum offload capability flags which have already been supported
694  for a long time.
695
696
697* **ivshmem: Fix crash in corner case.**
698
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
701  value 0.
702
703
704  Fixes: 40b966a211ab ("ivshmem: library changes for mmaping using ivshmem")
705
706
707* **ixgbe/base: Fix SFP probing.**
708
709
710* **ixgbe/base: Fix TX pending clearing.**
711
712
713* **ixgbe/base: Fix X550 CS4227 address.**
714
715
716* **ixgbe/base: Fix X550 PCIe master disabling.**
717
718
719* **ixgbe/base: Fix X550 check.**
720
721
722* **ixgbe/base: Fix X550 init early return.**
723
724
725* **ixgbe/base: Fix X550 link speed.**
726
727
728* **ixgbe/base: Fix X550em CS4227 speed mode.**
729
730
731* **ixgbe/base: Fix X550em SFP+ link stability.**
732
733
734* **ixgbe/base: Fix X550em UniPHY link configuration.**
735
736
737* **ixgbe/base: Fix X550em flow control for KR backplane.**
738
739
740* **ixgbe/base: Fix X550em flow control to be KR only.**
741
742
743* **ixgbe/base: Fix X550em link setup without SFP.**
744
745
746* **ixgbe/base: Fix X550em mux after MAC reset.**
747
748  Fixes: d2e72774e58c ("ixgbe/base: support X550")
749
750
751* **ixgbe/base: Fix bus type overwrite.**
752
753
754* **ixgbe/base: Fix init handling of X550em link down.**
755
756
757* **ixgbe/base: Fix lan id before first i2c access.**
758
759
760* **ixgbe/base: Fix mac type checks.**
761
762
763* **ixgbe/base: Fix tunneled UDP and TCP frames in flow director.**
764
765
766* **ixgbe: Check mbuf refcnt when clearing a ring.**
767
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
772  turned on.
773
774
775* **ixgbe: Fix RX with buffer address not word aligned.**
776
777  Niantic HW expects the Header Buffer Address in the RXD must be word
778  aligned.
779
780
781* **ixgbe: Fix RX with buffer address not word aligned.**
782
783
784* **ixgbe: Fix Rx queue reset.**
785
786  Fix to reset vector related RX queue fields to their initial values.
787
788  Fixes: c95584dc2b18 ("ixgbe: new vectorized functions for Rx/Tx")
789
790
791* **ixgbe: Fix TSO in IPv6.**
792
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
795  correctly.
796
797
798* **ixgbe: Fix X550 flow director check.**
799
800
801* **ixgbe: Fix check for split packets.**
802
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
805  all 32.
806
807  Fixes: cf4b4708a88a ("ixgbe: improve slow-path perf with vector scattered Rx")
808
809
810* **ixgbe: Fix data access on big endian cpu.**
811
812
813* **ixgbe: Fix flow director flexbytes offset.**
814
815
816  Fixes: d54a9888267c ("ixgbe: support flexpayload configuration of flow director")
817
818
819* **ixgbe: Fix number of segments with vector scattered Rx.**
820
821  Fixes: cf4b4708a88a (ixgbe: improve slow-path perf with vector scattered Rx)
822
823
824* **ixgbe: Fix offload config option name.**
825
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
828  documentation.
829
830  Fixes: 359f106a69a9 ("ixgbe: prefer enabling olflags rather than not disabling")
831
832
833* **ixgbe: Fix release queue mbufs.**
834
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
839  cases.
840
841
842  Fixes: c95584dc2b18 ("ixgbe: new vectorized functions for Rx/Tx")
843
844
845* **ixgbe: Move PMD specific fields out of base driver.**
846
847  Move ``rx_bulk_alloc_allowed`` and ``rx_vec_allowed`` from ``ixgbe_hw`` to
848  ``ixgbe_adapter``.
849
850  Fixes: 01fa1d6215fa ("ixgbe: unify Rx setup")
851
852
853* **ixgbe: Rename TX queue release function.**
854
855
856* **ixgbevf: Fix RX function selection.**
857
858  The logic to select ixgbe the VF RX function is different than the PF.
859
860
861* **ixgbevf: Fix link status for PF up/down events.**
862
863
864* **kni: Fix RX loop limit.**
865
866  Loop processing packets dequeued from rx_q was using the number of packets
867  requested, not how many it actually received.
868
869
870* **kni: Fix ioctl in containers, like Docker.**
871
872
873* **kni: Fix multicast ioctl handling.**
874
875
876* **log: Fix crash after log_history dump.**
877
878
879* **lpm: Fix big endian support.**
880
881
882* **lpm: Fix depth small entry add.**
883
884
885* **mbuf: Fix cloning with private mbuf data.**
886
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.
890
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.
894
895
896* **mbuf: Fix data room size calculation in pool init.**
897
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
900  size.
901
902  To use ``rte_pktmbuf_pool_init()``, the user can either:
903
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.
909
910
911* **mbuf: Fix init when private size is not zero.**
912
913  Allow the user to use the default ``rte_pktmbuf_init()`` function even if
914  the mbuf private size is not 0.
915
916
917* **mempool: Add structure for object headers.**
918
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.
923
924  Introduced a structure that materializes the content of this header,
925  and will simplify future patches adding things in this header.
926
927
928* **mempool: Fix pages computation to determine number of objects.**
929
930
931* **mempool: Fix returned value after counting objects.**
932
933  Fixes: 148f963fb532 ("xen: core library changes")
934
935
936* **mlx4: Avoid requesting TX completion events to improve performance.**
937
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
940  improve performance.
941
942
943* **mlx4: Fix compilation as a shared library and on 32 bit platforms.**
944
945
946* **mlx4: Fix possible crash on scattered mbuf allocation failure.**
947
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.
951
952
953* **mlx4: Fix support for multiple vlan filters.**
954
955  This fixes the "Multiple RX VLAN filters can be configured, but only the
956  first one works" bug.
957
958
959* **pcap: Fix storage of name and type in queues.**
960
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.
963
964
965* **pci: Fix memory leaks and needless increment of map address.**
966
967
968* **pci: Fix uio mapping differences between linux and bsd.**
969
970
971* **port: Fix unaligned access to metadata.**
972
973  Fix RTE_MBUF_METADATA macros to allow for unaligned accesses to meta-data
974  fields.
975
976
977* **ring: Fix return of new port id on creation.**
978
979
980* **timer: Fix race condition.**
981
982  Eliminate problematic race condition in ``rte_timer_manage()`` that can lead
983  to corruption of per-lcore pending-lists (implemented as skip-lists).
984
985
986* **vfio: Fix overflow of BAR region offset and size.**
987
988  Fixes: 90a1633b2347 ("eal/Linux: allow to map BARs with MSI-X tables")
989
990
991* **vhost: Fix enqueue/dequeue to handle chained vring descriptors.**
992
993
994* **vhost: Fix race for connection fd.**
995
996
997* **vhost: Fix virtio freeze due to missed interrupt.**
998
999
1000* **virtio: Fix crash if CQ is not negotiated.**
1001
1002  Fix NULL dereference if virtio control queue is not negotiated.
1003
1004
1005* **virtio: Fix ring size negotiation.**
1006
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.
1011
1012  This fixes issues with virtio in non-QEMU environments. For example Google
1013  Compute Engine allows up to 16K elements in ring.
1014
1015
1016* **vmxnet3: Fix link state handling.**
1017
1018
1019Known Issues
1020------------
1021
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.
1025
1026
1027* VM power manager may not work on systems with more than 64 cores.
1028
1029
1030API Changes
1031-----------
1032
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.
1037
1038
1039ABI Changes
1040-----------
1041
1042* The ``rte_hash`` structure has been changed to internal use only.
1043