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