SK98LIN(4)

名前
sk98lin - Marvell/SysKonnect ギガビットイーサネットドライバ v6.21

書式
insmod sk98lin.o [Speed_A=i,j,...] [Speed_B=i,j,...] [AutoNeg_A=i,j,...] [AutoNeg_B=i,j,...] [DupCap_A=i,j,...] [DupCap_B=i,j,...] [FlowCtrl_A=i,j,...] [FlowCtrl_B=i,j,...] [Role_A=i,j,...] [Role_B=i,j,...] [ConType=i,j,...] [Moderation=i,j,...] [IntsPerSec=i,j,...] [PrefPort=i,j,...] [RlmtMode=i,j,...]

説明
注意: この時代遅れのドライバはカーネル 2.6.26 で削除された。

sk98lin は Marvell と SysKonnect のネットワークアダプターカードの ギガビットイーサネットドライバである。 これは SysKonnect SK-98xx/SK-95xx 互換のギガビットイーサネットアダプターと Yukon 互換のチップセットをサポートしている。

insmod を使ってドライバをロードする際、 ネットワークアダプターカードのパラメーターを コンマで区切られたコマンドの列として指定することができる。 2 つのネットワークアダプターが取り付けられている時に、 例えば、1 つ目のアダプターのポート A の自動ネゴシエーションは ON にするが、 2 つ目のアダプターのポート A は OFF にする場合は、 以下のように入力すればよい:

   insmod sk98lin.o AutoNeg_A=On,Off

sk98lin が 1 つ以上のアダプターカードに関連づけられていて、 かつ /proc ファイルシステムがシステムにマウントされている場合、 取り付けられているネットワークアダプターカードの全てのポートについて、 (ポート単位に) 専用の統計ファイルがフォルダ /proc/net/sk98lin に作られる。 これらのファイルは eth[x] という名前であり、 x はインターフェースの番号である。 この番号はシステムによってポート毎に割り当てられたものである。

ロードが完了すると、 ifconfig(8) コマンドを使って、各 eth[x] インターフェースに希望する IP アドレスを割り当てることができる。 これによりアダプターがイーサネットに接続され、 コンソールに状態メッセージが表示される。 このメッセージでは、 "ethx: network connection up using port y" の後に 設定されたり検出された接続パラメーターが表示される。

sk98lin はラージフレーム (ジャンボフレームとも呼ばれる) もサポートする。 ジャンボフレームを使うと、大量のデータを転送する際に、 スループットを大幅に向上させることができる。 ラージフレームを有効にするには、 インターフェースの MTU (maximum transfer unit, 最大転送単位) サイズを 大きな値に設定すればよい。 デフォルトの MTU サイズは 1500 であり、 最大で 9000 (バイト) まで設定することができる。 MTU サイズを設定するのは、 インターフェースに IP アドレスを割り当てるときにもできるし、後から ifconfig(8) コマンドに mtu 引数を指定することで設定することもできる。 例えば、eth0 に IP アドレスとラージフレーム MTU サイズを 割り当てたい場合、以下の 2 つのコマンドを実行すればよい:

    ifconfig eth0 10.1.1.1
    ifconfig eth0 mtu 9000

これらの 2 つのコマンドは 1 つにまとめることもできる:

    ifconfig eth0 10.1.1.1 mtu 9000

ラージフレームを使用できるのは、ネットワーク環境全体で ラージフレームの使用が認められている場合のみである点に注意すること。 つまり、イーサネットで使われている全てのスイッチでも ラージフレームがサポートされていなければならない。 多くのスイッチがラージフレームをサポートしてはいるが、 設定を行う必要がある。 多くの場合、デフォルトの設定では標準フレーム (1500 バイトの MTU サイズ) だけしかサポートしない。 ネットワーク内のスイッチに加え、 使用される全てのネットワークアダプターでも ジャンボフレームが有効になっていなければならない。 アダプターがラージフレームを受け取るように設定されていない場合、 アダプターはそのフレームを単純に捨ててしまう。

標準のイーサネットフレームサイズに戻すのは、再び ifconfig(8) コマンドを使えばよい:

    ifconfig eth0 mtu 1500

Linux の Marvell/SysKonnect ギガビットイーサネットドライバは、 IEEE 規格 802.1, 802.1q, 802.3ad に準拠する VLAN と Link Aggregation に対応している。 これらの機能は、インターネットにあるオープンソースモジュールを インストールした後でのみ利用可能である:

 VLAN: http://www.candelatech.com/~greear/vlan.html
 Link Aggregation: http://www.st.rim.or.jp/~yumo

