Multi Channel DMA Intel® FPGA IP for PCI Express* User Guide

ID 683821
Date 1/29/2024
Document Table of Contents

8. Software Programming Model

The Multi Channel DMA IP for PCI Express Linux software consists of the following components:
  • Test Applications
  • User space library for custom driver (libmqdma)
  • DPDK Poll mode based driver
  • PCIe end point driver (ifc_uio)
  • Kernel mode network device driver (ifc_mcdma_net)

The software files are created in the Multi Channel DMA IP for PCI Express design example project folder when you generate an Multi Channel DMA IP for PCI Express design example from the IP Parameter Editor as shown below. The software configuration is specific to the example design generated by Intel® Quartus® Prime.

Multi Channel DMA Intel FPGA IP for PCI Express design example project folder has multiple software directories depending on the Hard IP mode selected (1x16, 2x8 or 4x4) for Intel® Quartus® Prime Pro Edition 23.4 version and onwards. Each software folder is specific to each port:
  • p0_software folder is generated only for 1x16 Hard IP modes.
  • p1_software folder is generated only for 2x8 Hard IP modes.
  • p2_software and p3_software folders are generated only for 4x4 Hard IP modes.
Note: You must use the corresponding software folder with each IP port.
Figure 46. Software Folder Structure
Table 97.  MCDMA IP Software Driver Differentiation
Driver Description Use Case / Application
  • Customized user space MCDMA library, which can be installed in the form of a static library file and corresponding test utility.
  • Supports accessing the device by using VFIO and UIO kernel frameworks.
  • Sample performance-based application developed to demonstrate the performance and usage.

If you have your own user space platform to use this driver with custom APIs.

API information is shared in this User Guide

Example: Any user space application which needs DMA features.

  • Poll mode MCDMA driver by using DPDK infrastructure and example test application are developed.
  • DPDK Patches are provided to support MSI-X and address some error cases
  • Supports both UIO and VFIO kernel frameworks, which can be enabled at DPDK build time.

If you use DPDK as your platform, you can integrate this PMD with your DPDK framework to perform DMA.

Example: DPDK based NFV applications

  • MCDMA network driver exposes the device as ethernet device. (ifconfig displays the device as ethernet device).
  • DMA operations can be initiated in kernel mode and all the TCP/IP applications can used.
  • Use kernel base framework for DMA memory management.

All TCP/IP applications can use this driver. iperf, netperf, scapy use this driver.