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

名称

ieee80211_regdomain802.11 規制のサポート

書式

#include < net80211/ieee80211_var.h>
#include < net80211/ieee80211_regdomain.h>


int
ieee80211_init_channels( struct ieee80211com *, const struct ieee80211_regdomain *, const uint8_t bands[]);

void
ieee80211_sort_channels( struct ieee80211_channel *, int nchans);

struct ieee80211_appie *
ieee80211_alloc_countryie( struct ieee80211com *);

解説

net80211 ソフトウェアレイヤは、包括的な規制のサポートを含んでいるドライバのためのフレームワークのサポートを行います。 net80211 は、特権ユーザアプリケーションによって regulatory policy (規制のポリシ) を実行するメカニズムを提供します。

ドライバは、デバイスのケーパビリティを定義して、 net80211 を通して要求された規制の変更をインターセプトし、制御することができます。チャネルリストを含む初期の規制の状態は、 ieee80211_ifattach() を呼び出す前にドライバによって書き込まれていなければなりません。チャネルリストは、デバイスが使用のために 調整される チャネルのセットを反映するべきです。また、このリストは、後で ieee80211com 構造の ic_getradiocaps メソッドで要求されます。 ieee80211_init_channels() 関数は、適切なチャネルリストに書き込まない (か、または書き込めない) ドライバのための基本的なフォールバック (fallback) として提供されます。デフォルトの規制の状態は、規制の SKU、ISO カントリコード、ロケーション (例えば、屋内の、野外の)、とデバイスが動作させることができる周波数帯域のセットのように供給されます。 net80211 は、チャネルとケーパビリティのデフォルトセットで ic_channels のチャネルテーブルに存在します。このメカニズムは、作成されたチャネルリストとデバイスのケーパビリティの間のどんなミスマッチも実行時エラー (例えば、デバイスがサポートしないチャネルで動作するという要求) となるように慎重に使用されるべきであることに注意してください。 SKU とカントリ情報は、802.11h プロトコル要素と 802.11d のような関連する操作を生成するために使用されます。ドライバによる誤セットアップは、潜在的に混乱させるだけであって、致命的ではありません。

固定/デフォルト規制の状態がないデバイスは、 SKU_DEBUG への規制の SKU と CTRY_DEFAULT へのカントリコードを設定して、ユーザアプリケーションへの適切なセットアップを任せることができます。デフォルトの設定が知られているなら、それらをインストールできるか、または devd(8) がシステムブート (または、デバイスの挿入) に適切なセットアップ作業を行えるように、 ieee80211_notify_country() を使用してユーザ空間にイベントをディスパッチすることができます。

チャネルテーブルは、 ieee80211_sort_channels() ルーチンを使用して検索を最適化するためにソートされます。チャネルテーブルの内容が変更されているときはいつも、これを行うべきです。

ieee80211_alloc_countryie() 関数は、802.11h によって指定されるように情報要素を割り付けます。これは、生成することが高価であるので、 ic_countryie でキャッシュされて、規制の状態が変更するときのみ、生成されます。 ieee80211_alloc_countryie() を呼び出すドライバは、直接このキャッシュで支援するべきではありません。そうすることは、 net80211 レイヤを混乱させるかもしれません。

ドライバ規制制御

ドライバは、変更要求をチェックする ic_setregdomain メソッドを上書きすることによって規制の変更要求を制御することができます。ドライバが必要条件を満たさない任意の要求を拒否できる間、要求を拒否し、正しくなるようにそれを変更する代わりに可能であるときはいつも、何が受け付けられるかについて寛大であることが推薦されます。例えば、チャネルのための転送電力 cap が高すぎるなら、ドライバは、要求を拒否できるか、または準拠するための cap を (より良く) 削減することができます。受け付けすることができないチャネルを含む要求は、拒否される要求が起こるべきで、そうでなければ、ミスマッチが、アプリケーションの状態と net80211 によって管理される状態の間で作成されます。動作するような正確な規則は、今でも体系化されています。
August 4, 2009 FreeBSD