RELEASE: 2024.1
=================

This release is based on DPDK v20.11, v21.11, v22.11 and v23.11 and
contains QDMA poll mode driver and QDMA test application.

This release is validated for
	- On VCU118 for QDMA5.0 2022.1 example design
	- On XCVP1202 for CPM5 2022.1 example design
	- On XCVC1902 for CPM4 2022.1 example design

This release includes patch files for dpdk-pktgen v20.12.0, v22.04.1 and v24.03.1 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.

RELEASE: 2023.2.1
=================

This release is based on DPDK v20.11, v21.11 and v22.11 and
contains QDMA poll mode driver and QDMA test application.

This release is validated for
	- On VCU1525 for QDMA5.0 2022.1 example design
	- On VCU1525 for QDMA4.0 2020.2 example design
	- On VCU1525 for QDMA3.1 2019.2 example design
	- On XCVP1202 for CPM5 2022.1 example design
	- On XCVC1902 for CPM4 2022.1 example design

This release includes patch files for dpdk-pktgen v20.12.0 and v22.04.1 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).

2020.2 Updates
--------------
- Added support for detailed register dump
- Added support for post processing HW error messages
- Added support for Debug mode and Internal only mode
- Resolved the issue related to mbuf packet length
- Fixed VF FMAP programming of qmax issue by setting qmax to the actual user configured total queue number

2020.2.1 Updates
----------------
- Migrated qdma dpdk driver to use DPDK framework v20.11

2022.1 Updates
--------------
CPM5
	- FMAP context dump
	- Debug register dump for ST and MM Errors
	- Dual Instance support

2022.1.1 Patch Updates
----------------------
- Added VF 4K queues support for CPM5 design. This feature is applicable only when corresponding RTL support is added.

2022.1.2 Patch Updates
----------------------
- Added support for QDMA5.0 which has some performance optimization changes compared to QDMA4.0

2022.1.3 Patch Updates
----------------------
- Added PF/VF 4K queues support for CPM5 design. This feature is applicable only when corresponding RTL support is added.

2023.1.0 Updates
----------------
- Added support for DPDK framework v21.11 and v22.11 and retained the backward compatibility for v20.11
- Enabled 128 bit SIMD vectorization for Intel and AMD platforms by default for qdma Receive and Transmit APIs
- Added IO memory barriers for H2C/C2H producer index and completion ring consumer index updates

2023.1.1 Updates
----------------
- Optimized the driver code and HW register settings for performance improvements

2023.1.2 Updates
----------------
- Optimized dpdk PMD and HW register settings for CPM5 performance improvements

2023.2.0 Updates
----------------
- Added driver support for CPM4 design.
- Added support for Tx and Rx queue statistics to enhance debugging capabilities
- Added support for latency measurements in Tx and Rx data path to enhance debugging capabilities

2023.2.1 Updates
----------------
- Added support for latency measurements in Tx and Rx data path for VF

2024.1 Updates
--------------
- Migrated QDMA dpdk driver to Support DPDK framework v23.11

KNOWN ISSUE:
============
- CPM4:
	- HW pdi limitation
		- VF functionality with vfio-pci on host is not verified
		- VF functionality on VM is not verified
		- Forwarding performance numbers are not reaching 100Gbps and capping at 98.8Gbps

- CPM5:
	- Smaller packet forwarding performance optimizations are in progress and report will be updated in subsequent releases

- All Designs
	- Function Level Reset(FLR) of PF device when VFs are attached to this PF results in mailbox communication failure


DRIVER LIMITATIONS:
===================
- CPM5 Only
	- VF functionality is verified with 240 VF's as per CPM5 HW limitation

- All Designs
	- 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.


/*-
 *   BSD LICENSE
 *
 *   Copyright (c) 2017-2022 Xilinx, Inc. All rights reserved.
 *   Copyright (c) 2022-2024, Advanced Micro Devices, Inc. All rights reserved.
 *
 *   Redistribution and use in source and binary forms, with or without
 *   modification, are permitted provided that the following conditions
 *   are met:
 *
 *     * Redistributions of source code must retain the above copyright
 *       notice, this list of conditions and the following disclaimer.
 *     * Redistributions in binary form must reproduce the above copyright
 *       notice, this list of conditions and the following disclaimer in
 *       the documentation and/or other materials provided with the
 *       distribution.
 *     * Neither the name of the copyright holder nor the names of its
 *       contributors may be used to endorse or promote products derived
 *       from this software without specific prior written permission.
 *
 *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 *   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 *   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 *   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 *   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 *   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 *   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 *   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