Marvell/SysKonnect は、これらのオープンソースモジュールに対するサポートは 行っておらず、これらを使った場合に生じるいかなる失敗や問題についても 責任を負わない点に注意すること。

  パラメーター

Speed_A=i,j,...
    このパラメーターはアダプターカードのポート A がサポートするリンク速度を 設定するのに使われる。これは Yukon copper アダプターでのみ有効である。 使用可能な値は以下の通り: 10, 100, 1000, Auto。 デフォルトは Auto である。 通常、リンク速度はリンクの確立時に 2 つのポートの間で自動設定される。 これに失敗した場合、ポートはこの引数で指定された設定になる。

Speed_B=i,j,...
    このパラメーターはアダプターカードのポート B がサポートするリンク速度を 設定するのに使われる。これは Yukon copper アダプターでのみ有効である。 使用可能な値は以下の通り: 10, 100, 1000, Auto。 デフォルトは Auto である。 通常、リンク速度はリンクの確立時に 2 つのポートの間で自動設定される。 これに失敗した場合、ポートはこの引数で指定された設定になる。

AutoNeg_A=i,j,...
    アダプターカードのポート A の自動設定 (autonegotiation) の使用を 有効または無効にする。使用可能な値は以下の通り: On, Off, Sense。 デフォルトは On である。 Sense モードはリンクパートナが自動設定をサポートしているか否かを 自動的に検知する。

AutoNeg_B=i,j,...
    アダプターカードのポート B の自動設定 (autonegotiation) の使用を 有効または無効にする。使用可能な値は以下の通り: On, Off, Sense。 デフォルトは On である。 Sense モードはリンクパートナが自動設定をサポートしているか否かを 自動的に検知する。

DupCap_A=i,j,...
    この引数はアダプターカードのポート A で使う二重通信 (duplex) モードを示す。 使用可能な値は以下の通り: Half, Full, Both。 デフォルトは Both である。 この引数はポート A の AutoNeg_A が Sense に設定されていない場合にのみ有効である。 AutoNeg_A が On の場合、DupCap_A の 3 つの値 (Half, Full, Both) のうちどれでも指定することができる。 AutoNeg_A が Off の場合、DupCap_A の値 Full と Half のみを指定することができる。 この DupCap_A 引数は、リンクパートナが全ての二重通信の組み合わせを サポートしていない場合に役に立つ。

DupCap_B=i,j,...
    この引数はアダプターカードのポート B で使う二重通信モードを示す。 使用可能な値は以下の通り: Half, Full, Both。 デフォルトは Both である。 この引数はポート B の AutoNeg_B が Sense に設定されていない場合にのみ有効である。 AutoNeg_B が On の場合、DupCap_B の 3 つの値 (Half, Full, Both) のうちどれでも指定することができる。 AutoNeg_B が Off の場合、DupCap_B の値 Full と Half のみを指定することができる。 この DupCap_B 引数は、リンクパートナが全ての二重通信の組み合わせを サポートしていない場合に役に立つ。

FlowCtrl_A=i,j,...
    この引数は自動設定時にポートが対向に伝える フロー制御機能を設定する。 使用可能な値は以下の通り: Sym, SymOrRem, LocSend, None。 デフォルトは SymOrRem である。 それぞれのモードには以下のような意味がある:

    Sym = Symmetric
     リンクパートナの双方が PAUSE フレームを送ることができる。
    SymOrRem = SymmetricOrRemote
     リンクパートナの双方またはリモートパートナのみが PAUSE フレームを送ることができる。
    LocSend = LocalSend
     ローカルリンクパートナのみが PAUSE フレームを送ることができる。
    None = None
     リンクパートナのどちらも PAUSE フレームを送ることはできない。

    このパラメーターは AutoNeg_A が Off の場合には無視される点に注意すること。

FlowCtrl_B=i,j,...
    この引数は自動設定時にポートが対向に伝える フロー制御機能を設定する。 使用可能な値は以下の通り: Sym, SymOrRem, LocSend, None。 デフォルトは SymOrRem である。 それぞれのモードには以下のような意味がある:

    Sym = Symmetric
     リンクパートナの双方が PAUSE フレームを送ることができる。
    SymOrRem = SymmetricOrRemote
     リンクパートナの双方またはリモートパートナのみが PAUSE フレームを送ることができる。
    LocSend = LocalSend
     ローカルリンクパートナのみが PAUSE フレームを送ることができる。
    None = None
     リンクパートナのどちらも PAUSE フレームを送ることはできない。

    このパラメーターは AutoNeg_B が Off の場合には無視される点に注意すること。

