WDI TX 路徑
TX 路徑元件
下圖顯示 TX 路徑元件。
TX 描述元
TAL 會使用目標 TX 描述元 (TTD) 來通知畫面的大小和位置目標。
不同的目標 WLAN 裝置可能會有不同的 TTD 定義。 因此,TTD 程式設計是根據 WDI 提供的資訊在 TAL 內完成。 為了程式設計 TTD,WDI 會指定 NET_BUFFER_LIST (NBL) ,而框架中繼資料,例如框架識別碼、擴充 TID、適用的工作卸載和加密豁免動作,都可以存取。
TAL 會將 TTD 和 TX 框架傳輸至目標。 從框架標頭內 TTD 的中繼資料和欄位,目標可以決定傳輸框架的預定收件者,以及如何傳輸。
最後,目標會傳輸框架,並在傳輸 (且可能傳輸) 完成時通知主機。 目標會使用 TX 完成訊息,指定傳輸是否成功,以及傳輸完成的畫面識別碼。
基本作業
傳輸資料框架牽涉到 WLAN 主機 TX 軟體內的下列步驟。
- WDI 會從 NDIS 取得 NBL,並在 WDI 以 PeerTID 佇列模式運作時執行 TX 分類 () 。
- NBL 會透過查詢 TAL 來連結到取得的 TTD。 為了有效率,TAL 可能會從外觀清單預先配置 TTD。
- TxMgr 會根據 TargetPriorityQueueing 模式,根據 PeerTID 或埠來排入傳輸框架佇列。
- TxMgr 提供 NBL 和附加的 TTD 至 TxEngine,接著會將它傳遞至 TIL 以傳送至目標。 例如,TxEngine/TIL 不會在 DMA) 之前,將框架排入佇列 (。
- TxEngine 會使用傳輸完成 (,指出 TxEngine/target 所擁有的畫面格更新 TX 狀態,並在適用) 時傳輸完成指示。
- 當框架同時為 「傳輸完成」 (,且如有需要,TX Complete) ,TxMgr 會使用畫面識別碼查閱 NBL、將 TTD 傳回至 TxEngine 的集區,並將框架傳送至 NDIS。
主機 - 目標 TX 流量控制
TX 流量控制是必要的,以避免造成 TIL 和目標資源過重。
目標點數配置和暫停/繼續機制
TxMgr 會根據以點數為基礎的配置,將 TX 框架排入佇列,並將其傳輸至目標。 目標會提供 TX 引擎信用更新指示,以指定目標上其他畫面格可用的資源。 目標上每個框架所使用的點數,都是在 TTD 程式設計時決定。 從指定佇列傳送作業傳遞至 TxEngine 的框架數目受限於可用的點數,以及 FIFO 順序中行首的框架成本。
對 TxMgr,點數具有抽象單位。 Target/TxEngine 應該使用對特定實作最有用的點數定義。
TAL 會使用暫停/繼續指示來停止/繼續來自指定埠的 TX 流量,或以特定 TID 為目標的特定接收者。 如果 TxEngine 在可用點數小於最大框架成本時取得傳送要求,TxEngine 會將 TxMgr 的流量暫停 (所有埠) ,直到目標下一次信用額度更新為止。
當 WDI 處於埠佇列模式 (TargetPriorityQueueing 等於 TRUE) 時,只有在埠或介面卡層級允許/定義暫停/繼續指示,因為沒有 Peer、TID 分類和佇列。
限制傳送作業的最大框架計數
若要避免 TIL (中的暫存佇列需求,例如 DMA 速率比對佇列) ,TxMgr 在傳送作業中傳遞至 TxEngine 的框架數目會受限於 TxEngine 所指定的最大計數。 此限制可能專屬於 TxMgr 嘗試在一段時間內傳送和變更的佇列,因為 TIL 中有更多可用空間。
主機 - 目標 TX 傳輸排程
TxMgr 會使用單一 TX 執行緒將框架提交至 TxEngine。 只要有待處理佇列,TX 執行緒會主動將框架提交至 TxEngine。
TxMgr 會根據佇列模式,以下列方式排程佇列。
針對 WDI 埠佇列 (TargetPriorityQueueing 等於 TRUE) ,TxMgr 服務會使用「迴圈配置資源」 (DRR) 跨所有待處理埠佇列進行佇列。
針對 WDI PeerTID 佇列 (TargetPriorityQueueing 等於 FALSE) ,TxMgr 服務會根據 AC 優先順序排入佇列,而不會耗盡任何佇列,並確保 TIL 和目標中的任何瓶頸資源都會以公平的方式在 RA-TID 資料流程之間共用。 它可防止緩慢的資料流程耗用不相等的這類資源分享。
一般而言,排程器會使用 DRR 來選擇要從任何指定時間傳輸的對等 TID 佇列。 針對每個佇列,DRR 會建立量子參數,以限制每個四捨五入中從佇列傳送的八位數。 TxEngine 會在每個涉及佇列的傳送作業中更新此參數,以符合一或兩個傳輸機會的預期大小。
一般而言,DRR 排程器只會服務與最高優先順序待處理 AC 相關聯的 RA-TID 佇列。 為了避免耗盡,排程器會定期在所有待處理佇列上執行 DRR。
IHV 保留擴充 TID 的優先順序對應
IHV 在 IHV 保留範圍中使用擴充 TID 插入的框架,會對應至下列擴充 AC,以便進行優先順序排程。 資料表依優先順序增加的順序。
擴充 TID | 擴充 AC |
---|---|
17 | AC_BK |
18 | AC_BE |
19 | AC_VI |
20 | AC_VO |
21 | AC_PR0 |
22 | AC_PR1 |
23 | AC_PR2 |
24 | AC_PR3 |
針對 WDI 埠佇列,不論擴充 TID 為何,所有插入的框架都會平均處理。
TxMgr-TxEngine介面
對 TxEngine 的要求
- MINIPORT_WDI_TX_ABORT
- MINIPORT_WDI_TX_DATA_SEND
- MINIPORT_WDI_TX_TAL_QUEUE_IN_ORDER
- MINIPORT_WDI_TX_TAL_SEND
- MINIPORT_WDI_TX_TAL_SEND_COMPLETE
- MINIPORT_WDI_TX_TARGET_DESC_DEINIT
- MINIPORT_WDI_TX_TARGET_DESC_INIT
TxEngine 的指示
- NDIS_WDI_TX_DEQUEUE_IND
- NDIS_WDI_TX_TRANSFER_COMPLETE_IND
- NDIS_WDI_TX_SEND_COMPLETE_IND
- NDIS_WDI_TX_QUERY_RA_TID_STATE
TX 特定控制要求
TX 特定控制項指示
- NDIS_WDI_TX_SEND_PAUSE_IND
- NDIS_WDI_TX_SEND_RESTART_IND
- NDIS_WDI_TX_RELEASE_FRAMES_IND
- NDIS_WDI_TX_INJECT_FRAME_IND