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