WDI TX パス

TX パス コンポーネント

次の図は、TX パス コンポーネントを示しています。

wdi tx path.

TX 記述子

TAL はターゲット TX 記述子 (TTD) を使用して、フレームのサイズと位置をターゲットに通知します。

ターゲット WLAN デバイスによって TTD の定義が異なる場合があります。 そのため、TTD プログラミングは、WDI によって提供される情報に基づいて TAL 内で行われます。 TTD をプログラムするために、WDI は NET_BUFFER_LIST (NBL) を指定します。この NBL を使用して、フレーム ID、拡張 TID、適用されるタスク オフロード、暗号化除外アクションなどのフレーム メタデータにアクセスできます。

TAL は TTD と TX フレームをターゲットに転送します。 TTD のメタデータとフレームのヘッダー内のフィールドから、ターゲットは送信フレームの対象の受信者と送信方法を決定できます。

最終的に、ターゲットはフレームを送信し、転送 (および場合によっては送信) が完了するとホストに通知します。 ターゲットは、送信が成功したかどうかを示す TX 完了メッセージと、送信が完了したフレームの ID を使用します。

基本的な操作

データ フレームの送信には、WLAN ホスト TX ソフトウェア内での次の手順が含まれます。

  1. WDI は NDIS から NBL を取得し、TX 分類を実行します (WDI が PeerTID キュー モードで動作している場合)。
  2. NBL は、TAL に対するクエリによって取得された TTD にリンクされます。 効率を高めるために、TAL はルックアサイド リストから TTD を事前に割り当てる場合があります。
  3. TxMgr は、TargetPriorityQueueing モードに応じて、PeerTID またはポートに基づいて送信フレームをキューに入れます。
  4. TxMgr は、NBL と添付された TTD を TxEngine に提供し、TxEngine はターゲットに転送するためにそれを TIL に渡します。 TxEngine/TIL は、(DMA で使用可能にする前などに) フレームをキューに入れません。
  5. TxEngine は、転送完了 (および該当する場合は送信完了) の指示を使用して、TxEngine/ターゲットが所有するフレームの更新された TX 状態を示します。
  6. フレームが転送完了 (および必要に応じて TX 完了) になると、TxMgr はフレーム ID を使用して NBL を検索し、TTD を TxEngine のプールに戻して、NDIS へのフレームの送信を完了します。

ホストとターゲット間の TX フロー制御

TX フロー制御は、TIL とターゲット リソースの過負荷を回避するために必要となります。

ターゲットクレジット スキームと一時停止/再開メカニズム

TxMgr は、クレジットベースのスキームに従って、TX フレームをキューに入れ、ターゲットに転送します。 ターゲットは、ターゲット上の追加フレームで使用可能なリソースを指定するクレジット更新指示を TX エンジンに提供します。 ターゲット上の各フレームで使用されるクレジットの数は、TTD プログラミング時に決定されます。 特定のキューからの送信操作の一貫として TxEngine に渡されるフレームの数は、使用可能なクレジットと、FIFO の順序で行の先頭にあるフレームのコストによって制限されます。

TxMgr のクレジットには抽象単位があります。 ターゲット/TxEngine は、特定の実装に最も役立つクレジットの定義を使用する必要があります。

TAL は一時停止/再開指示を使用して、指定されたポートからの TX トラフィック、または指定された TID を持つ特定の受信者宛ての TX トラフィックのフローを停止/再開します。 TxEngine は、使用可能なクレジットが最大フレーム コストより少ない間に送信要求を受け取ると、ターゲットからの次のクレジット更新まで、TxMgr からのトラフィックを (すべてのポートで) 一時停止します。

WDI がポート キュー モード (TargetPriorityQueueing が TRUE) の場合、ピア、TID 分類、キューがないため、一時停止/再開指示はポートまたはアダプター レベルでのみ許可/定義されます。

送信操作の最大フレーム数の制限

TIL 内の一時キュー (DMA 速度照合キューなど) の必要性を避けるために、TxMgr が送信操作で TxEngine に渡すフレームの数は、TxEngine によって指定された最大数に制限されます。 この制限は、TxMgr が送信を試行しているキューに固有のものである場合があり、TIL で使用可能な領域が増えるにつれて経時的に変わります。

ホストとターゲット間の TX 転送のスケジュール設定

TxMgr は、1 つの TX スレッドを使用して TxEngine にフレームを送信します。 バックログ キューがある限り、TxEngine にフレームをアクティブに送信している TX スレッドがあります。

TxMgr は、キュー モードに応じて次の方法でキューをスケジュールします。

WDI ポート キュー (TargetPriorityQueueing が TRUE) の場合、TxMgr はすべてのバックログ ポート キューで Deficit Round Robin (DRR) を使用してキューを処理します。

WDI PeerTID キュー (TargetPriorityQueueing が FALSE) の場合、TxMgr はキューのリソース不足を発生させずに、AC 優先度に従ってキューを処理し、TIL とターゲットでボトルネックになっているリソースが RA-TID ストリーム間で公平に共有されるようにします。 これにより、低速ストリームがこのようなリソースの不均衡な共有を使用するのを防ぎます。

一般に、スケジューラは DRR を使用して、任意の時点で送信元となる Peer-TID キューを選択します。 DRR では、各ラウンドでキューから送信するオクテットの数を制限する量子パラメーターをキューごとに関連付けます。 TxEngine はキューを伴う各送信操作で、1 つまたは 2 つの送信機会の予想されるサイズと一致するようにこのパラメーターを更新します。

一般に、DRR スケジューラは、最も優先度の高いバックログ AC に関連付けられている RA-TID キューのみを処理します。 リソース不足を防ぐために、スケジューラはすべてのバックログ キューで DRR を定期的に実行します。

IHV の予約済み拡張 TID の優先度マッピング

IHV 予約済み範囲の拡張 TID を使用して IHV によって挿入されたフレームは、優先度スケジューリングのために、次の拡張 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 への要求

TxEngine からの指示

TX 固有の制御要求

TX 固有の制御指示

WDI TX パス関数

NET_BUFFER_LIST

WDI_TXRX_CAPABILITIES