Marvell CN10K DMA 数据包接口 (DPI) 驱动程序

概述

DPI 是 Marvell CN10K 芯片中的一个 DMA 数据包接口硬件模块。DPI 硬件包括一个物理功能 (PF)、其虚拟功能、邮箱逻辑以及一组 DMA 引擎和 DMA 命令队列。

DPI PF 功能是一个管理功能,它服务于来自其 VF 功能的邮箱请求,并为其 VF 功能配置 DMA 引擎资源。

mrvl_cn10k_dpi.ko 杂项驱动程序在 DPI PF 设备上加载,并服务于 VF 设备提交的邮箱命令,并相应地初始化 DMA 引擎和 VF 设备的 DMA 命令队列。此外,驱动程序创建 /dev/mrvl-cn10k-dpi 节点,以设置 DMA 引擎和 PEM(PCIe 接口)端口属性,例如 fifo 长度、molr、mps 和 mrrs。

DPI PF 驱动程序只是一个管理驱动程序,用于设置其 VF 设备的队列并配置硬件资源,它不能启动任何 DMA 操作。只有 VF 设备才配置有 DMA 功能。

驱动程序位置

drivers/misc/mrvl_cn10k_dpi.c

驱动程序 IOCTL

DPI_MPS_MRRS_CFG ioctl 设置 DMA 引擎所连接的 pem 端口的最大有效负载大小和最大读取请求大小参数。

DPI_ENGINE_CFG ioctl 设置 DMA 引擎的 fifo 大小和最大未完成加载请求阈值。

用户空间代码示例

DPI VF 设备使用 vfio-pci 驱动程序从用户空间应用程序中探测和访问。以下是一个示例 dpi dma 应用程序,演示应用程序如何使用 DPI PF 内核驱动程序的邮箱和 ioctl 服务。

https://github.com/MarvellEmbeddedProcessors/dpi-sample-app