Role_A=i,j,...
    この引数は 1000Base-T アダプターカードでのみ有効である。 2 つの 1000Base-T ポートが通信する場合、 片方が (タイミング情報を提供する) マスタの役割をしなければならず、 もう片方がスレーブにならなければならない。 使用可能な値は以下の通り: Auto, Master, Slave。 デフォルトは Auto である。 通常、ポートの役割は 2 つのポートでリンクを確立するときに自動設定される。 自動設定に失敗した場合、 アダプターカードのポート A はこの引数で指定された設定になる。

Role_B=i,j,...
    この引数は 1000Base-T アダプターカードでのみ有効である。 2 つの 1000Base-T ポートが通信する場合、 片方が (タイミング情報を提供する) マスタの役割をしなければならず、 もう片方がスレーブにならなければならない。 使用可能な値は以下の通り: Auto, Master, Slave。 デフォルトは Auto である。 通常、ポートの役割は 2 つのポートでリンクを確立するときに自動設定される。 自動設定に失敗した場合、 アダプターカードのポート B はこの引数で指定された設定になる。

ConType=i,j,...
    この引数は、ポート毎に指定する、全部で 5 個の引数の組み合わせを、 1 つの引数にしたものである。 これによりアダプターカードの 2 つのポートの設定を簡略化できる。 この変数のそれぞれの値は、 ポート引数の最も意味のある組み合わせを反映したものである。 使用可能な値とそれに対応するポート毎のパラメーターの組み合わせは、 以下の通り:

    ConType | DupCap | AutoNeg | FlowCtrl | Role | Speed
    Auto | Both | On | SymOrRem | Auto | Auto
    100FD | Full | Off | なし | Auto | 100
    100HD | Half | Off | なし | Auto | 100
    10FD | Full | Off | なし | Auto | 10
    10HD | Half | Off | なし | Auto | 10

    その他のポート引数を ConType 引数と組み合わせて指定すると、それらの設定を結合した設定となる。 これは、ポート毎の引数 (例えば Speed_A) の方が組み合わせ変数 ConType より優先順位が高いためである。

Moderation=i,j,...
    割り込み調停 (interrupt moderation) は、ドライバが処理を開始しなければ ならない割り込み回数の最大値を設定するために使用される。 つまり、ドライバが処理を行うまで、1回以上の割り込み (送信または受信パケットが処理されること) がキューに入れられる。 キューに入れられた割り込みがいつ処理されるかは、 以下で説明する IntsPerSec 引数で決定される。 使用可能な調停モードは以下の通り: None, Static, Dynamic。 デフォルトは None である。 それぞれのモードは以下の意味を持つ:

    None アダプターカードに対して割り込み調停を適用しない。 よって送信または受信割り込みは、 アダプターカードの割り込み線に現れると直ぐに処理される。

    Static アダプターカードに対して割り込み調停が適用される。 全ての送信または受信割り込みは、調停間隔が完全に終わるまで キューに入れられる。 この調停間隔が終わると、キューに入れられた全ての割り込みは、 1個の大きな塊として遅延なく処理される。 Static という用語は、あるインターフェースに現在どれだけの ネットワーク負荷がかかっているかに関わらず、 割り込み調停が常に有効になることを表している。 さらに、調停間隔の時間は固定で、ドライバが動作している間は変化しない。

    Dynamic システムの負荷に応じて、アダプターカードに対して割り込み調停が適用される。 ドライバがシステムの負荷が高すぎると検出した場合、 割り込み調停を有効にすることにより、 過剰なネットワーク負荷からシステムを保護しようとする。 —その後に—CPU 利用率が再び下がった場合 (またはネットワーク負荷が極わずかになった場合)、 割り込み調停は自動的に無効にされる。

    ドライバが扱わなければならないインターフェースのうち ネットワーク負荷が高いものが 1 つ以上あり、 —その結果—CPU 利用率が高くなっている場合、 割り込み調停を使うべきである。 ネットワーク負荷が高い状況で調停が適用されると、 遅いコンピュータでは CPU 負荷が 20–30% 削減されるだろう。

    割り込み調停を使うことの欠点として、 往復遅延時間 (round-trip-time, RTT) の増加がある点に注意すること。 これは、割り込みがキューに入れられ、まとめて処理されるためである。

