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

ID 683821
Date 10/29/2021
Public

A newer version of this document is available. Customers should click here to go to the newest version.

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
  • Chardev based kernel mode driver (ifc_mcdma)
  • 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.

Figure 31. Software Folder Structure
Table 71.  MCDMA IP Software Driver Differentiation
Driver Description Use Case / Application
Custom
  • 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.

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.

DPDK
  • 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

Kernel mode (No SRIOV)
  • MCDMA kernel mode driver.
  • DMA operations are initiated in kernel mode and the driver uses chardev interface to expose the device
  • Memory allocated in user space can be DMAed by using chardev system calls

If you use chardev APIs such as open, close, poll, read, write, readv, writev, you can use this driver.

Example: Applications using file specific operations.

Netdev (No SRIOV, Multi PF with 1 channel in each PF)
  • 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.