JF Linux Kernel 2.2 Documentation: /usr/src/linux/Documentation/networking/sk98lin.txt

networking/sk98lin.txt

SK-NET Gigabit イーサネットアダプタ SK-98xx ファミリの Linux 用ドライバの使用方法 [プレインテキスト版]


(C)Copyright 1999-2001 SysKonnect GmbH.
All rights reserved
===========================================================================
日本語訳:野本浩一 <hng@ps.ksky.ne.jp>
    校正:武井伸光さん <takei@webmasters.gr.jp> 
          中野武雄さん <nakano@apm.seikei.ac.jp>

sk98lin.txt は 2001年06月07日に作成されました。

Linux 用 sk98lin v4.07 SK-NET Gigabit イーサネット PCI ドライバの
Readme ファイルです。

このファイルの内容
(1) 概要
(2) 必要なファイル
(3) インストール
(4) システム起動時にアダプタを認識させる
(5) ドライバの引き数
(6) ラージフレームのサポート
(7) トラブルシュート
(8) 履歴

===========================================================================

(1) 概要
========

sk98lin ドライバは、Linux 2.2.x およびそれ以降で、SysKonnect SK-NET
Gigabit イーサネットアダプタ SK-98xx ファミリをサポートします。
Intel/x86 マシンの Linux でテストされています。
v3.02 以降のドライバは、linux のカーネルソースに統合されています。
***

(2) 必要なファイル
==================

linux のカーネルソース。
他に必要なファイルはありません。
***

(3) インストール
================

以下に、手動でドライバをインストールし、起動するために必要な作業を順を
追って述べます。これらの手順は、ドライバの初期設定の際に実行する必要が
あります。一度うまく動いたら、これらはシステム起動時に行うことができま
す (これは次の章で述べます)。

注意 1 - 以下に示す作業を行うには、システムの 'root' 権限が必要です。
注意 2 - 重要 - 不具合が発生したら、下記のトラブルシュートの章を読んで
         ください。

1) ドライバは、カーネルに統合するか、モジュールとしてコンパイルするか
   のどちらかを選べます。
   カーネルの設定で、適切なオプションを選んでください。
   モジュールを使うなら、カーネルは 'loadable module support' が有効で
   なければなりません。
   ドライバを自動起動するなら、'Kernel module loader' を有効にすること
   も必要です。
   これらのオプションを選択し、新しいカーネルを構築し、インストールし
   ます。
   ドライバをモジュールとして使う場合は、"make modules" と
   "make modules_install" を行ってください。
   システムを再起動 (reboot) します。

2) 手動でモジュールをロードするために、次を入力します -
       modprobe sk98lin
   SysKonnect SK-98xx アダプタがコンピュータにインストールされ、/proc
   ファイルシステムがシステムにあれば、'more /proc/net/dev' コマンドを
   実行すると、次の形式の行を含む出力が得られるはずです。
       eth0:    0    0 ...
   これは、アダプタが認識され、初期化されたことを意味します。

   注意 1 - 2つ以上の SysKonnect SK-98xx アダプタがある場合は、アダプ
            タは、'eth0', 'eth1', 'eth2' などと一覧されます。
            それぞれのアダプタに対し、手順 5) と 6) を行ってください。
   注意 2 - 他のイーサネットアダプタをインストールしているなら、
            SysKonnect SK-98xx アダプタは、'eth1' もしくは 'eth2' ...
            にマップされるかもしれません。
            モジュールのインストールメッセージに、見つかったアダプタそ
            れぞれに関する行が現われ、それぞれ対応する 'ethX' が含まれ
            ているはずです (インストールメッセージは、/etc/syslog.conf
            の設定に応じて、システムのログファイルかコンソールに現われ
            ます)。

3) IP アドレスを選び、次を入力して、それぞれのアダプタに指定します。
       ifconfig eth0 <ip-address>
   これで、アダプタはイーサネットに接続します。アダプタの唯一の黄色い
   LED がその時点灯し、(スイッチングハブもしくはハブに接続している場合)
   プライマリポートのリンク状態の LED が ON になり、(デュアルポートア
   ダプタ上の) セカンダリポートのリンク状態の LED は、点滅します。コン
   ソールには "ethX: network connection up using port Y" というステー
   タスメッセージが表示され、選択した接続パラメータが示されるはずです。
   
   注意 - IP アドレスが分からなければ、ネットワーク管理者に相談してく
          ださい。

