This section is a comment. Make sure to start the actual text at the margin.
+
+* **Added software parser for packet type.**
+
+ * Added a new function ``rte_pktmbuf_read()`` to read the packet data from an
+ mbuf chain, linearizing if required.
+ * Added a new function ``rte_net_get_ptype()`` to parse an Ethernet packet
+ in an mbuf chain and retrieve its packet type by software.
+ * Added new functions ``rte_get_ptype_*()`` to dump a packet type as a string.
+
+* **Improved offloads support in mbuf.**
+
+ * Added a new function ``rte_raw_cksum_mbuf()`` to process the checksum of
+ data embedded in an mbuf chain.
+ * Added new Rx checksum flags in mbufs to describe more states: unknown,
+ good, bad, or not present (useful for virtual drivers). This modification
+ was done for IP and L4.
+ * Added a new RX LRO mbuf flag, used when packets are coalesced. This
+ flag indicates that the segment size of original packets is known.
+
+* **Added vhost-user dequeue zero copy support**
+
+ The copy in dequeue path is saved, which is meant to improve the performance.
+ In the VM2VM case, the boost is quite impressive. The bigger the packet size,
+ the bigger performance boost you may get. However, for VM2NIC case, there
+ are some limitations, yet the boost is not that impressive as VM2VM case.
+ It may even drop quite a bit for small packets.
+
+ For such reason, this feature is disabled by default. It can be enabled when
+ ``RTE_VHOST_USER_DEQUEUE_ZERO_COPY`` flag is given. Check the vhost section
+ at programming guide for more information.
+
* **Added vhost-user indirect descriptors support.**
If indirect descriptor feature is negotiated, each packet sent by the guest
Added extended statistics to vhost PMD from per port perspective.
+* **Supported offloads with virtio.**
+
+ * Rx/Tx checksums
+ * LRO
+ * TSO
+
* **Added virtio NEON support for ARM.**
* **Updated the ixgbe base driver.**
* increase mailbox version to ixgbe_mbox_api_13
* add two MAC ops for Hyper-V support
+* **Added API's for VF management to the ixgbe PMD.**
+
+ Eight new API's have been added to the ixgbe PMD for VF management from the PF.
+ The declarations for the API's can be found in ``rte_pmd_ixgbe.h``.
+
+* **Updated the enic driver.**
+
+ * Use interrupt for link status checking instead of polling
+ * More flow director modes on UCS Blade with firmware version >= 2.0(13e)
+ * Full support for MTU update
+ * Support for rte_eth_rx_queue_count function
+
* **Updated the QAT PMD.**
The QAT PMD was updated with following support:
* MD5_HMAC algorithm
+ * SHA224-HMAC algorithm
+ * SHA384-HMAC algorithm
+ * GMAC algorithm
+ * KASUMI (F8 and F9) algorithm
+ * 3DES algorithm
+ * NULL algorithm
+ * C3XXX device
+ * C62XX device
+
+* **Added openssl PMD.**
+
+ A new crypto PMD has been added, which provides several ciphering and hashing.
+ All cryptography operations are using Openssl library crypto API.
+
+* **Updated the IPsec example with following support:**
+
+ * configuration file
+ * AES CBC IV generation with cipher forward function
+ * AES GCM/CTR mode
+
+* **Added support for new gcc -march option.**
+
+ The GCC 4.9 ``-march`` option supports the Intel processor code names.
+ The config option ``RTE_MACHINE`` can be used to pass code names to the compiler as ``-march`` flag.
Resolved Issues
Drivers
~~~~~~~
+* **enic: Fixed several flow director issues.**
+
+* **enic: Fixed inadvertent setting of L4 checksum ptype on ICMP packets.**
+
+* **enic: Fixed high driver overhead when servicing Rx queues beyond the first.**
+
Libraries
~~~~~~~~~
* The ``rte_ivshmem`` feature (including library and EAL code) has been removed
in 16.11 because it had some design issues which were not planned to be fixed.
+* The ``file_name`` data type of ``struct rte_port_source_params`` and
+ ``struct rte_port_sink_params`` is changed from `char *`` to ``const char *``.
+
+* **Improved device/driver hierarchy and generalized hotplugging**
+
+ Device and driver relationship has been restructured by introducing generic
+ classes. This paves way for having PCI, VDEV and other device types as
+ just instantiated objects rather than classes in themselves. Hotplugging too
+ has been generalized into EAL so that ethernet or crypto devices can use the
+ common infrastructure.
+
+ * removed ``pmd_type`` as way of segregation of devices
+ * moved ``numa_node`` and ``devargs`` into ``rte_driver`` from
+ ``rte_pci_driver``. These can now be used by any instantiated object of
+ ``rte_driver``.
+ * added ``rte_device`` class and all PCI and VDEV devices inherit from it
+ * renamed devinit/devuninit handlers to probe/remove to make it more
+ semantically correct with respect to device<=>driver relationship
+ * moved hotplugging support to EAL. Hereafter, PCI and vdev can use the
+ APIs ``rte_eal_dev_attach`` and ``rte_eal_dev_detach``.
+ * helpers and support macros have been renamed to make them more synonymous
+ with their device types
+ (e.g. ``PMD_REGISTER_DRIVER`` => ``RTE_PMD_REGISTER_PCI``)
+ * Device naming functions have been generalized from ethdev and cryptodev
+ to EAL. ``rte_eal_pci_device_name`` has been introduced for obtaining
+ unique device name from PCI Domain-BDF description.
+ * Virtual device registration APIs have been added: ``rte_eal_vdrv_register``
+ and ``rte_eal_vdrv_unregister``.
+
ABI Changes
-----------
.. code-block:: diff
- libethdev.so.4
librte_acl.so.2
librte_cfgfile.so.2
librte_cmdline.so.2
- librte_cryptodev.so.1
+ + librte_cryptodev.so.2
librte_distributor.so.1
+ librte_eal.so.3
+ + librte_ethdev.so.5
librte_hash.so.2
librte_ip_frag.so.1
librte_jobstats.so.1
librte_mbuf.so.2
librte_mempool.so.2
librte_meter.so.1
+ librte_net.so.1
librte_pdump.so.1
librte_pipeline.so.3
librte_pmd_bond.so.1