Multi Channel DMA IP for PCI Express* Design Example User Guide
ID
683517
Date
8/04/2025
Public
3.5.1. Hardware Requirements
3.5.2. Software Requirements
3.5.3. Set Up the Hardware and Program the FPGA
3.5.4. Configuration Changes from BIOS
3.5.5. Installing the Required Kernel Version for Ubuntu v24.04
3.5.6. Set the Boot Parameters
3.5.7. MCDMA Custom Driver
3.5.8. MCDMA DPDK Poll Mode Driver
3.5.9. MCDMA Kernel Mode Network Device Driver
3.5.8.3.1. Avalon-MM DMA (AVMM DMA)
- After completing the instructions outlined in Prerequisites, navigate to the perfq folder:
$ cd dpdk-stable/build/examples/mcdma-test/perfq
- Verify the AVMM DMA design example variant using the following command:
$ sudo ./build/mcdma-test -- -b 0000:01:00.0 -p 32768 -l 5 -i -u -c 2 \ -d 2 -a 4
Configuration:
- bdf (-b 0000:01:00.0)
- 2 channels (-c 2)
- Loopback mode (-u )
- Payload length of 32768 bytes in each descriptor (-p 32768)
- Time limit set to 5 (-l 5)
- Dump the progress log every 2 seconds (-d 2)
- One thread per queue (-a 4)
Figure 41. Example Command Output for AVMM

Note: The MCDMA IP can be reset using the following command:
$ sudo ./build/mcdma-test -- -b <bdf> -e
DMA Test Beyond 256 Channels
If the design example is generated with the number of channels greater than 256, follow this procedure to run a DMA test.
- Define the following software flag in p0_software/dpdk/dpdk/patches/v21.11.2/dpdk-stable/drivers/net/mcdma/rte_pmd_mcdma.h
#define IFC_MCDMA_DIDF
- Configure the memory zone in p0_software/dpdk/dpdk/patches/v21.11.2/dpdk-stable/config/rte_config.h
#define RTE_MAX_MEMZONE 20480
- Define the following software flag in p0_software/dpdk/dpdk/patches/v21.11.2/dpdk-stable/examples/mcdma-test/perfq/meson.build
-DIFC_MCDMA_SINGLE_FUNC
- Rebuild the DPDK application using the following commands for the new settings to take effect.
$ cd p0_software/dpdk/dpdk/patches/v21.11.2/dpdk-stable/
$ sudo meson build --reconfigure
$ sudo DESTDIR=install ninja -C build install
$ cd build
$ sudo meson configure -Dexamples=mcdma-test/perfq \ -Denable_kmods=true
$ sudo ninja
- Navigate to the perfq folder:
$ cd dpdk-stable/build/examples/mcdma-test/perfq
- Verify the AVMM DMA design example variant using the following command.
$ sudo ./build/mcdma-test -- -b 0000:38:00.0 -p 64 -l 5 -u \ -c 512 -d 2 -a 4
Configuration:
- 512 channels (-c 512)
- Loopback mode (-u)
- Payload length of 64 bytes in each descriptor (-p 64)
- Time limit set to 5 (-l 5)
- Dump the progress log every 2 seconds (-d 2)
- Total of 4 threads (-a 4)
Figure 42. Results of DMA Test with 512 Channels