RELEASE: 2020.1 Patch
=====================

This release is based on DPDK v19.11 and contains QDMA poll mode driver and
QDMA test application. This release is validated on QDMA4.0 2020.1 Patch based
example design.

This release includes a patch file for dpdk-pktgen v19.12.0 that extends
dpdk-pktgen application to handle packets with packet sizes more than 1518 bytes
and it disables the packet size classification logic in dpdk-pktgen to remove
application overhead in performance measurement.
This patch is used for performance testing with dpdk-pktgen application.

The driver is validated against dpdk-pktgen and testpmd applications for API compliance.

SUPPORTED FEATURES:
===================
2018.2 Features
---------------
- Support for both the AXI4 Memory Mapped(MM) and AXI4 Streaming(ST) Interfaces
- 2048 Queue Sets
	- 2048 H2C Descriptor Rings
	- 2048 C2H Descriptor Rings
	- 2048 C2H Completion Rings
- Supports Polling Mode
- Supports SR-IOV with 4 Physical Functions(PF) and 252 Virtual Functions(VF)
- Allows Only Privileged/Physical functions to program the contexts and registers
- Mailbox Support
- Supports Descriptor Prefetch
- ST H2C to C2H and C2H to H2C loopback support
- Zero-byte transfer support

2018.3 Features
---------------
- Descriptor (8, 16, 32, 64 bytes) bypass support
- Support for Completion queue descriptors of 64 bytes size
- Support flexible BAR mapping for QDMA configuration register space
- Support disabling overflow check in completion ring
- Indirect programming of FMAP registers
- Version for SW and HW

2019.1 Features
---------------
- Support DPDK v18.11 LTS
- Interrupt support for Mailbox events
- Support Completions in Memory mapped mode
- Interoperability between Linux driver (as PF/VF) and DPDK driver (as PF/VF)
- Error monitoring and error logging
- Driver restructuring to partition QDMA access code such that it can be used across different drivers
- Device configuration through additional driver APIs

2019.2 Features
---------------
- Support reset of a VF device (via rte_eth_dev_reset() API)
- Support PF device removal when its VF device is active
- Split user logic related data path handling code to qdma_user.c and qdma_user.h
- Bug Fixes
	- Correct the PF and VF function ID used in the driver in accordance with HW
	- Fix dma_from_device command in qdma_testapp application that requests more data from user logic than specified
	- Fix memory offset calculation in dma_from_device and dma_to_device command in qdma_testapp application for MM mode

2020.1 Updates
--------------
- Support DPDK v19.11 LTS
- Support QDMA4.0 context and register changes
- Common driver to support QDMA3.1 and QDMA4.0 designs
- Updated and validated the example design with marker changes for QDMA4.0 and without marker changes for QDMA3.1
- Added support for more than 256 functions 
- Support multiple bus numbers on single card
- CPU resource optimization in Tx and Rx data path

2020.1 Patch Updates
--------------------
- Resolved HW errors observed with QDMA4.0 MM only design
- Verified QDMA DPDK software with IOVA=VA mode by enabling hugepage allocation matching support in DPDK
  (i.e. by specifying the --match-allocations command-line switch to the EAL).

KNOWN ISSUES:
=============
- Function Level Reset(FLR) of PF device when VFs are attached to this PF results in mailbox communication failure
- DPDK C2H and Forwarding performance values for 8 queue is lesser compared to 4 queue case for both PF and VF.

DRIVER LIMITATIONS:
===================
- Big endian systems are not supported
- For optimal QDMA streaming performance, packet buffers of the descriptor ring should be aligned to at least 256 bytes.