4) これでアダプタは完全に動作しているはずです。
   'ping <otherstation>' を使い、ネットワーク上の他のコンピュータへの
   接続を確認します。
   /proc/net/sk98lin/[devicename] を見ることにより、アダプタの設定に関
   する情報がチェックできます。

5) 次に示すコマンドで、ドライバモジュールを停止し、アンロードできます。
       ifconfig eth0 down
       rmmod sk98lin
***

(4) システム起動時にアダプタを認識させる
========================================

さまざまな Linux ディストリビューションが沢山存在するので、ドライバモ
ジュールの一般的なインストール手順を述べることはできません。
ドライバは現在カーネルに統合されているので、ディストリビューションの標
準的な仕組みを用いて、簡単にインストールできるはずです。
ディストリビューションのマニュアルを参照して、イーサネットアダプタのイ
ンストールのところを読みましょう。
***

(5) ドライバの引き数
====================

'modprobe' でモジュールをロードするとき、コマンドラインから引き数を設定
できます。いくつかのディストリビューションにある設定ツールでも、ドライ
バモジュールに引き数を与えることができます。
カーネルモジュールローダを使っているなら、/etc/modules.conf (もしくは、
古い名前の /etc/conf.modules) でドライバの引き数を設定できます。

options sk98lin ...

という形式の行を挿入しましょう。

"..." には、以下に述べる modprobe のコマンドラインの引き数と同じ構文を
使います。
新しい引き数でドライバを動作させるには、コンピュータを再起動するか、ド
ライバをアンロードの後リロードしなければなりません。
ドライバの引き数 (parameter) の構文は -

modprobe sk98lin parameter=value1[,value2[,value3...]]

です。value1 は最初のアダプタ用のもの、value2 は2番目のアダプタ用のも
の...になります。
すべての引き数には大文字小文字の区別があるので、以下に示すように正確に
書いてください。

例 - 2つのアダプタがあるとします。1番目のアダプタのポート A では
     AutoNegotiation を ON に、2番目のアダプタのポート A では OFF に
     したい、としましょう。
     また 1番目のアダプタのポート A では DuplexCapabilities を全二重
     に、2番目のアダプタのポート A では半二重にしたい、とします。この
     場合の入力は次のようになります。

       modprobe sk98lin AutoNeg_A=On,Off DupCap_A=Full,Half

注意 - この方法で設定できるアダプタの数は、ドライバで制限されています
       (ファイル skge.c の定数 SK_MAX_CARD_PARAM)。
       現在の制限値は 16 です。もっと多くのアダプタをインストールする
       必要があるなら、これを調整してコンパイルしなおしてください。

5.1 ポートごとの引き数
----------------------
これらの設定は、アダプタ上のそれぞれのポートごとに指定できます。
以下に示す記述中の '?' は引き数を設定するポートを表します (A か B)。

- Auto Negotiation
  引き数 -      AutoNeg_?
  値 -          On, Off, Sense
  既定値 -      Sense
  
  "Sense" モードは、リンク先が autonegotiation をサポートしているかど
  うかを自動的に調べます。

- Duplex Capabilities
  引き数 -      DupCap_?
  値 -          Half, Full, Both
  既定値 -      Both

  この引き数は、このポートの autonegotiation が "Sense" でない場合に限っ
  て意味を持ちます。autonegotiation が "On" なら、3つの値すべてが使え
  ます。"Off" なら、"Full" と "Half" だけが許されます。
  これは、リンク先が可能な組み合わせすべてをサポートしていない場合に便
  利です。

- Flow Control
  引き数 -      FlowCtrl_?
  値 -          Sym, SymOrRem, LocSend, None
  既定値 -      SymOrRem

  この引き数は、autonegotiation の間にポートが報告するフロー制御の能力
  を設定するために使われます。
  各モードの意味は次のとおりです:
-- Sym = Symetric - リンク両端とも PAUSE フレームが送れます。
-- SymOrRem = SymetricOrRemote - リンク両端、もしくはリンク先からのみ
   PAUSE フレームが送れます。
