examples/ip_pipeline: update release notes
[dpdk.git] / doc / guides / rel_notes / release_2_2.rst
index 4fea433..dedf503 100644 (file)
@@ -17,6 +17,16 @@ New Features
 
 * **Added keepalive support to EAL and example application.**
 
+* **Added experimental cryptodev API**
+
+  The cryptographic processing of packet is provided as a preview
+  with two drivers for:
+
+  * Intel QuickAssist devices
+  * Intel AES-NI multi-buffer library
+
+  Due to its experimental state, the API may change without prior notice.
+
 * **Added ethdev API to support IEEE1588.**
 
   Added functions to read, write and adjust system time in the NIC.
@@ -43,6 +53,23 @@ New Features
 
 * **Added RSS dynamic configuration to bonding.**
 
+* **Updated the e1000 base driver.**
+
+  The e1000 base driver was updated with several features including the
+  following:
+
+  * Add new i218 devices
+  * Allow both ULP and EEE in Sx state
+  * Initialize 88E1543 (Marvell 1543) PHY
+  * Add flags to set EEE advertisement modes
+  * Support inverted format ETrackId
+  * Add bit to disable packetbuffer read
+  * Add defaults for i210 Rx/Tx PBSIZE
+  * Check more errors for ESB2 init and reset
+  * Check more NVM read errors
+  * Return code after setting receive address register
+  * Remove all NAHUM6LP_HW tags
+
 * **Added e1000 Rx interrupt support.**
 
 * **Added igb TSO support for both PF and VF.**
@@ -57,6 +84,21 @@ New Features
   * Add 2 new flow director modes on x550.
   * One is MAC VLAN mode, the other is tunnel mode.
 
+* **Updated the i40e base driver.**
+
+  The i40e base driver was updated with several changes including the
+  following:
+
+  *  Added promiscuous on VLAN support
+  *  Added a workaround to drop all flow control frames
+  *  Added VF capabilities to virtual channel interface
+  *  Added Tx Scheduling related AQ commands
+  *  Added additional PCTYPES supported for FortPark RSS
+  *  Added parsing for CEE DCBX TLVs
+  *  Added FortPark specific registers
+  *  Added AQ functions to handle RSS Key and LUT programming
+  *  Increased pf reset max loop limit
+
 * **Added i40e vector RX/TX.**
 
 * **Added i40e Rx interrupt support.**
@@ -71,6 +113,10 @@ New Features
 
 * **Added flow director support in i40e VF.**
 
+* **Added i40e support of early X722 series.**
+
+  Add early X722 support for evaluation only, as the hardware is in A0.
+
 * **Added fm10k vector RX/TX.**
 
 * **Added fm10k TSO support for both PF and VF.**
@@ -90,6 +136,10 @@ New Features
 
   Reduced frequency of Tx tail pointer updates to the NIC.
 
+* **Added support for link status interrupts in mlx4.**
+
+* **Added partial support (TX only) for secondary processes in mlx4.**
+
 * **Added support for Mellanox ConnectX-4 adapters (mlx5).**
 
   The mlx5 poll-mode driver implements support for Mellanox ConnectX-4 EN
@@ -98,6 +148,10 @@ New Features
   Like mlx4, this PMD is only available for Linux and is disabled by default
   due to external dependencies (libibverbs and libmlx5).
 
+* **Added driver for Netronome nfp-6xxx card.**
+
+  Support for using Netronome nfp-6xxx with PCI VFs.
+
 * **Added virtual szedata2 driver for COMBO cards.**
 
   Added virtual PMD for COMBO-100G and COMBO-80G cards.
@@ -115,6 +169,50 @@ New Features
 
 * **Added port hotplug support to xenvirt.**
 
+* **Added ethtool shim and sample application.**
+
+* **Added experimental performance thread example application.**
+
+  The application demonstrates L3 fowarding with different threading
+  models: pthreads, cgroups, or lighweight threads. The example inludes
+  a simple cooperative scheduler.
+
+  Due to its experimental state this application may change without notice.
+  The application is supported only for Linux x86_64.
+
+* **IP pipeline application**
+
+  The following features have been added to ip_pipeline
+  application;
+
+  * Added Multiple Producers Multiple Consumers (MPSC)
+    and fragmentation/reassembly support to software rings.
+
+  * Added dynamic pipeline reconfiguration feature that
+    allows binding pipeline to other threads at runtime
+    using CLI commands.
+
+  * Added Enable/disable of promisc mode from ip_pipeline
+    configuration file.
+
+  * Added check on rx queues and tx queues of each link
+    whether they are used correctly in ip_pipeline
+    configuration file.
+
+  * Added flow id parameters to the flow-classification
+    table entries.
+
+  * Added more functions to the routing pipeline:
+    ARP table enable/disable, Q-in-Q and MPLS encapsulation,
+    add colour (Traffic-class for QoS) to the MPLS tag.
+
+  * Added flow-actions pipeline for traffic metering/marking
+    (for e.g. Two Rate Three Color Marker (trTCM)), policer etc.
+
+  * Modified the pass-through pipeline's actions-handler to
+    implement a generic approach to extract fields from the
+    packet's header and copying them to packet metadata.
+
 
 Resolved Issues
 ---------------
