EN JA
IEEE8021_VAP(9)
IEEE8021_VAP(9) FreeBSD Kernel Developer's Manual IEEE8021_VAP(9)

名称

net80211_vap802.11 ネットワークレイヤ (層) の仮想の無線サポート

書式

#include < net80211/ieee80211_var.h>

int
ieee80211_vap_setup( struct ieee80211com *, struct ieee80211vap *, const char name[IFNAMSIZ], int unit, int opmode, int flags, const uint8_t bssid[IEEE80211_ADDR_LEN], const uint8_t macaddr[IEEE80211_ADDR_LEN]);

int
ieee80211_vap_attach( struct ieee80211vap *, ifm_change_cb_t media_change, ifm_stat_cb_t media_stat);

void
ieee80211_vap_detach( struct ieee80211vap *);

解説

net80211 ソフトウェアレイヤ (層) は、基本的なデバイスからクローン化されたネットワークインタフェース (通称 vap) を通してユーザにエクスポートされる仮想の無線 API を含んでいるドライバのためのサポートフレームワークを提供しています。これらのインタフェースには、インタフェースの存続期間のために固定されているオペレーティングモード (station, adhoc, hostap, wds, monitor、など) があります。複数の並列インタフェースをサポートすることができるデバイスによって、複数の vap をクローン化することができます。

net80211 レイヤによって定義された仮想の無線インタフェースは、ドライバが、特有の規則に従うために構造化されなければならないことを意味します。どんな時にも単一のインタフェースだけをサポートするドライバは、いまだにこれらの規則に従わなければなりません。

仮想の無線アーキテクチャは、単一デバイス毎の ieee80211com 構造と 1 つ以上の ieee80211vap 構造の間の状態を分割します。 vaps は、 SIOCIFCREATE2 要求で作成されます。これは、ドライバが、要求が受け付けられるべきであるかどうか決定することができるドライバの ic_vap_create メソッドへの呼び出しの結果となりましす。

vap 作成プロセスは、3 ステップで行われます。最初に、ドライバは、 malloc(9) でデータ構造を割り付けます。このデータ構造は、前に ieee80211vap 構造がなければなりませんが、通常、ドライバのプライベートな状態で拡張されます。次に、vap は、 ieee80211_vap_setup() への呼び出しでセットアップされます。この要求は、 net80211 状態を初期化しますが、インタフェースをアクティブにしません。そして、ドライバは、 net80211 によってセットアップするメソッドを上書きすることができ、プロセスを完了するために最終的に ieee80211_vap_attach() を呼び出す前に、ドライバリソースをセットアップすることができます。これらの両方の呼び出しは、作業がプロセスのブロック/スリープを必要とようにロックされた任意のドライバを保持せずに行われなければなりません。

SIOCIFDESTROY ioctl 要求をが行われるか、またはデバイスがデタッチされるとき (すべての関連する vap が自動的に削除される)、vap は、削除されます。要求を削除することによって、 ic_vap_delete メソッドは、呼び出されます。ドライバは、ユーザアプリケーションからの要求のような活動から vap を非活性化して、それを分離するために ieee80211_vap_detach() を呼び出す前に、デバイスを不活発にしなければなりません。次に、ドライバは、vap によって保持されたリソースを再要求して、デバイス操作を再び有効にすることができます。デバイスを不活発にするための正確な手順は、不特定ですが、通常、割り込みをブロックすることと送信と受信の処理を停止を必要とします。

マルチ VAP 操作

ドライバは、複数の vap を作成できるかどうかと、どのようにそれらを管理するかを決定することに責任があります。複数の並列 vap をサポートできるかどうかは、デバイスのケーパビリティによって決まります。例えば、複数の hostap vap が、通常サポートされますが、多くのデバイスは、ユニークな BSSID を各 vap に割り当てることをサポートしません。デバイスが hostap 操作をサポートするなら、通常、並列ステーションモード vap をサポートできますが、場合により、ハードウェアのビーコンミスサポートのためのサポートを失うような制限があります。 hostap 操作ができ、4 つのアドレスのフレームを送信して受信することができるデバイスは、ap vap と共に WDS vap をサポートができるはずです。しかし、対照的に、いくつかのデバイスは、少なくとも 1 つの ap vap なしで WDS vap をサポートできません (しかしながら、ビーコンフレームを転送しない ap vap を強制して、これをうまく解決することができます)。すべてのデバイスは、他の vap と並列に、いろいろなモニタモード vap の作成をサポートするべきですが、これを許可するのは、ドライバの責任です。

複数の並列 vap をサポートする重要な結果は、ドライバの iv_newstate メソッドが、各 vap のために呼び出されるハンドルに書き込まなければならないことです。必要ならば、ドライバは、状態が変更されているものであるだけでなく、すべての vaps のためにプライベートな状態を追跡しなければなりません (例えば、ビーコンタイマを扱うために、ドライバは、ビーコンとなるすべての vap が、ハードウェアタイマを停止する前に停止されるか知る必要があります)。

August 4, 2009 FreeBSD