この節ではアダプタに組み込まれている GigabitEthernet ASIC の機能についてその概要を解説します。さらに ge ドライバのパラメタをリストにまとめ、各パラメタの設定方法を解説します。
ge ドライバは Sun GigabitEthernet アダプタデバイスを制御します。SUNW, sbus-gem や SUNW,pci-gem ノードの標準設定では、Sun GigabitEthernet デバイスは network として識別されます。ge ドライバの接続相手は、Sun GigabitEthernet/P アダプタの場合は pci108e,2bad に互換性のあるデバイス、Sun GigabitEthernet/S アダプタの場合は SUNW,sbus-gem に互換性のあるデバイスになります。システムの Sun GigabitEthernet アダプタ は、それぞれ個別に手動でパラメタ値を設定変更できます。
GigabitEthernet MAC (GEM) は 1000BASE-SX ネットワークインタフェースに対応しています。このドライバはIEEE の 802.3z Ethernet 規格に適合しており、自動的に接続速度を 1000 Mbps に設定します。GEM PCI ASIC は PCI インタフェース、MAC (Media Access Control) 機能、PCS (Physical Code Sublayer) 機能を提供します。GEM SBus ASIC は SBus インタフェース、MAC 機能、PCS 機能を提供します。1000BASE-SX 準拠の SC コネクタを ASIC に接続する場合は、外部 SERDES を使用して物理層機能を提供します。
GEM MAC と PCS は 自動ネゴシエーションモードに示されているすべての接続速度と動作モードに対応しています。PCS は接続相手と自動ネゴシエーションを行い、共通の動作モードを選択します。
PCS は強制動作モードにも対応しています。ge.conf ファイルを作成することにより、速度とモードを指定できるようになっています。
ge ドライバのパラメタおよびその設定を表 1–1 に示します。
表 1-1 ge ドライバパラメタの状態と説明
パラメタ |
状態 |
説明 |
---|---|---|
link_status |
読み取り専用 |
現在の状態 |
link_speed |
読み取り専用 |
現在の状態 |
link_mode |
読み取り専用 |
現在の状態 |
ipg1 |
読み取り・書き込み可 |
パケット間隔パラメタ |
ipg2 |
読み取り・書き込み可 |
パケット間隔パラメタ |
instance |
読み取り・書き込み可 |
デバイスインスタンス |
lance_mode |
読み取り・書き込み可 |
パケット転送前の追加遅延 |
ipg0 |
読み取り・書き込み可 |
パケット転送後の追加遅延 |
adv_1000autoneg_cap |
読み取り・書き込み可 |
動作モードのパラメタ |
adv_1000fdx_cap |
読み取り・書き込み可 |
動作モードのパラメタ |
adv_1000hdx_cap |
読み取り・書き込み可 |
動作モードのパラメタ |
adv_pauseTX |
読み取り・書き込み可 |
動作モードのパラメタ |
adv_pauseRX |
読み取り・書き込み可 |
動作モードのパラメタ |
1000autoneg_cap |
読み取り専用 |
PCS の自動ネゴシエーション機能 |
1000fdx_cap |
読み取り専用 |
PCS の全二重可 |
1000hdx_cap |
読み取り専用 |
PCS の半二重可 |
asm_dir_cap |
読み取り専用 |
PCS ASM_DIR 機能 |
pause_cap |
読み取り専用 |
PCS 対称型 PAUSE 機能 |
lp_1000autoneg_cap |
読み取り専用 |
接続相手の自動ネゴシエーション機能 |
lp_1000fdx_cap |
読み取り専用 |
接続相手の機能 |
lp_1000hdx_cap |
読み取り専用 |
接続相手の機能 |
lp_asm_dir_cap |
読み取り専用 |
接続相手の機能 |
lp_pause_cap |
読み取り専用 |
接続相手の機能 |
表 1–2 に示す読み取り専用パラメタは、インタフェースの動作モードに関する情報を提供します。これらのパラメタの値から、現在の接続状態がどうなっているか判断することができます。
表 1-2 現在の状態を示す読み取り専用パラメタ
パラメタ |
説明および値 |
---|---|
link_status |
現在の接続状態 0 = 切断 1 = 接続 |
link_speed |
状態が接続の場合のみ有効 0 = 接続されていない 1000 = 1000 Mbps で接続 |
link_mode
|
状態が接続の場合のみ有効 0 = 半二重 1 = 全二重 |
GEM ASIC は、IEEE 802.3x フレームのリンクレベルフロー制御プロトコル準拠の一時停止 (PAUSE) フレームの送信(ソーシング)と受信(ターミネーティング ) に対応しています。例えば 、フロー制御フレームを受信すると、それに反応して転送レートを落とすように GEM を設定できます。あるいは逆に、フロー制御フレームを接続相手に送信して、接続相手の転送レートを落とす ようにも設定できます (ただし接続相手もこの機能をサポートしている場合のみ可能です) 。デフォルトでは、GEM の一時停止フレーム受信機能は、自動ネゴシエーションの間のみ有効となるように設定してあります。
表 1-3 フロー制御パラメタ (読み取り/書き込み可)
パラメタ |
説明および値 |
---|---|
adv_pauseTX |
PAUSE の送信可/不可 0 = オフ (デフォルト: 不可) 1 = オン |
adv_pauseRX |
PAUSE の受信可/不可 0 = オフ 1 = オン (デフォルト: 可) |
通常の状況であれば、GEM の側からフロー制御フレームを送信する必要はありません。しかし転送速度の遅いバス (例えば 33 MHz の PCI バススロット) を使用していて、かつフレームの受信が非常に多い場合などは、FIFO の受信オーバーフローが原因でパフォーマンスが低下する可能性があります。そのような状況でも、接続相手側がフロー制御フレーム PAUSE の受信に対応していれば、adv_pauseTX の設定を「送信可能」に設定して自動ネゴシエーション機能を再起動するだけで、GEM のパフォーマンスを改善できます。
GEM ASIC はプログラム可能なパケット間隔 (IPG: Interpacket Gap) パラメタとして、ipg1 および ipg2 をサポートしています。ipg1 と ipg2 の合計が総 IPG となります。接続速度が 1000 Mbps の場合、IPG は 0.096 マイクロ秒になります。
表 1–4 に IPG パラメタ ipg1 と ipg2 のデフォルト値および設定可能な値を示します。
表 1-4 パケット間隔パラメタ (読み取り/書き込み可)
パラメタ |
値(バイト時間) |
説明 |
---|---|---|
ipg1 |
0, 255 |
ipg1 = 8 (初期化時のデフォルト値) |
ipg2 |
0, 255 |
ipg1 = 4 (初期化時のデフォルト値) |
デフォルトでは ipg1 が 8 バイト時間、ipg2 は 4 バイト時間に設定されており、この値をパケット間隔パラメタの標準値とします (バイト時間とは、接続速度 1000 Mbps で 1 バイトの転送にかかる時間です) 。
ネットワークに標準値より大きい IPG (ipg1 と ipg2の合計値) を使用しているマシンが存在し、それらのマシンのネットワークアクセスが遅い場合は、他のマシンの ipg1 と ipg2 の値をそれらのマシンの IPG 値まで引き上げてください。
GEM ASIC は lance_mode というプログラム可能モードに対応しています。ipg0 は、この lance_mode の設定に使用します。
lance_mode を有効に設定すると (デフォルトの設定 )、パラメタ ipg1 および ipg2 で設定したパケット間隔に加えてさらに、ipg0 パラメタ を使用してパケット送信前の遅延時間を設定できます。ipg0 による遅延時間の追加により、パケットの衝突を減少させることができます。しかし、lance_mode を有効にしたシステムでは、ネットワーク上で十分な転送時間を確保できない場合があります。
lance_mode を無効に設定すると、ipg0 に設定した値は無視され、追加遅延機能は働きません。ipg1 と ipg2 に設定したパケット間隔のみが遅延時間として機能します。他のシステムが非常に大規模な連続パケットを送信している場合 (つまり、パケット間に隙間のない転送が長時間続く場合) は、この lance_mode を無効に設定してください。
ipg0 には、0 から 31 までの値を設定できます。
表 1–5 にパラメタ lance_mode および ipg0 の設定に使う値を示します。
表 1-5 パラメタ lance_mode および ipg0 の設定に使う値
パラメタ |
値の説明 |
---|---|
lance_mode |
0 = lance_mode 無効 1 = lance_mode 有効 (デフォルト) |
ipg0 |
0 から 30 = パケット送信前 (パケット受信後) に追加する IPG 値 |
動作モードのパラメタと各パラメタのデフォルト値を表 1–6 に示します。
表 1-6 動作モードのパラメタ
パラメタ |
値の説明 |
---|---|
adv_1000autoneg_cap |
ハードウェアが通知するローカル PCS 機能 0 = 強制モード 1 = 自動ネゴシエーションモード (デフォルト) |
adv_1000fdx_cap
|
ハードウェアが通知するローカル PCS 機能 0 = 全二重で 1000 Mビット/秒、不可 1 = 全二重で 1000 Mビット/秒、可 (デフォルト) |
adv_1000hdx_cap |
ハードウェアが通知するローカル PCS 機能 0 = 全二重で 1000 Mビット/秒、不可 1 = 全二重で 1000 Mビット/秒、可 (デフォルト) |
adv_pauseTX |
ハードウェアが通知するローカル PCS 機能 0 = TX 機能を一時停止しない (デフォルト) 1 = TX 機能を一時停止する |
adv_pauseRX |
ハードウェアが通知するローカル PCS 機能 0 = RX 機能を一時停止しない 1 = RX 機能を一時停止する (デフォルト) |
GEM PCS のサポートしているPCS 機能を表示する読み取り専用のパラメタを表 1–7 に示します。この表のパラメタは、ハードウェアの機能を表しています。
表 1-7 PCS 機能 (読み取り専用)
パラメタ |
説明 (ローカル PCS 機能) |
---|---|
1000autoneg_cap |
0 = 自動ネゴシエーション不可 1 = 自動ネゴシエーション可 |
1000fdx_cap |
ローカル PCS の全二重機能 0 = 全二重で 1000 Mビット/秒、不可 1 = 全二重で 1000 Mビット/秒、可 |
1000hdx_cap |
ローカル PCS の半二重機能 0 = 半二重で 1000 Mビット/秒、不可 1 = 半二重で 1000 Mビット/秒、可 |
asm_dir_cap |
ローカル PCS のフロー制御機能 0 = 非対称型一時停止、不可 1 = 非対称型一時停止、可 (ローカルデバイスから) |
pause_cap |
ローカル PCS フロー制御機能 0 = 対称型一時停止、不可 1 = 対称型一時停止、可 |
接続相手の機能を表示する読み取り専用パラメタを表 1–8 に示します。
表 1-8 接続相手の機能 (読み取り専用)
パラメタ |
値の説明 |
---|---|
lp_1000autoneg_cap |
0 = 自動ネゴシエーションなし 1 = 自動ネゴシエーションあり |
lp_1000fdx_cap |
0 = 全二重で 1000 Mビット/秒 ではない 1 = 全二重で 1000 Mビット/秒 |
lp_1000hdx_cap |
0 = 半二重で 1000 Mビット/秒 ではない 1 = 半二重で 1000 Mビット/秒 |
lp_asm_dir_cap |
0 = 非対称型一時停止、不可 1 = 非対称型一時停止、可 |
lp_pause_cap |
0 = 対称型一時停止、不可 1 = 対称型一時停止、可 |
接続相手が自動ネゴシエーション機能に対応していない場合 (パラメタ lp_1000autoneg_cap の値が 0 の時) は、表 1–8 の残りの機能すべてに対応しません。従ってパラメタの値はすべて 0 になります。
接続相手が自動ネゴシエーション機能に対応している場合 (パラメタ lp_autoneg_cap の値が 1 の時) は、自動ネゴシエーション機能を使用して接続相手の機能を読み取り、速度およびモードの情報を表示します。