doc: update release notes for version 2.1
[dpdk.git] / doc / guides / rel_notes / release_2_1.rst
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
32 DPDK Release 2.1
33 ================
34
35
36 New 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 * **Enabled VMXNET3 vlan filtering.**
297
298   Added support for the VLAN filter functionality of the VMXNET3 interface.
299
300
301 * **Added support for vhost live migration.**
302
303   Added support to allow live migration of vhost. Without this feature, qemu
304   will report the following error: "migrate: Migration disabled: vhost lacks
305   VHOST_F_LOG_ALL feature".
306
307
308 * **Added support for pcap jumbo frames.**
309
310   Extended the PCAP PMD to support jumbo frames for RX and TX.
311
312
313 * **Added support for the TILE-Gx architecture.**
314
315   Added support for the EZchip TILE-Gx family of SoCs.
316
317
318 * **Added hardware memory transactions/lock elision for x86.**
319
320   Added the use of hardware memory transactions (HTM) on fast-path for rwlock
321   and spinlock (a.k.a. lock elision). The methods are implemented for x86
322   using Restricted Transactional Memory instructions (Intel(r) Transactional
323   Synchronization Extensions). The implementation fall-backs to the normal
324   rwlock if HTM is not available or memory transactions fail. This is not a
325   replacement for all rwlock usages since not all critical sections protected
326   by locks are friendly to HTM. For example, an attempt to perform a HW I/O
327   operation inside a hardware memory transaction always aborts the transaction
328   since the CPU is not able to roll-back should the transaction
329   fail. Therefore, hardware transactional locks are not advised to be used
330   around ``rte_eth_rx_burst()`` and ``rte_eth_tx_burst()`` calls.
331
332
333 * **Updated Jenkins Hash function**
334
335   Updated the version of the Jenkins Hash (jhash) function used in DPDK from
336   the 1996 version to the 2006 version. This gives up to 35% better
337   performance, compared to the original one.
338
339   Note, the hashes generated by the updated version differ from the hashes
340   generated by the previous version.
341
342
343 * **Added software implementation of the Toeplitz RSS hash**
344
345   Added a software implementation of the Toeplitz hash function used by RSS. It
346   can be used either for packet distribution on a single queue NIC or for
347   simulating RSS computation on a specific NIC (for example after GRE header
348   de-encapsulation).
349
350
351 * **Replaced the existing hash library with a Cuckoo hash implementation.**
352
353   Replaced the existing hash library with another approach, using the Cuckoo
354   Hash method to resolve collisions (open addressing). This method pushes
355   items from a full bucket when a new entry must be added to it, storing the
356   evicted entry in an alternative location, using a secondary hash function.
357
358   This gives the user the ability to store more entries when a bucket is full,
359   in comparison with the previous implementation.
360
361   The API has not been changed, although new fields have been added in the
362   ``rte_hash`` structure, which has been changed to internal use only.
363
364   The main change when creating a new table is that the number of entries per
365   bucket is now fixed, so its parameter is ignored now (it is still there to
366   maintain the same parameters structure).
367
368   Also, the maximum burst size in lookup_burst function hash been increased to
369   64, to improve performance.
370
371
372 * **Optimized KNI RX burst size computation.**
373
374   Optimized KNI RX burst size computation by avoiding checking how many
375   entries are in ``kni->rx_q`` prior to actually pulling them from the fifo.
376
377
378 * **Added KNI multicast.**
379
380   Enabled adding multicast addresses to KNI interfaces by adding an empty
381   callback for ``set_rx_mode`` (typically used for setting up hardware) so
382   that the ioctl succeeds. This is the same thing as the Linux tap interface
383   does.
384
385
386 * **Added cmdline polling mode.**
387
388   Added the ability to process console input in the same thread as packet
389   processing by using the ``poll()`` function.
390
391 * **Added VXLAN Tunnel End point sample application.**
392
393   Added a Tunnel End point (TEP) sample application that simulates a VXLAN
394   Tunnel Endpoint (VTEP) termination in DPDK. It is used to demonstrate the
395   offload and filtering capabilities of Intel XL710 10/40 GbE NICsfor VXLAN
396   packets.
397
398
399 * **Enabled combining of the ``-m`` and ``--no-huge`` EAL options.**
400
401   Added option to allow combining of the ``-m`` and ``--no-huge`` EAL command
402   line options.
403
404   This allows user application to run as non-root but with higher memory
405   allocations, and removes a constraint on ``--no-huge`` mode being limited to
406   64M.
407
408
409
410 Resolved Issues
411 ---------------
412
413 * **acl: Fix ambiguity between test rules.**
414
415   Some test rules had equal priority for the same category. That could cause
416   an ambiguity in building the trie and test results.
417
418
419 * **acl: Fix invalid rule wildness calculation for bitmask field type.**
420
421
422 * **acl: Fix matching rule.**
423
424
425 * **acl: Fix unneeded trie splitting for subset of rules.**
426
427   When rebuilding a trie for limited rule-set, don't try to split the rule-set
428   even further.
429
430
431 * **app/testpmd: Fix crash when port id out of bound.**
432
433   Fixed issues in testpmd where using a port greater than 32 would cause a seg
434   fault.
435
436   Fixes: edab33b1c01d ("app/testpmd: support port hotplug")
437
438
439 * **app/testpmd: Fix reply to a multicast ICMP request.**
440
441   Set the IP source and destination addresses in the IP header of the ICMP
442   reply.
443
444
445 * **app/testpmd: fix MAC address in ARP reply.**
446
447   Fixed issue where in the ``icmpecho`` forwarding mode, ARP replies from
448   testpmd contain invalid zero-filled MAC addresses.
449
450   Fixes: 31db4d38de72 ("net: change arp header struct declaration")
451
452
453 * **app/testpmd: fix default flow control values.**
454
455   Fixes: 422a20a4e62d ("app/testpmd: fix uninitialized flow control variables")
456
457
458 * **bonding: Fix crash when stopping inactive slave.**
459
460
461 * **bonding: Fix device initialization error handling.**
462
463
464 * **bonding: Fix initial link status of slave.**
465
466   On Fortville NIC, link status change interrupt callback was not executed
467   when slave in bonding was (re-)started.
468
469
470 * **bonding: Fix socket id for LACP slave.**
471
472   Fixes: 46fb43683679 ("bond: add mode 4")
473
474
475 * **bonding: Fix device initialization error handling.**
476
477
478 * **cmdline: Fix small memory leak.**
479
480   A function in ``cmdline.c`` had a return that did not free the buf properly.
481
482
483 * **config: Enable same drivers options for Linux and BSD.**
484
485   Enabled vector ixgbe and i40e bulk alloc for BSD as it is already done for
486   Linux.
487
488   Fixes: 304caba12643 ("config: fix bsd options")
489   Fixes: 0ff3324da2eb ("ixgbe: rework vector pmd following mbuf changes")
490
491
492 * **devargs: Fix crash on failure.**
493
494   This problem occurred when passing an invalid PCI id to the blacklist API in
495   devargs.
496
497
498 * **e1000/i40e: Fix descriptor done flag with odd address.**
499
500
501 * **e1000/igb: fix ieee1588 timestamping initialization.**
502
503   Fixed issue with e1000 ieee1588 timestamp initialization. On initialization
504   the IEEE1588 functions read the system time to set their timestamp. However,
505   on some 1G NICs, for example, i350, system time is disabled by default and
506   the IEEE1588 timestamp was always 0.
507
508
509 * **eal/bsd: Fix inappropriate header guards.**
510
511
512 * **eal/bsd: Fix virtio on FreeBSD.**
513
514   Closing the ``/dev/io`` fd caused a SIGBUS in inb/outb instructions as the
515   process lost the IOPL privileges once the fd is closed.
516
517   Fixes: 8a312224bcde ("eal/bsd: fix fd leak")
518
519
520 * **eal/linux: Fix comments on vfio MSI.**
521
522
523 * **eal/linux: Fix irq handling with igb_uio.**
524
525   Fixed an issue where the the introduction of ``uio_pci_generic`` broke
526   interrupt handling with igb_uio.
527
528   Fixes: c112df6875a5 ("eal/linux: toggle interrupt for uio_pci_generic")
529
530
531 * **eal/linux: Fix numa node detection.**
532
533
534 * **eal/linux: Fix socket value for undetermined numa node.**
535
536   Sets zero as the default value of pci device numa_node if the socket could
537   not be determined. This provides the same default value as FreeBSD which has
538   no NUMA support, and makes the return value of ``rte_eth_dev_socket_id()``
539   be consistent with the API description.
540
541
542 * **eal/ppc: Fix cpu cycle count for little endian.**
543
544   On IBM POWER8 PPC64 little endian architecture, the definition of tsc union
545   will be different. This fix enables the right output from ``rte_rdtsc()``.
546
547
548 * **ethdev: Fix check of threshold for TX freeing.**
549
550   Fixed issue where the parameter to ``tx_free_thresh`` was not consistent
551   between the drivers.
552
553
554 * **ethdev: Fix crash if malloc of user callback fails.**
555
556   If ``rte_zmalloc()`` failed in ``rte_eth_dev_callback_register`` then the
557   NULL pointer would be dereferenced.
558
559
560 * **ethdev: Fix illegal port access.**
561
562   To obtain a detachable flag, ``pci_drv`` is accessed in
563   ``rte_eth_dev_is_detachable()``. However ``pci_drv`` is only valid if port
564   is enabled. Fixed by checking ``rte_eth_dev_is_valid_port()`` first.
565
566
567 * **ethdev: Make tables const.**
568
569
570 * **ethdev: Rename and extend the mirror type.**
571
572
573 * **examples/distributor: Fix debug macro.**
574
575   The macro to turn on additional debug output when the app was compiled with
576   ``-DDEBUG`` was broken.
577
578   Fixes: 07db4a975094 ("examples/distributor: new sample app")
579
580
581 * **examples/kni: Fix crash on exit.**
582
583
584 * **examples/vhost: Fix build with debug enabled.**
585
586   Fixes: 72ec8d77ac68 ("examples/vhost: rework duplicated code")
587
588
589 * **fm10k: Fix RETA table initialization.**
590
591   The fm10k driver has 128 RETA entries in 32 registers, but it only
592   initialized the first 32 when doing multiple RX queue configurations. This
593   fix initializes all 128 entries.
594
595
596 * **fm10k: Fix RX buffer size.**
597
598
599 * **fm10k: Fix TX multi-segment frame.**
600
601
602 * **fm10k: Fix TX queue cleaning after start error.**
603
604
605 * **fm10k: Fix Tx queue cleaning after start error.**
606
607
608 * **fm10k: Fix default mac/vlan in switch.**
609
610
611 * **fm10k: Fix interrupt fault handling.**
612
613
614 * **fm10k: Fix jumbo frame issue.**
615
616
617 * **fm10k: Fix mac/vlan filtering.**
618
619
620 * **fm10k: Fix maximum VF number.**
621
622
623 * **fm10k: Fix maximum queue number for VF.**
624
625   Both PF and VF shared code in function ``fm10k_stats_get()``. The function
626   worked with PF, but had problems with VF since it has less queues than PF.
627
628   Fixes: a6061d9e7075 ("fm10k: register PF driver")
629
630
631 * **fm10k: Fix queue disabling.**
632
633
634 * **fm10k: Fix switch synchronization.**
635
636
637 * **i40e/base: Fix error handling of NVM state update.**
638
639
640 * **i40e/base: Fix hardware port number for pass-through.**
641
642
643 * **i40e/base: Rework virtual address retrieval for lan queue.**
644
645
646 * **i40e/base: Update LED blinking.**
647
648
649 * **i40e/base: Workaround for PHY type with firmware < 4.4.**
650
651
652 * **i40e: Disable setting of PHY configuration.**
653
654
655 * **i40e: Fix SCTP flow director.**
656
657
658 * **i40e: Fix check of descriptor done flag.**
659
660   Fixes: 4861cde46116 ("i40e: new poll mode driver")
661   Fixes: 05999aab4ca6 ("i40e: add or delete flow director")
662
663
664 * **i40e: Fix condition to get VMDQ info.**
665
666
667 * **i40e: Fix registers access from big endian CPU.**
668
669
670 * **i40evf: Clear command when error occurs.**
671
672
673 * **i40evf: Fix RSS with less RX queues than TX queues.**
674
675
676 * **i40evf: Fix crash when setup TX queues.**
677
678
679 * **i40evf: Fix jumbo frame support.**
680
681
682 * **i40evf: Fix offload capability flags.**
683
684   Added checksum offload capability flags which have already been supported
685   for a long time.
686
687
688 * **ivshmem: Fix crash in corner case.**
689
690   Fixed issues where depending on the configured segments it was possible to
691   hit a segmentation fault as a result of decrementing an unsigned index with
692   value 0.
693
694
695   Fixes: 40b966a211ab ("ivshmem: library changes for mmaping using ivshmem")
696
697
698 * **ixgbe/base: Fix SFP probing.**
699
700
701 * **ixgbe/base: Fix TX pending clearing.**
702
703
704 * **ixgbe/base: Fix X550 CS4227 address.**
705
706
707 * **ixgbe/base: Fix X550 PCIe master disabling.**
708
709
710 * **ixgbe/base: Fix X550 check.**
711
712
713 * **ixgbe/base: Fix X550 init early return.**
714
715
716 * **ixgbe/base: Fix X550 link speed.**
717
718
719 * **ixgbe/base: Fix X550em CS4227 speed mode.**
720
721
722 * **ixgbe/base: Fix X550em SFP+ link stability.**
723
724
725 * **ixgbe/base: Fix X550em UniPHY link configuration.**
726
727
728 * **ixgbe/base: Fix X550em flow control for KR backplane.**
729
730
731 * **ixgbe/base: Fix X550em flow control to be KR only.**
732
733
734 * **ixgbe/base: Fix X550em link setup without SFP.**
735
736
737 * **ixgbe/base: Fix X550em mux after MAC reset.**
738
739   Fixes: d2e72774e58c ("ixgbe/base: support X550")
740
741
742 * **ixgbe/base: Fix bus type overwrite.**
743
744
745 * **ixgbe/base: Fix init handling of X550em link down.**
746
747
748 * **ixgbe/base: Fix lan id before first i2c access.**
749
750
751 * **ixgbe/base: Fix mac type checks.**
752
753
754 * **ixgbe/base: Fix tunneled UDP and TCP frames in flow director.**
755
756
757 * **ixgbe: Check mbuf refcnt when clearing a ring.**
758
759   The function to clear the TX ring when a port was being closed, e.g. on exit
760   in testpmd, was not checking the mbuf refcnt before freeing it. Since the
761   function in the vector driver to clear the ring after TX does not setting
762   the pointer to NULL post-free, this caused crashes if mbuf debugging was
763   turned on.
764
765
766 * **ixgbe: Fix RX with buffer address not word aligned.**
767
768   Niantic HW expects the Header Buffer Address in the RXD must be word
769   aligned.
770
771
772 * **ixgbe: Fix RX with buffer address not word aligned.**
773
774
775 * **ixgbe: Fix Rx queue reset.**
776
777   Fix to reset vector related RX queue fields to their initial values.
778
779   Fixes: c95584dc2b18 ("ixgbe: new vectorized functions for Rx/Tx")
780
781
782 * **ixgbe: Fix TSO in IPv6.**
783
784   When TSO was used with IPv6, the generated frames were incorrect. The L4
785   frame was OK, but the length field of IPv6 header was not populated
786   correctly.
787
788
789 * **ixgbe: Fix X550 flow director check.**
790
791
792 * **ixgbe: Fix check for split packets.**
793
794   The check for split packets to be reassembled in the vector ixgbe PMD was
795   incorrectly only checking the first 16 elements of the array instead of
796   all 32.
797
798   Fixes: cf4b4708a88a ("ixgbe: improve slow-path perf with vector scattered Rx")
799
800
801 * **ixgbe: Fix data access on big endian cpu.**
802
803
804 * **ixgbe: Fix flow director flexbytes offset.**
805
806
807   Fixes: d54a9888267c ("ixgbe: support flexpayload configuration of flow director")
808
809
810 * **ixgbe: Fix number of segments with vector scattered Rx.**
811
812   Fixes: cf4b4708a88a (ixgbe: improve slow-path perf with vector scattered Rx)
813
814
815 * **ixgbe: Fix offload config option name.**
816
817   The RX_OLFLAGS option was renamed from DISABLE to ENABLE in the driver code
818   and Linux config. It is now renamed also in the BSD config and
819   documentation.
820
821   Fixes: 359f106a69a9 ("ixgbe: prefer enabling olflags rather than not disabling")
822
823
824 * **ixgbe: Fix release queue mbufs.**
825
826   The calculations of what mbufs were valid in the RX and TX queues were
827   incorrect when freeing the mbufs for the vector PMD. This led to crashes due
828   to invalid reference counts when mbuf debugging was turned on, and possibly
829   other more subtle problems (such as mbufs being freed when in use) in other
830   cases.
831
832
833   Fixes: c95584dc2b18 ("ixgbe: new vectorized functions for Rx/Tx")
834
835
836 * **ixgbe: Move PMD specific fields out of base driver.**
837
838   Move ``rx_bulk_alloc_allowed`` and ``rx_vec_allowed`` from ``ixgbe_hw`` to
839   ``ixgbe_adapter``.
840
841   Fixes: 01fa1d6215fa ("ixgbe: unify Rx setup")
842
843
844 * **ixgbe: Rename TX queue release function.**
845
846
847 * **ixgbevf: Fix RX function selection.**
848
849   The logic to select ixgbe the VF RX function is different than the PF.
850
851
852 * **ixgbevf: Fix link status for PF up/down events.**
853
854
855 * **kni: Fix RX loop limit.**
856
857   Loop processing packets dequeued from rx_q was using the number of packets
858   requested, not how many it actually received.
859
860
861 * **kni: Fix ioctl in containers, like Docker.**
862
863
864 * **kni: Fix multicast ioctl handling.**
865
866
867 * **log: Fix crash after log_history dump.**
868
869
870 * **lpm: Fix big endian support.**
871
872
873 * **lpm: Fix depth small entry add.**
874
875
876 * **mbuf: Fix cloning with private mbuf data.**
877
878   Added a new ``priv_size`` field in mbuf structure that should be initialized
879   at mbuf pool creation. This field contains the size of the application
880   private data in mbufs.
881
882   Introduced new static inline functions ``rte_mbuf_from_indirect()`` and
883   ``rte_mbuf_to_baddr()`` to replace the existing macros, which take the
884   private size into account when attaching and detaching mbufs.
885
886
887 * **mbuf: Fix data room size calculation in pool init.**
888
889   Deduct the mbuf data room size from ``mempool->elt_size`` and ``priv_size``,
890   instead of using an hardcoded value that is not related to the real buffer
891   size.
892
893   To use ``rte_pktmbuf_pool_init()``, the user can either:
894
895   * Give a NULL parameter to rte_pktmbuf_pool_init(): in this case, the
896     private size is assumed to be 0, and the room size is ``mp->elt_size`` -
897     ``sizeof(struct rte_mbuf)``.
898   * Give the ``rte_pktmbuf_pool_private`` filled with appropriate
899     data_room_size and priv_size values.
900
901
902 * **mbuf: Fix init when private size is not zero.**
903
904   Allow the user to use the default ``rte_pktmbuf_init()`` function even if
905   the mbuf private size is not 0.
906
907
908 * **mempool: Add structure for object headers.**
909
910   Each object stored in mempools are prefixed by a header, allowing for
911   instance to retrieve the mempool pointer from the object. When debug is
912   enabled, a cookie is also added in this header that helps to detect
913   corruptions and double-frees.
914
915   Introduced a structure that materializes the content of this header,
916   and will simplify future patches adding things in this header.
917
918
919 * **mempool: Fix pages computation to determine number of objects.**
920
921
922 * **mempool: Fix returned value after counting objects.**
923
924   Fixes: 148f963fb532 ("xen: core library changes")
925
926
927 * **mlx4: Avoid requesting TX completion events to improve performance.**
928
929   Instead of requesting a completion event for each TX burst, request it on a
930   fixed schedule once every MLX4_PMD_TX_PER_COMP_REQ (currently 64) packets to
931   improve performance.
932
933
934 * **mlx4: Fix possible crash on scattered mbuf allocation failure.**
935
936   Fixes issue where failing to allocate a segment, ``mlx4_rx_burst_sp()``
937   could call ``rte_pktmbuf_free()`` on an incomplete scattered mbuf whose next
938   pointer in the last segment is not set.
939
940
941 * **mlx4: Fix support for multiple vlan filters.**
942
943   This fixes the "Multiple RX VLAN filters can be configured, but only the
944   first one works" bug.
945
946
947 * **pcap: Fix storage of name and type in queues.**
948
949   pcap_rx_queue/pcap_tx_queue should store it's own copy of name/type values,
950   not the pointer to temporary allocated space.
951
952
953 * **pci: Fix memory leaks and needless increment of map address.**
954
955
956 * **pci: Fix uio mapping differences between linux and bsd.**
957
958
959 * **port: Fix unaligned access to metadata.**
960
961   Fix RTE_MBUF_METADATA macros to allow for unaligned accesses to meta-data
962   fields.
963
964
965 * **ring: Fix return of new port id on creation.**
966
967
968 * **timer: Fix race condition.**
969
970   Eliminate problematic race condition in ``rte_timer_manage()`` that can lead
971   to corruption of per-lcore pending-lists (implemented as skip-lists).
972
973
974 * **vfio: Fix overflow of BAR region offset and size.**
975
976   Fixes: 90a1633b2347 ("eal/Linux: allow to map BARs with MSI-X tables")
977
978
979 * **vhost: Fix enqueue/dequeue to handle chained vring descriptors.**
980
981
982 * **vhost: Fix race for connection fd.**
983
984
985 * **vhost: Fix virtio freeze due to missed interrupt.**
986
987
988 * **virtio: Fix crash if CQ is not negotiated.**
989
990   Fix NULL dereference if virtio control queue is not negotiated.
991
992
993 * **virtio: Fix ring size negotiation.**
994
995   Negotiate the virtio ring size. The host may allow for very large rings but
996   application may only want a smaller ring. Conversely, if the number of
997   descriptors requested exceeds the virtio host queue size, then just silently
998   use the smaller host size.
999
1000   This fixes issues with virtio in non-QEMU environments. For example Google
1001   Compute Engine allows up to 16K elements in ring.
1002
1003
1004 * **vmxnet3: Fix link state handling.**
1005
1006
1007 Known Issues
1008 ------------
1009
1010 * When running the ``vmdq`` sample or ``vhost`` sample applications with the
1011   Intel(R) XL710 (i40e) NIC, the configuration option
1012   ``CONFIG_RTE_MAX_QUEUES_PER_PORT`` should be increased from 256 to 1024.
1013
1014
1015 * VM power manager may not work on systems with more than 64 cores.
1016
1017
1018 API Changes
1019 -----------
1020
1021 * The order that user supplied RX and TX callbacks are called in has been
1022   changed to the order that they were added (fifo) in line with end-user
1023   expectations. The previous calling order was the reverse of this (lifo) and
1024   was counter intuitive for users. The actual API is unchanged.
1025
1026
1027 ABI Changes
1028 -----------
1029
1030 * The ``rte_hash`` structure has been changed to internal use only.