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 服务。