-- LocSend = LocalSend - こちらからのみ PAUSE フレームが送れます。
-- None - リンク両端とも PAUSE フレームを送ることは許されません。

  注意 - この引き数は、autonegotiation が "Off" に設定されている場合は
         無視されます。

- Role in Master-Slave-Negotiation (1000Base-T only).
  引き数 -      Role_?
  値 -          Auto, Master, Slave
  既定値 -      Auto
  
  この引き数は、SK-9821 と SK-9822 両アダプタだけで有効です。2つの
  1000Base-T ポートが通信するには、一方の役割はマスタ (タイミング情報
  を提供する側) で、もう一方はスレーブでなければなりません。通常これは、
  リンク確立中に2つのポート間でネゴシエートされます。もしこれが失敗し
  ても、この引き数によって、ポートをどちらにするかを強制的に指定できま
  す。

5.2 アダプタごとの引き数
------------------------

- Preferred Port
  引き数 -      PrefPort
  値 -          A, B
  既定値 -      A

  これは、(2ポート NIC 上の) ポート A か B のどちらかを強制的に優先さ
  せるために使われます。両方が完全に機能すると検出されても、優先される
  ポートは1つです。

- RLMT (Redundant Link Management Technology) Mode
  引き数 -      RlmtMode
  値 -          CheckLinkState,CheckLocalPort, CheckSeg, DualNet
  既定値 -      CheckLinkState

  RLMT (the driver part that decides which port to use) は、どのポート
  が使用可能かを3つの方法で検査します。その方法は -

-- CheckLinkState = リンク状態のみの検査 - RLMT は、アダプタのハードウェ
   アから報告される各ポートのリンク状態を用いて、ポートがネットワーウ
   トラフィックすべてに使えるかどうかを決定します。

-- CheckLocalPort = アダプタ上の他のポートの検査 -
   RLMT は、各ポートから他の各ポートへテストフレームを送り、送り先の各
   ポートが受け取れるか検査します。従ってポートは、LLC テストフレーム
   をやり取りできるようなかたちでネットワークに接続されなければなりま
   せん (つまりポート間にルータがあってはなりません)。

-- CheckSeg = 他のポートとネットワークセグメントの検査 - RLMT は、他の
   ポートを検査し、さらに各ポートに接続された Gigabit イーサネットスイッ
   チに情報を要求して、ネットワークがポート間でセグメント化されている
   か確認します。従って、このモードが使えるのは、ネットワークに
   Gigabit イーサネットスイッチがあって、スパニングツリープロトコルを
   使う設定がされている場合に限られます。

-- DualNet - A と B の両ポートは同時に個別の装置として使用されます。し
   たがって、デュアルポートアダプタを使っている場合、ポート A は eth0、
   ポート B は eth1 として見えます。両ポートは別個の IP アドレスで使用
   できます。preferred port 設定は使われません。Rlmt はオフになります。

  注意 - CheckLocalPort と CheckSeg のモードは、1つのアダプタ上のポー
         ト間でネットワーク経路があるような構成で動作します。
         特に、back-to-back で接続されたアダプタ間では、これらは動作す
         るような設計になっていません。
***

(6) ラージフレームサポート
==========================

今ではラージフレーム (ジャンボフレームとも呼ばれます) もサポートされて
います。これを用いると、大量のデータの転送において、スループットを非常
に向上することができました。
ラージフレームを有効にするには、インターフェースの MTU (maximum
transfer unit) に、あなたの望むサイズ (9000 まで) を設定します。このた
めのコマンドは -
  ifconfig eth0 mtu 9000
です。
これは、2つのアダプタを back-to-back で接続するか、ラージフレームをサ
ポートするスイッチを使う場合に限って動作します。スイッチを用いる時は、
autonegotiation を使わず、ラージフレームを使用する設定をしなければなり
ません。
この設定は、ラージフレームが到達するすべてのアダプタで行わなければなり
ません。あるアダプタでラージフレームを受信する設定をしなかったなら、そ
のアダプタは、単にそのフレームを落としてしまうでしょう。

次のコマンドで、標準的なイーサネットのフレームサイズに戻せます。
  ifconfig eth0 mtu 1500