@@ -131,6 +229,100 @@ EAL
 Drivers
 ~~~~~~~
 
+* **e1000/base: Synchronize PHY interface on non-ME systems.**
+
+  On power up, the MAC - PHY interface needs to be set to PCIe, even if
+  cable is disconnected.  In ME systems, the ME handles this on exit from
+  Sx(Sticky mode) state. In non-ME, the driver handles it. Add a check
+  for non-ME system to the driver code that handles that.
+
+* **e1000/base: Increase timeout of reset check.**
+
+  Previously, in check_reset_block RSPCIPHY was polled for 100 ms before
+  determining that the ME veto is set. It's not enough. It need to be increased
+  to 300 ms.
+
+* **e1000/base: Disable IPv6 extension header parsing on 82575.**
+
+  Disable IPv6 options as per hardware limitation.
+
+* **e1000/base: Prevent ULP flow if cable connected.**
+
+  Enabling ulp on link down when cable is connect caused an infinite
+  loop of linkup/down indications in the NDIS driver.
+  After discussed, correct flow is to enable ULP only when cable is
+  disconnected.
+
+* **e1000/base: Support different EEARBC for i210.**
+
+  EEARBC has changed on i210. It means EEARBC has a different address on
+  i210 than on other NICs. So, add a new entity named EEARBC_I210 to the
+  register list and make sure the right one is being used on i210.
+
+* **e1000/base: Fix K1 configuration**
+
+  This patch is for the following updates to the K1 configurations:
+  Tx idle period for entering K1 should be 128 ns.
+  Minimum Tx idle period in K1 should be 256 ns.
+
+* **e1000/base: Fix link detect flow**
+
+  In case that auto-negotiate is not enabled, call
+  e1000_setup_copper_link_generic instead of e1000_phy_setup_autoneg.
+
+* **e1000/base: Fix link check for i354 M88E1112 PHY**
+
+  e1000_check_for_link_media_swap() is supposed to check PHY page 0 for
+  copper and PHY page 1 for "other" (fiber) link. We switched back from
+  page 1 to page 0 too soon, before e1000_check_for_link_82575() is
+  executed and we were never finding link on fiber (other).
+
+  If the link is copper, as the M88E1112 page address is set to 1, it should be
+  set back to 0 before checking this link.
+
+* **e1000/base: Fix beacon duration for i217**
+
+  Fix for I217 Packet Loss issue - The Management Engine sets the FEXTNVM4
+  Beacon Duration incorrectly.  This fix ensures that the correct value will
+  always be set. Correct value for this field is 8 usec.
+
+* **e1000/base: Fix TIPG for non 10 half duplex mode**
+
+  TIPG value is increased when setting speed to 10 half to prevent
+  packet loss. However, it was never decreased again when speed
+  changes. This caused performance issues in the NDIS driver.
+  Fix this to restore TIPG to default value on non 10 half.
+
+* **e1000/base: Fix reset of DH89XXCC SGMII**
+
+  For DH89XXCC_SGMII, write flush leaves registers of this device trashed
+  (0xFFFFFFFF). Add check for this device.
+  Also, after both for Port SW Reset and Device Reset case, platform should
+  wait at least 3ms before reading any registers. Since waiting is
+  conditionally executed only for Device Reset - remove the condition.
+
+* **e1000/base: Fix redundant PHY power down for i210**
+
+  Bit 11 of PHYREG 0 is used to power down PHY. The use of PHYREG 16 is
+  unnecessary any more.
+
+* **e1000/base: fix jumbo frame CRC failures**
+
+  Change the value of register 776.20[11:2] for jumbo mode from 0x1A to 0x1F.
+  This is to enlarge the gap between read and write pointers in the TX Fifo.
+  And replace the magic number with a macro by the way.
+
+* **e1000/base: Fix link flap on 82579**
+
+  Several customers have reported a link flap issue on 82579. The symptoms
+  are random and intermittent link losses when 82579 is connected to specific
+  switches. Issue has been root caused as interoperability problem between
+  the NIC and at least some Broadcom PHYs in the Energy Efficient Ethernet
+  wake mechanism.
+  To fix the issue, we are disabling the Phase Locked Loop shutdown in 100M
+  Low Power Idle. This solution will cause an increase of power in 100M EEE
+  link. It may cost additional 28mW in this specific mode.
+
 * **igb: Fixed IEEE1588 frame identification in I210.**
 
   Fixed issue where the flag PKT_RX_IEEE1588_PTP was not being set
@@ -141,6 +333,10 @@ Drivers
 
   VF needs the PF interrupt support initialized even if not started.
 
+* **igb: Fixed VF MAC address when using with DPDK PF.**
+
+  Assign a random MAC address in VF when not assigned by PF.
+
 * **ixgbe: Fixed issue with X550 DCB.**
 
   Fixed a DCB issue with x550 where for 8 TCs (Traffic Classes), if a packet
