ED(4) FreeBSD/i386 カーネルインタフェースマニュアル ED(4)
名称
ed − 高性能イーサネットデバイスドライバ |
書式
device ed0 at isa? port 0x280 net irq 5 iomem 0xd8000 |
device ed1 at isa? port 0x300 net irq 5 iomem 0xd8000 |
device ed2 at isa? port 0x320 net irq 10 flags 0x4 iosiz 16384 iomem 0xd8000 |
解説 |
ed ドライバは、National Semiconductor の DS8390 に基づく 8 または 16 ビッ トの ISA イーサネットカードと、他の会社が製造した同様の NIC (訳注: ネット ワークインタフェースカード) をサポートします。 このドライバは Western Digital が製造したすべての 80x3 シリーズの ISA イーサネットカードと SMC, SMC Ultra, 3Com 3c503, Novell NE1000/NE2000, HP PC Lan+ をサポートします。 ed ドライバは独特のマルチバッファ機構を用いて、高い伝送性能を達成していま す。 16 ビット ISA カードを使ったときに、IEEE 802.3 CSMA イーサネットの理 論最大性能の 97% が実現できます。 標準の、ポートや IRQ の指定機能に加え、 8/16 ビットモードの強制機能、マル チバッファの有効化/無効化機能、そしてデフォルトインタフェースタイプの選択 機能 (AUI/BNC、ツイストペアを持つカードでは AUI/10BaseT) をサポートする、 いくつもの flags を ed ドライバはサポートしています。 flags はビットフィールドであり、まとめると次のようになります: |
0x01 トランシーバを無効にします。トランシーバをサポートするカードでは、このフラグはトランシーバを無効にして、デフォルトでAUI 接続が使われます。
0x02 強制的に 8 ビットモードにします。このフラグは、カードが自分 をどのように認識したとしても、強制的に 8 ビットモードにしま す。このフラグは、 8 ビットインタフェースしか持っていないに もかかわらず、自分自身を 16 ビットであると誤認識するいくつ かのクローンのカードで必要になります。 0x04 強制的に 16 ビットモードにします。このフラグは、カードが自 分をどのように認識したとしても、強制的に 16 ビットモードに します。このフラグは、 16 ビット ISA インタフェースを持って いるにもかかわらず、自分自身を 8 ビットであると誤認識するい くつかのクローンのカードで必要になります。 0x08 マルチバッファによる転送を無効にします。このフラグは、複数 の転送バッファの使用を禁止します。送り先のマシンが扱えるよ りも速くパケットを送るときに発生する競合状態 (重大なパケッ ト損失により分かります) で必要になるかもしれません。いくつ かの (FreeBSD でない :-)) マシンは、ひどいイーサネット性能 で、単なる 1100K+ データ転送さえも対処できません。このフラ グを使うことは、受信バッファをパケット 1 個分増やす価値もあ ります。また、8 ビットカード上では、受信損失を減らす助けに なるかもしれません。 3c503 カードを使うとき、 ifconfig(8) に link2 オプションを指定することに よって、 AUI 接続を選択してもかまいません (BNC がデフォルト)。 診断 |
ed%d: kernel configured irq %d doesn’t match board configured irq %d. カーネル設定ファイルの中で指定され (カーネルに組み込まれ) た IRQ 番号が、 インタフェースカードに設定された IRQ と異なっています。 ed%d: failed to clear shared memory at %x - check configuration. システ ムブートの際にカードがプローブされたときに、 ed ドライバがカードの共有メ モリをクリアできないことが判明しました。これは大抵、BIOS の拡張 ROM が イーサネットカードの共有メモリと同じアドレスに設定されている場合に起こり ます。ぶつかっているカードをみつけて、 BIOS ROM を衝突しないアドレスに変 更してください。または、カードの共有メモリが衝突しないアドレスにマップさ れるように、カーネル設定ファイル内の iomem オプションを変更して下さい。 ed%d: Invalid irq configuration (%d) must be 2-5 for 3c503. カーネル設定 ファイル内で指定されている IRQ 番号が 3Com 3c503 カードにとって不正です。 3x503 には、IRQ 2 から 5 までのみ割り当て可能です。 ed%d: Cannot find start of RAM. ed: packets buffered, but transmitter idle. ドライバの論理的な問題を示し ています。これはまず起こらないでしょう。 ed%d: device timeout 予期された転送割り込みが生じなかったことを示してい ます。通常、ISA バスの他のカードとの割り込みの衝突によって起こります。 ed%d: NIC memory corrupt - invalid packet length %d. IEEE 802.3 規格で許 されている最大長より大きなサイズまたは最小長より短いサイズのパケットが受 信されたことを示しています。通常、ISA バスの他のカードとの衝突により起こ りますが、場合によっては間違ったケーブルの引き回しを示していることもあり ます。 ed%d: remote transmit DMA failed to complete. これは、NE1000 や NE2000 の型のカードへのプログラム I/O 転送を正しく完了できなかったことを示してい ます。通常、ISA バス速度の設定が速過ぎた場合に起こります。 |
警告
DS8390 チップの初期リビジョンには問題があります。受信リングバッファが溢れ ると固まってしまうのです。ときにはパケットリングヘッダ内の長さフィールド のバイト順を切り替えてしまい (この原因として off-by-one アラインメントに 関連したものがいくつかあります)、"NIC memory corrupt - invalid packet length" というメッセージを出力します。このような問題が起こるとカードはリ セットされますが、この状態からの回復に関するその他の問題はありません。 NIC メモリのアクセスは、 3Com や Novell のカードでは WD/SMC のカードより 非常に遅いです。 8 ビットボードでは 1MB/秒以下、16 ビットカードでは 2MB/ 秒以下となります。著しいネットワークトラフィックがある場合に、リングバッ ファがあふれてパケットを落すことになるかもしれません。 16 ビット Compex カードは自分が 8 ビットであると認識します。このカードは 8 ビットモードでも動作しますが、カーネル設定ファイルに flags 0x04 (16 ビットモードを強制する) を指定すると、より高い性能が得られます。さらに 16 ビットモードが提供する追加の 8k の共有メモリを利用するために、 iosize 16384 も指定した方が良いでしょう。 |
バグ
ed ドライバは、不正なパケットを受信したときには、少々積極的にカードをリ セットし過ぎるきらいがあります。結果として、受信した正当なパケットで、 カードから主メモリに転送していないものを、捨ててしまうかもしれません。 |
関連項目
歴史
ed デバイスドライバは、 FreeBSD 1.0 で最初に登場しました。 |
作者
ed デバイスドライバと本マニュアルは David Greenman が書きました。 FreeBSD October 28, 1995 FreeBSD |