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