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

This release is validated on QDMA4.0 2020.1 Patch based example design

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
- Interrupts
	- 2048 MSI-X Vectors
	- Up to 8 MSI-X per Function
	- Interrupt Aggregation
	- User Interrupts
	- Error Interrupts
- C2H Stream Completion queue entry coalescing
- Supports SR-IOV with up to 4 Physical Functions(PF) and 252 Virtual Functions(VF)
- Allows only Privileged/Physical functions to program the contexts and registers
- Function Level Reset(FLR) Support
- Mailbox Support
- Descriptor bypass(8, 16, 32 descriptor sizes)
- Descriptor Prefetching
- Asynchronous and Synchronous IO support
- ST H2C to C2H and C2H to H2C loopback support
- Driver configuration through sysfs
- Zero byte transfer support
- Dynamic queue configuration
- Dynamic driver configuration

2018.3 Features
---------------
- Auto mode support for PF & VF driver
	- MM and ST H2C requests are services in poll mode
	- ST C2H is services in Interrupt Aggregation mode
- Support 64B descriptor format in bypass mode
- Support for Completion queue descriptors of 64 bytes size
- Support flexible BAR mapping for QDMA configuration register space
- Indirect programming of FMAP registers
- Support disabling overflow check in completion ring
- Version for SW and HW
- ECC Support
- Flexible interrupt allocation between PF/VF
- Greater than 32 vectors per function
- Legacy Interrupt Support
- VF driver support in direct and indirect interrupt mode

2019.1 Features
---------------
- Interrupt support for Mailbox events
- Support Completions in Memory mapped mode
- Interoperability between Linux driver (as PF/VF) and DPDK driver (as PF/VF)
- Driver restructuring to partition QDMA access code such that it can be used across different drivers

2019.2 Features
---------------
- Support for PF device removal when its VF devices are active
- Support for Interrupt moderation and adaptive counter threshold
- Support for configurable number of User and Data interrupts
- Added user logic pluggable interfaces for processing the descriptors and completions
- Added new interfaces for updating the Consumer Index and Producer Index

2020.1 Updates
--------------
- Modified the directory structure for driver source code.
- Application names are changed as "dma-ctl", "dma-perf", "dma-to-device", "dma-from-device"
- Support QDMA4.0 context and register changes
- Common driver to support QDMA3.1 and QDMA4.0 designs
- Support multiple bus numbers on single card
- 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 
- Modified the driver interface to pass the module parameters for more than 256 functions
- Support for Function Level Reset (FLR) of both PFs and VFs.

2020.1 Patch Updates
--------------------
- Resolved HW errors observed with QDMA4.0 MM only design
- Addressed VF performance issues.

KNOWN ISSUES:
=============
- In interrupt mode, Sometimes completions are not received when C2H PIDX updates are held for 64 descriptors
- On QDMA4.0 2020.1 design, HW error observed during the probe of the VFs

DRIVER LIMITATIONS:
===================
- Driver compilation on Fedora 28 with gcc8.1 results in compilation warnings
- 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.
- FLR is not supported in the Driver for CentOS because linux kernels provided in CentOS versions does not support the driver call back registration for FLR functionality