この設定を永続的にするには、'ifconfig' を行うスクリプトをシステムの起
動シーケンスに追加します ("S99sk98lin" のような名前で /etc/rc.d/rc2.d
に置きます)。
***

(7) トラブルシュート
====================

インストール中に不具合が発生した場合は、次の項目をチェックしてください。

不具合 - SK-98xx アダプタをドライバが検出できません。
原因   - /proc/pci の中に、次のエントリがあるか探してください。
             'Ethernet controller: SysKonnect SK-98xx ...'
         このエントリがあれば、SK-98xx アダプタはシステムに認識されて
	 います。従って使用可能なはずです。
         このエントリがないか、ファイル '/proc/pci' 自体がなければ、ハー
	 ドウェアに不具合があるか、PCI のサポートがカーネルで有効になっ
         ていない可能性があります。
         アダプタは診断プログラムを用いてチェックできます。
         SysKonnect 社のウェブサイトから入手できます。
              www.syskonnect.de
         COMPAQ マシンのいくつかでは、Linux で PCI を用いる場合に不具
	 合があります。
         これは、'PCI howto' 文書 (いくつかのディストリビューションに
         含まれ、www なら例えば 'www.linuxdoc.org' から入手できます)
	 で述べられています。これは 2.2.x のカーネルで修正されているか
	 と思います (テストはしていません)。

不具合 - 'ifconfig' や 'route' などのプログラムが見つからない、あるい
         は、'Operation not permitted' のエラーメッセージが表示されま
	 す。
原因   - 'root' ユーザでログインしていません。ログアウトし root でログ
         インするか、'su' を使って root になってください。

不具合 - コマンド 'ping <address>' を用いると、"ping: sendto: Network
         is unreachable" のメッセージが表示されます。
原因   - 経路が正しく設定されていません。
         RedHat を使用しているなら、たぶん、'network configuration' の
	 経路設定を忘れています。
         'route' コマンドで既存の経路を確認し、'eth0' のエントリがある
         かどうか、およびそれが正しいかを確認してください。

原因   - ルーティングテーブルに異常があります。
         コマンド 'route' でルーティングテーブルを確認し、route の man
         ページを読んでください ('man route')。
注釈   - 2.2.x のカーネルはルーティングエントリを自動的に生成するとは
         いえ、この種の不具合は依然として発生します。我々が見つけたケー
         スでは、システムのブート時にドライバは正常に起動したのですが、
         ドライバを削除・リロードすると、アダプタのネットワークの経路
         が 'dummy0' デバイスに向いたため、手動で直さなければなりませ
         んでした。
	  
不具合 - 複数の IP サブネット間のルータとして (複数のアダプタを用い)
         コンピュータを使いたいが、他のサブネットワークのコンピュータ
         に到達できません。
原因   - ルータのカーネルに IP forwarding のための設定がされていないか、
         少なくともどちらかのコンピュータで、ルーティングテーブルやゲー
         トウェイ設定に問題があります。

不具合 - ドライバの起動時、次のエラーメッセージが表示されます。
	  "eth0: -- ERROR --
	   Class: internal Software error
	   Nr: 0xcc
	   Msg: SkGeInitPort() cannot init running ports"
原因   - マルチプロセッサマシン上で、SMP (対称型マルチプロセッサ) カー
         ネルとともに、シングルプロセッサ用にコンパイルされたドライバ
         を使用しています。
         カーネルを適切に設定してカーネルをコンパイルし直すか、モジュー
         ルをコンパイルし直してください。

不具合がここになければ、SysKonnect 社のテクニカルサポートへ連絡し、助
力を求めてください (linux@syskonnect.de)。
テクニカルサポートへお知らせいただく際には、可能な限り次の情報を添えて
ください。
- システムの製造元とモデル
- マザーボード
- Linux のディストリビューション
- カーネルのバージョン
***

(8) 履歴
========

VERSION 4.02 (In-Kernel version)
新機能 -
- カーネル 2.4 での変更を追加
既知の制限 -
- なし

VERSION 4.01 (In-Kernel version)
修正された不具合 -
- DualNet モードの統計値を完全にサポート
既知の制限 -
- なし

VERSION 4.00 (In-Kernel version)
修正された不具合 -
- メモリリークがありました
新機能 -
- Proc ファイルシステムの組込み
- DualNet 機能の組込み
- Rlmt ネットワークの追加
既知の制限 -
- DualNet モードにおける統計値が部分的に誤っている

