DPAA2 DPIO (資料路徑 I/O) 概述¶
- 版權:
© 2016-2018 NXP
本文件概述了 Freescale DPAA2 DPIO 驅動程式
簡介¶
DPAA2 DPIO(資料路徑 I/O)是一個硬體物件,它提供介面以將幀排隊和出隊到/從網路介面和其他加速器。 DPIO 還為網路介面提供硬體緩衝池管理。
本文件概述了 Linux DPIO 驅動程式、其子元件及其 API。
有關 DPAA2 的一般概述以及 Linux 中通用 DPAA2 驅動程式架構,請參閱 DPAA2(資料路徑加速架構 Gen2)概述。
驅動程式概述¶
DPIO 驅動程式繫結到在 fsl-mc 總線上發現的 DPIO 物件,並提供以下服務:
允許其他驅動程式(例如乙太網驅動程式)為其各自的物件排隊和出隊幀
允許驅動程式在佇列或通道上有資料可用時註冊資料可用性通知的回撥
允許驅動程式管理硬體緩衝池
- Linux DPIO 驅動程式由 3 個主要元件組成:
DPIO 物件驅動程式——管理 DPIO 物件的 fsl-mc 驅動程式
DPIO 服務——為其他 Linux 驅動程式提供服務的 API
QBman 門戶介面——傳送門戶命令,獲取響應
fsl-mc other bus drivers | | +---+----+ +------+-----+ |DPIO obj| |DPIO service| | driver |---| (DPIO) | +--------+ +------+-----+ | +------+-----+ | QBman | | portal i/f | +------------+ | hardware
下圖顯示了 DPIO 驅動程式元件如何與其他 DPAA2 Linux 驅動程式元件配合使用
+------------+
| OS Network |
| Stack |
+------------+ +------------+
| Allocator |. . . . . . . | Ethernet |
|(DPMCP,DPBP)| | (DPNI) |
+-.----------+ +---+---+----+
. . ^ |
. . <data avail, | |<enqueue,
. . tx confirm> | | dequeue>
+-------------+ . | |
| DPRC driver | . +--------+ +------------+
| (DPRC) | . . |DPIO obj| |DPIO service|
+----------+--+ | driver |-| (DPIO) |
| +--------+ +------+-----+
|<dev add/remove> +------|-----+
| | QBman |
+----+--------------+ | portal i/f |
| MC-bus driver | +------------+
| | |
| /soc/fsl-mc | |
+-------------------+ |
|
=========================================|=========|========================
+-+--DPIO---|-----------+
| | |
| QBman Portal |
+-----------------------+
============================================================================
DPIO 物件驅動程式 (dpio-driver.c)¶
dpio-driver 元件在 fsl-mc 匯流排中註冊以處理“dpio”型別的物件。 probe() 的實現處理 DPIO 的基本初始化,包括 DPIO 區域(QBman SW 門戶)的對映以及初始化中斷和註冊 irq 處理程式。 dpio-driver 使用 dpio-service 註冊探測到的 DPIO。
DPIO 服務 (dpio-service.c, dpaa2-io.h)¶
dpio 服務元件為 DPAA2 驅動程式(例如乙太網驅動程式)提供排隊、通知和緩衝區管理服務。 系統通常為每個 CPU 分配 1 個 DPIO 物件,以允許跨所有 CPU 同時進行排隊操作。
- 通知處理
dpaa2_io_service_register()
dpaa2_io_service_deregister()
dpaa2_io_service_rearm()
- 排隊
dpaa2_io_service_pull_fq()
dpaa2_io_service_pull_channel()
dpaa2_io_service_enqueue_fq()
dpaa2_io_service_enqueue_qd()
dpaa2_io_store_create()
dpaa2_io_store_destroy()
dpaa2_io_store_next()
- 緩衝池管理
dpaa2_io_service_release()
dpaa2_io_service_acquire()
QBman 門戶介面 (qbman-portal.c)¶
qbman-portal 元件提供 API 來執行低階硬體位操作,例如:
初始化 Qman 軟體門戶
構建和傳送門戶命令
門戶中斷配置和處理
qbman-portal API 不對其他驅動程式公開,僅由 dpio-service 使用。
其他 (dpaa2-fd.h, dpaa2-global.h)¶
幀描述符和分散-收集定義以及用於操作它們的 API 在 dpaa2-fd.h 中定義。
出隊結果結構和解析 API 在 dpaa2-global.h 中定義。