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¶
:c:macro::DPI_MPS_MRRS_CFG ioctl,用于设置 DMA 引擎所连接的 PEM 端口的最大载荷大小和最大读取请求大小参数。
:c:macro::DPI_ENGINE_CFG ioctl,用于设置 DMA 引擎的 FIFO 大小和最大未完成加载请求阈值。
用户空间代码示例¶
DPI VF 设备通过 vfio-pci 驱动程序从用户空间应用程序中探测和访问。下面是一个 DPI DMA 应用程序示例,演示了应用程序如何使用 DPI PF 内核驱动程序中的邮箱和 ioctl 服务。