@@ -183,6 +379,21 @@ Drivers
   Fixed the issue of not freeing memzone in the call to free the memory for
   adminq DMA.
 
+* **mlx: Fixed driver loading.**
+
+  The mlx drivers were unable to load when built as a shared library,
+  due to a missing symbol in mempool library.
+
+* **mlx4: Performance improvements.**
+
+  Fixed bugs in TX and RX flows that improves mlx4 performance.
+
+* **mlx4: Fixed Tx loss after initialization.**
+
+* **mlx4:  Fixed scattered Tx with too many segments.**
+
+* **mlx4: Fixed memory registration for indirect mbuf data.**
+
 * **vhost: Fixed Qemu shutdown.**
 
   Fixed issue with libvirt ``virsh destroy`` not killing the VM.
@@ -220,14 +431,37 @@ Libraries
 Examples
 ~~~~~~~~
 
+* **l3fwd: Fixed crash with IPv6.**
+
+* **vhost_xen: Fixed compile error.**
+
 
 Other
 ~~~~~
 
+* This release drops compatibility with Linux kernel 2.6.33. The minimum
+  kernel requirement is now 2.6.34.
+
 
 Known Issues
 ------------
 
+* Some drivers do not fill the packet type when receiving.
+  As the l3fwd example application requires this info, the i40e vector
+  driver must be disabled to benefit of the packet type with i40e.
+
+* **Mellanox PMDs (mlx4 & mlx5):**
+
+  * PMDs do not support DPDK integrated shared library.
+
+  * There is performance degradation for small packets when PMD
+    is compiled with SGE_WR_N = 4 compared to the performance when SGE_WR_N = 1.
+    If scattered packets are not used it is recomended
+    to compile PMD with SGE_WR_N = 1.
+
+  * When a Multicast or Broadcast packet is sent to the SR-IOV mlx4 VF,
+    it is returned back to the port.
+
 
 API Changes
 -----------
@@ -239,6 +473,9 @@ API Changes
   structures: rte_eth_dcb_rx_conf, rte_eth_dcb_tx_conf,
   rte_eth_vmdq_dcb_conf, rte_eth_vmdq_dcb_tx_conf.
 
+* The rte_eth_rx_queue_count() function now returns "int" instead of "uint32_t"
+  to allow the use of negative values as error codes on return.
+
 * The function rte_eal_pci_close_one() is removed.
   It was replaced by rte_eal_pci_detach().
 
@@ -255,7 +492,6 @@ API Changes
 
 * The devargs union field virtual is renamed to virt for C++ compatibility.
 
-
 ABI Changes
 -----------
 
@@ -274,6 +510,11 @@ ABI Changes
 * The new fields rx_desc_lim and tx_desc_lim are added into rte_eth_dev_info
   structure.
 
+* For debug builds, the functions rte_eth_rx_burst(), rte_eth_tx_burst()
+  rte_eth_rx_descriptor_done() and rte_eth_rx_queue_count() will
+  no longer be separate functions in the DPDK libraries. Instead, they will
+  only be present in the rte_ethdev.h header file.
+
 * The maximum number of queues per port CONFIG_RTE_MAX_QUEUES_PER_PORT is
   increased to 1024.
 
@@ -287,12 +528,27 @@ ABI Changes
 * librte_table LPM: A new parameter to hold the table name will be added to
   the LPM table parameter structure.
 
+* librte_table hash: The key mask parameter is added to the hash table
+  parameter structure for 8-byte key and 16-byte key extendible bucket
+  and LRU tables.
+
 * librte_port: Macros to access the packet meta-data stored within the packet
   buffer has been adjusted to cover the packet mbuf structure.
 
 * librte_cfgfile: Allow longer names and values by increasing the constants
   CFG_NAME_LEN and CFG_VALUE_LEN to 64 and 256 respectively.
 
+* vhost: a new field enabled is added to the vhost_virtqueue structure.
+
+* vhost: a new field virt_qp_nb is added to virtio_net structure, and the
+  virtqueue field is moved to the end of virtio_net structure.
+
+* vhost: a new operation vring_state_changed is added to virtio_net_device_ops
+  structure.
+
+* vhost: a few spaces are reserved both at vhost_virtqueue and virtio_net
+  structure for future extension.
+
 
 Shared Library Versions
 -----------------------
@@ -317,7 +573,7 @@ The libraries prepended with a plus sign were incremented in this version.
    + librte_mbuf.so.2
      librte_mempool.so.1
      librte_meter.so.1
-     librte_pipeline.so.1
+   + librte_pipeline.so.2
      librte_pmd_bond.so.1
    + librte_pmd_ring.so.2
    + librte_port.so.2
@@ -327,4 +583,4 @@ The libraries prepended with a plus sign were incremented in this version.
      librte_sched.so.1
    + librte_table.so.2
      librte_timer.so.1
-     librte_vhost.so.1
+   + librte_vhost.so.2