IntsPerSec=i,j,...
    この引数は割り込み調停の間隔を決定する。 静的 (static) 割り込み調停が使われている場合、 IntsPerSec 引数の値が 2000 であれば、割り込み調停の間隔は 500 ミリ秒になる。 この引数に設定可能な値は 30...40000 の範囲で、 これは 1 秒毎の割り込み回数である。 デフォルト値は 2000 である。

    この引数は静的 (static) または動的 (dynamic) 割り込み調停が 有効になっているときにのみ使用される。 この引数は割り込み調停が適用されていない場合には無視される。

    調停間隔の期間は注意して選ぶこと。 一見したところでは、とても長い期間 (例えば 1 秒間に 100 回だけの割り込み) を 選ぶことに意味があるように見えるかもしれないが、そうすると パケット処理の遅延が激しく増加する。 一方で、とても短い調停時間を選ぶと、割り込み調停を使う意味がなくなってしまう。

PrefPort=i,j,...
    この引数は (2 ポートのネットワークアダプターで) 優先 (preferred) ポートを A または B のどちらにするかを指定するのに使われる。 優先ポートとは、A と B の両方のポートが完全に機能していると検知された場合に 使用されるポートである。 使用可能な値は以下の通り: A または B。 デフォルトは A である。

RlmtMode=i,j,...
    RLMT はポートの状態を監視する。 アクティブなポートのリンクが落ちた場合、 RLMT は即時に待機しているリンクに切り替える。 少なくとも 1 つの「物理的」リンクが起動するまでは、仮想リンクが維持される。 この引数は RLMT が両方のポートをどのように監視するかを決める。 使用可能な値は以下の通り: CheckLinkState, CheckLocalPort, CheckSeg, DualNet。 デフォルトは CheckLinkState である。 各モードは以下のような意味を持つ。

    CheckLinkState リンク状態のチェックのみ: RLMT は、各ポートについてアダプターハードウェアが報告するリンク状態を使い、 そのポートが全てのネットワークトラフィックを送受信するのに使用可能かを 決定する。

    CheckLocalPort このモードでは、RLMT はアダプターカードの 2 つのポートの間で 定期的にパケットを交換することにより、 2 つのポートの間のネットワーク経路を監視する。 このモードでは 2 つのポートが互いに「見える」ような ネットワーク設定が必要である (つまり、ポート間にルーターがあってはならない)。

    CheckSeg ローカルポートとセグメントをチェックする。 このモードは CheckLocalPort モードと同じ機能を提供し、 更にポート間のネットワークセグメントをチェックする。 よって、このモードはネットワーク上に スパニングツリープロトコル (Spanning Tree protocol) を 使うように設定されたギガビットイーサネットスイッチが 設置されている場合にのみ使用できる。

    DualNet このモードでは、ポート A と B が別々のデバイスとして使用される。 2 ポートのアダプターを持っている場合、ポート A を eth[x] に、ポート B を eth[x+1] に設定することができる。 2 つのポートは別々の IP アドレスを付けて独立に使用することができる。 優先ポートの設定は使用されない。 RLMT は無効にされる。

    RLMT モード CheckLocalPort と CheckLinkState は、1 つのアダプター上のポート間でネットワーク経路があるような設定で 動作するように設計されている。 さらに、このモードはアダプター同士が直結 (back-to-back) で 接続されている状態で動作するようには設計されていない。

ファイル

/proc/net/sk98lin/eth[x]
    アダプターカードの特定のインターフェースの統計ファイル。 このファイルには、アダプターカードの一般的な情報と、 全ての送信・受信カウンターの詳細な一覧が含まれる。

/usr/src/linux/Documentation/networking/sk98lin.txt
    sk98lin ドライバの README ファイルである。 これには詳細なインストール HOWTO が含まれており、 ドライバの全ての引数が記述されている。 また一般的な問題とその解決法についても書かれている。

バグ
バグは linux@syskonnect.de に報告してほしい。

関連項目
insmod(8), ifconfig(8), modprobe(8)

この文書について
この man ページは Linux man-pages プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は https://www.kernel.org/doc/man-pages/ に書かれている。