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