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

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