VERSION 3.04 (In-Kernel version)
修正された不具合 -
- UltraSPARC 上のドライバ起動の障害
- ビッグエンディアンマシンでの受信データのチェックサム計算が動作しなかっ
  た
- ジャンボフレームが netstat の input-errors にカウントされていた

VERSION 3.03 (Standalone version)
修正された不具合 -
- PATH に "." がないと、コンパイルでスクリプト "printver.sh" が見つか
  らなかった
既知の制限 -
- なし

VERSION 3.02 (In-Kernel version)
修正された不具合 -
- なし
新機能 -
- Linux カーネルソースに統合 (2.2.14 および 2.3.29) 
既知の制限 -
- なし

VERSION 3.01
修正された不具合 -
- なし
新機能 -
- ソースすべてをリリース
既知の制限 -
- なし

VERSION 3.00
修正された不具合 -
- なし
新機能 -
- 1000Base-T アダプタ (SK-9821 および SK-9822) のサポート
既知の制限 -
- なし

VERSION 1.07
修正された不具合 -
- RlmtMode の引き数に値として与える文字列が誤っていた (#10437)
- ドライバが非常に多くの RLMT フレームを送っていた (#10439)
- ドライバがネットワークセグメントを認識できなかった (#10440)
- RLMT がセグメント化されたネットワーク上で頻繁に切り替えを行った
  (#10441)
既知の制限 -
- なし

VERSION 1.06
修正された不具合 -
- RlmtMode=CheckOtherLink もしくは RlmtMode=CheckSeg で動作させた後、
  しばらくして、システムパニックとなった (#10421)
  パニックメッセージは "Kernel panic: skput: over ... dev: eth0"
- back-to-back で接続されたポートを、ドライバは既定値に戻せなかった
  (#10422)
仕様変更 -
- RlmtMode の引き数名の変更
新機能 -
- ALPHA プロセッサのマシン向けサポートの追加
既知の制限 -
- なし

VERSION 1.05
修正された不具合 -
- バージョン情報を伴ったカーネル上でドライバのロードが失敗した
  モジュールシンボルの有効化に関する不具合
既知の制限 -
- なし

VERSION 1.04
修正された不具合 -
- ラージフレームサポートが動作するようになった (ラージフレームの設定は
  autonegotiation を使わず、手動で選択すること)
新機能 -
- ハードウェアで受信データのチェックサムを生成
- パフォーマンスの最適化
  数値 (2台の PII-400 マシンを back-to-back で接続) -
  netpipe: 300 MBit/sec, ラージフレームを使用: 470 MBit/sec
  ttcp:  38 MByte/sec, ラージフレームを使用: 60 MByte/sec
  ttcp (UDP 送信): 66 MByte/sec, ラージフレームを使用: 106 MByte/sec
既知の制限 -
- なし

VERSION 1.03
修正された不具合 -
- "rmmod" でアンロードしようとすると、セグメンテーションフォールト
  (#10415)
- リンクが確立していないのに、時々リンク LED が点滅した (#10402)
- RedHat 6.0 におけるインストールの障害 (#10409)
新機能 -
- "network connection up" 時に接続状態を出力
既知の制限 -
- なし

VERSION 1.02
修正された不具合 -
- 複数のアダプタ使用時の障害
- シングルポートアダプタ使用時の障害
- アダプタ認識時に起動文字列しか表示しなかった
- スイッチが再起動された時、特定のスイッチでリンクを確立できなかった
  (#10377)
既知の制限 -
- カーネル 2.2.3 のいくつかのマシンで "rmmod" を行うとセグメンテーショ
  ンフォールト

VERSION 1.01
修正された不具合 -
- 検出状態が 'warning/error' の後、'ok' に戻らなかった (#10386)
仕様変更 -
- ドライバの並行動作の向上

VERSION 1.00
既知の制限 -
- すべてのカーネルバージョンでテストしていない 
  (時間が足りませんでした :-)
- x86 バージョンのみ利用可能 (他のものが必要なら、問い合わせてください)
- ソースコードは部分的に入手可能です

***End of Readme File***

Linux カーネル 2.2 付属文書一覧へ戻る