名前 | 形式 | 機能説明 | アプリケーションプログラミングインタフェース | ファイル | 関連項目
/dev/qfe
SUNW,qfe Quad Fast-Ethernet ドライバは、マルチスレッド化された、読み込みや複製が可能な STREAMS ハードウェアドライバです。このドライバでは、SUNW,qfe Quad Fast-Ethernet コントローラにおいてコネクションレス型のデータリンクプロバイダインタフェース (dlpi(7P)) を使用することができます。このドライバでは、システムにインストールされた複数の SUNW,qfe コントローラを使用することができます。qfe ドライバは、SUNW,qfe ハー ドウェアの基本的な機能を提供します。このドライバは、SUNW,qfeデバイスを扱うために使用します。機能には、チップの初期化、フレームの転送と受信、マルチキャストとプロミスキュアスへの対応、エラーからの回復および報告が含まれます。
SUNW,qfe デバイスは、100Base-TX ネットワークインタフェースを提供します。SUNW,qfe デバイスには、SBus に対応しているものと、PCI バスインタフェースに対応しているものの 2 種類があります。 SBus 対応の SUNW,qfe デバイスは、サンの FEPS ASIC(SBus インタフェースと MAC 機能を提供します) を使用します。PCI 対応の SUNW,qfe デバイスは、サンの PFEX ASIC を使用してPCI インタフェースと MAC 機能を提供します。両方のデバイスとも 100Base-TX オンボードトランシーバに接続します。100Base-TXオンボードトランシーバは、RJ45 コネクタに接続し、物理層の機能と外部との接続を提供します。
100Base-TX 規格によって、操作のモードと速度を自動的に選択 するための「自動ネゴシエーション」プロトコルを指定されます。内部トランシーバは、接続の遠隔地側 (接続相手) と「自動ネゴシエーション」を行うことができ、遠隔地側の機能に関する情報を受け取ります。内部トランシーバは、属性に基づいて、「最も優先順位の高い共通のモード」を選択します。また、ドライバが操作のモードを選択することができる場合は、強制モードを使用することができます。
複製された文字型特殊デバイスの /dev/qfe は、システムにインストールされたすべての SUNW,qfe コントローラに接続するために使用します。
qfe ドライバは、「スタイル 2」のデータリンクサービスプロバイダです。すべての M_PROTO 型および M_PCPROTO 型のメッセージは、DLPI 基本式として解釈されます。有効な DLPI 基本式 は<sys/dlpi.h> の中で定義されています。詳細は、dlpi(7P) を参照してください。開いているストリームに特殊デバイス (ppa) を関連付けるには、ユーザーからの明示的な DL_ATTACH_REQ メッセージが必要となります。この ppa ID は、符号なしの長整数として伝達され、対応するデバイスインスタンス (ユニット) 番号を示します。ppa フィールドの値がシステムにおける有効なデバイスインスタンス番号に対応していない場合は、エラー (DL_ERROR_ACK) が qfe ドライバによって返されます。デバイスは最初の接続時に初期化され、最後の切り離し時に終了 (停止) します。
ユーザーからの DL_INFO_REQ に応答して qfe ドライバが返すDL_INFO_ACK 基本式の値を以下に示します。
SDU の最大値は 1500 になります (<sys/ethernet.h> で定義されている ETHERMTU)。
SDU の最小値は 0 です。
dlsap アドレス長は 8 です。
MAC 形式は DL_ETHER です。
sap 長の値は -2 で、これは、DLSAP アドレスの中で物理アドレス構成要素のすぐ後に 2 バイト長の sap 構成要素が位置することを意味します。
サービスモードは DL_CLDLS です。
サービスの品質 (QOS: quality of service) オプションは現在のところ含まれていないため、QOS フィールドは 0 です。
プロバイダスタイルは DL_STYLE2 です。
バージョンは DL_VERSION_2 です。
ブロードキャストアドレスの値は Ethernet/IEEE のブロードキャストアドレス (0xFFFFFF) です。
DL_ATTACHED 状態になると、特定の SAP (Service Access Pointer) をストリームと関連付けるために、ユーザーはDL_BIND_REQ を送る必要があります。qfe ドライバは、DL_BIND_REQ 内の sap フィールドを Ethernet の「タイプ」として解釈します。したがって、sap フィールドの有効な値は [0-0xFFFF] の範囲になります。一度にストリームに接続できるのは 1つのタイプの Ethernet だけです。
ユーザーが sap の値として 0 を選択すると、受 信 側 は 802.3モードになります。タイプフィールドが [0-1500] の範囲内にある媒体から受信したすべてのフレームは 802.3 フレームとみなされ、sap 値が 0 のすべての開いているストリームに配信されます。複数のストリームが 802.3 モードにある場合は、フレーム は複製され、DL_UNITDATA_IND メッセージとして複数のストリームに配信されます。
qfe ドライバは、送信の際に DL_BIND_REQ の sap フィールドの値が 0 であるかどうかと、宛先タイプフィールドが [0-1500] の範囲内であるかどうかを確認します。どちらかの条件が満たされている場合、ドライバは最初の M_PROTO mblk (メッセージブロック)を除いたすべての後続の DL_UNITDATA_REQ メッセージの長さを計算し、MAC フレームヘッダー長フィールドが計算結果である 802.3フレームを送信します。
qfe ドライバの DLSAP アドレス形式は、6 バイトの物理 (Ether-net) アドレス部分と、それに続く 2 バイトの sap (タイプ) 部分とで構成されます。アプリケーションでは、DLSAP アドレスの作成や削除を行う際に、実装に依存した DLSAP アドレス形式を明示的に使用せずに、DL_INFO_ACK 基本式で返される情報を使用してくださ い。sap 長、完全な DLSAP 長、sap/物理の順序は DL_INFO_ACK に含まれます。物理アドレス長は、完全な DLSAP アドレス長から sap 長を引くか、DL_PHYS_ADDR_REQ を発行して、ストリームに対応する現在の物理アドレスを取得することによって計算することができます。
DL_BOUND 状態になると、qfe ドライバに DL_UNITDATA_REQ メッセージを送信することによって、ユーザーは Ethernet 上でフレームを送信することができます。qfe ドライバは、DL_UNITDATA_INDメッセージの Ethernet のタイプと一致する sap 値を持ち、開いていて結合されているストリームすべてに、受信された Ethernetフレー ムを配信します。受信された Ethernet フレームは複製され、必要に応じて複数の開いているストリームに配信されます。DL_UNITDATA_REQ および DL_UNITDATA_IND メッセージに含まれる DLSAP アドレスは、sap (タイプ) と物理 (Ethernet) 部分で構成されます。
qfe ドライバは、強制的なコネクションレス DLPI メッセージセットに加えて、以下の基本式に対応しています。
DL_ENABMULTI_REQ および DL_DISABMULTI_REQ 基本式は、個々のマルチキャストグループアドレスの受信を有効または無効にします。これらの基本式を使用して、一群のマルチキャストアドレスをストリームごとに繰り返し作成および変更することができます。これらの基本式は、DL_ATTACHED 後の状態にある場合に、qfe ドライバによって受け付けられます。
dl_level フィールド内に DL_PROMISC_PHYS フラグが設定された状態での DL_PROMISCON_REQ および DL_PROMISCOFF_REQ の基本式は、ローカルホストによって生成されたフレームを含む、媒体上のすべての (「プロミスキュアスモード」の) フレームの受信を有効または無効にします。
DL_PROMISC_SAP フラグが設定されている状態で使用すると、sap 値 (Ethernet のタイプ) の受信を有効または無効にします。DL_PROMISC_MULTI フラグが設定されている状態で使用すると、すべてのマルチキャストグループアドレスの受信を有効または無効にします。どちら効果も、常にストリームごとに適用され、当該ストリームやその他のストリームの sap および物理レベルの設定の影響は受けません。
DL_PHYS_ADDR_REQ 基本式は、DL_PHYS_ADDR_ACK 基本式の中のストリームに対応する (接続されている) Ethernet アドレス (6 桁の数) を返します。この基本式は、DL_ATTACH_REQ の成功後の状態においてのみ有効です。
DL_SET_PHYS_ADDR_REQ 基本式は、このストリームに対応する ( 接続 されている) Ethernet アドレスを変更します。このストリームを最初に開く処理は、root でのみ行うことができます。root でない場合は、DL_ERROR_ACK で EPERM が返されます。この基本式は、このデバイスに接続された現在および未来のすべてのストリームに影響する意味で破壊的です。この基本式がこのストリームに対して成功すると、このデバイスに接続された他のすべてのストリームに M_ERROR が送信されます。物理アドレスが一度変更されると、その後開かれ、このデバイスに接続されたストリームは、この新しい物理アドレスを取得します。物理アドレスが一度変更されると、物理アドレスを再び変更するためにこの基本式が使用されるか、システムが再起動されるまでこの物理アドレスは存続します。
デフォルトでは、qfe ドライバは接続のモードおよび速度を選択するために「自動ネゴシエーション」を実行します。
接続は、以下の4 つのモードのいずれかになります。
100 Mbps、全二重
100 Mbps、半二重
10 Mbps、全二重
10 Mbps、半二重
これらの速度とモードについては、100Base-TX 規格に記述されています。
自動ネゴシエーションプロトコルは以下を自動的に選択します。
動作モード (全二重または半二重)
速度 (100 Mbps または 10 Mbps)
自動ネゴシエーションプロトコルは以下を行います。
接続相手が対応しているすべての動作モードを取得します。
接続相手に対して自身の機能を通知します。
優先順位に基づいて最も優先順位の高い共通のモードを選択します。
最も高い優先順位は 100 Mbps の全二重で、最も低い優先順 位は 10 Mbps の半二重です。
100Base-TX トランシーバは、上記のすべての動作モードおよび速度に対応しています。デフォルトでは、接続のモードおよび速度と、接続相手との共通の動作モードを選択するために自動ネ ゴ シエーションが使用されます。
ユーザーが速度とモードを指定することもできます。SUNW,qfe デバイスは、プログラム可能なパケット間隔 (IPG: Inter-Packet Gap) パラメタの ipg1 および ipg2 に対応しています。デフォルトでは、ドライバは ipg1 を 8 バイト時間に設定し、ipg2 を 4バイト時間に設定します。これらは標準的な値です。ユーザーは、ドライバが 10 Mbps と 100 Mbps のどちらに対応しているかによって IPG パラメタの値を変更する場合があります。IPG は 9.6または 0.96 マイクロ秒に設定されます。
qfe ドライバでは、SUNW,qfe デバイスに関するさまざまなパラメタを設定および取得することができます。これらのパラメタには次の内容が含まれます。
現在のトランシーバの状態
現在の接続の状態
パケット間隔
ローカルトランシーバの機能
接続相手の機能
ローカルトランシーバには 2 組の機能があります。1 つ目の組はハードウェアの性能に関するもので、読み取り専用 (RO) のパラメタです。もう 1 つの組は、ユーザーが選択する値に関するもので、「速度の選択」で使用されます。読み取り・書き込み (RW) 機能もあります。起動時には、これら 2 組の機能は同じです。接続相手の機能も読み取り専用のパラメタです。これは、これらのパラメタの現在のデフォルト値が読み取り専用で、変更することができないためです。