EN JA
DC(4)
DC(4) FreeBSD Kernel Interfaces Manual DC(4)

名称

dcDEC/Intel 21143 とクーロン 10/100 イーサネットドライバ

書式

このドライバをカーネルにコンパイルするためには、次の行を利用者のカーネル設定ファイルに置きます:

device miibus
device dc

もう一つの方法として、ブート時にモジュールとしてドライバをロードするためには、次の行を loader.conf(5) に置きます:

if_dc_load="YES"

解説

dc ドライバは、いくつかの PCI ファーストイーサネットアダプタと DEC/Intel 21143 チップセットとクーロンに基づく組み込みコントローラのサポートを行ないます。

サポートされたチップセットのすべては、同じ汎用レジスタレイアウト、 DMA 記述子形式、および操作メソッドがあります。クローンチップのすべては、様々な変更がある 21143 設計に基づいています。 21143 自体は、10baseT, BNC, AUI, MII とシンボルメディアアタッチメント、全二重と半二重で 10Mbps と 100Mbps の速度、 LAN の NWAY 自動ネゴシエーションとウェーク (覚醒) の構築をサポートします。 21143 は、また、完全なフィルタ、逆の完全なフィルタ、ハッシュテーブルフィルタを含むいくつかの受信フィルタプログラミングオプションを提供します。

他のものが表面的な類似性を保持しているだけであるのに、いくつかのクローンチップは、極めて念入りに 21143 を複製しています。あるものは、MII メディア付属物だけをサポートします。他のものは、異なった受信フィルタプログラミングメカニズムを使用します。少なくとも 1 つは、チューニングされた DMA 記述子にみをサポートします (ほとんどは、チェーニングされた記述子と連続的に割り付けられた固定サイズのリングの両方のサポートします)。また、いくつかのチップ (特に PNIC) には、独特のバグがあります。 dc ドライバは、特別な場合のコードを最小に抑えるためにこれらのチップセットのすべての一般化されたサポートを行なうために最善をつくします。

これらのチップは、すべてのサポートされたカードの完全なリストを提供するのが難しいくらい、多くのベンダによって使用されています。

dc ドライバは、次のメディアタイプをサポートします:

autoselect
メディアタイプとオプションの自動選択を有効にします。ユーザは、 /etc/rc.conf ファイルにメディアオプションを加えることによって、手動で自動選択モードを無効にできます。

注意: オリジナルの PNIC 82c168 チップ上の組み込み NWAY 自動ネゴシエーションは、ひどく壊されており、現時点で、 dc ドライバによってサポートされません (詳細に関しては、 バグ セクションを参照してください)。オリジナルの 82c168 は、LinkSys LNE100TX と Matrox FastNIC のかなり早いリビジョンに現れます。

10baseT/UTP
10Mbps オペレーションを設定します。 mediaopt オプションも 全二重 オペレーションを有効にするために使用できます。 全二重 を指定しないと 半二重 モードを意味します。
100baseTX
100Mbps (ファーストイーサネット) オペレーションを設定します。 mediaopt オプションも 全二重 オペレーションを有効にするために使用できます。 全二重 を指定しないと 半二重 モードを意味します。

dc ドライバは、次のメディアオプションをサポートします:

full-duplex
全二重オペレーションを強制的に設定します。このメディアオプションが指定されない場合、インタフェースは、半二重モードで動作します。

100baseTX メディアタイプが 10Mbps メディアアタッチメントのみサポートされる特定の Intel 21143 アダプタで利用可能でないかもしれないことに注意してください。このデバイスの設定についてのより詳しい情報については、 ifconfig(8) を参照してください。

ハードウェア

dc ドライバは、次のチップセットのサポートを行います:

  • DEC/Intel 21143
  • ADMtek AL981 Comet, AN985 Centaur, ADM9511 Centaur II と ADM9513 Centaur II
  • ALi/ULi M5261 と M5263
  • ASIX Electronics AX88140A と AX88141
  • Conexant LANfinity RS7112 (miniPCI)
  • Davicom DM9009, DM9100, DM9102 と DM9102A
  • Lite-On 82c168 と 82c169 PNIC
  • Lite-On/Macronix 82c115 PNIC II
  • Macronix 98713, 98713A, 98715, 98715A, 98715AEC-C, 98725, 98727 と 98732
  • Xircom X3201 (cardbus のみ)

次の NIC が現時点で dc ドライバと共に動作することが知られています:

  • 3Com OfficeConnect 10/100B (ADMtek AN985 Centaur-P)
  • Abocom FE2500
  • Accton EN1217 (98715A)
  • Accton EN2242 MiniPCI
  • Adico AE310TX (98715A)
  • Alfa Inc GFC2204 (ASIX AX88140A)
  • Compaq Presario 7900 シリーズディスクトップに組み込まれた 10Mbps のみのイーサネット (21143, 非-MII)
  • Sun Netra X1 と Sun Fire V100 に組み込まれた Sun DMFE 10/100 Mbps イーサネット (DM9102A, MII)
  • LinkSys EtherFast 10/100 Instant GigaDrive に組み込まれたイーサネット (DM9102, MII)
  • CNet Pro110B (ASIX AX88140A)
  • CNet Pro120A (98715A または 98713A) と CNet Pro120B (98715)
  • Compex RL100-TX (98713 または 98713A)
  • D-Link DFE-570TX (21143, MII, quad port)
  • Digital DE500-BA 10/100 (21143, 非-MII)
  • ELECOM Laneed LD-CBL/TXA (ADMtek AN985)
  • Hawking CB102 CardBus
  • IBM EtherJet Cardbus Adapter
  • Intel PRO/100 Mobile Cardbus (X3201 チップセットを使用するバージョン)
  • Jaton XpressNet (Davicom DM9102)
  • Kingston KNE100TX (21143, MII)
  • Kingston KNE110TX (PNIC 82c169)
  • LinkSys LNE100TX (PNIC 82c168, 82c169)
  • LinkSys LNE100TX v2.0 (PNIC II 82c115)
  • LinkSys LNE100TX v4.0/4.1 (ADMtek AN985 Centaur-P)
  • Matrox FastNIC 10/100 (PNIC 82c168, 82c169)
  • Melco LGY-PCI-TXL
  • Microsoft MN-120 10/100 CardBus (ADMTek Centaur-C)
  • Microsoft MN-130 10/100 PCI (ADMTek Centaur-P)
  • NDC SOHOware SFA110A (98713A)
  • NDC SOHOware SFA110A Rev B4 (98715AEC-C)
  • NetGear FA310-TX Rev. D1, D2 または D3 (PNIC 82c169)
  • Netgear FA511
  • PlaneX FNW-3602-T (ADMtek AN985)
  • SMC EZ Card 10/100 1233A-TX (ADMtek AN985)
  • SVEC PN102-TX (98713)
  • Xircom Cardbus Realport
  • Xircom Cardbus Ethernet 10/100
  • Xircom Cardbus Ethernet II 10/100

sparc64 では、 dc ドライバは、Sun Netra X1 と Sun Fire V100 で Sun DMFE 10/100 Mbps イーサネットインタフェースに組み込まれた local-mac-address? システム設定変数を順守します。このシステム設定変数は、 setenv コマンドを使用する Open Firmware ブートモニタか、または eeprom(8) によって設定することができます。“ ” (デフォルト) に設定されなら、 dc ドライバは、組み込みデバイスの両方でシステムのデフォルト MAC アドレスを使用します。“ ”に設定されるなら、システムのデフォルト MAC アドレスよりはむしろそれぞれのインタフェースのユニークな MAC アドレスが使用されます。

診断

dc%d: couldn't map ports/memory
致命的な初期化エラーが生じました。
dc%d: couldn't map interrupt
致命的な初期化エラーが生じました。
dc%d: watchdog timeout
パケットは、送信のためのキューに入れられ、送信コマンドが発行されますが、タイムアウトの期限が切れる前にデバイスは、送信肯定応答に失敗しました。デバイスがある理由で割り込みを配信することができないなら、これが起こるかもしれません。ネットワーク接続 (ケーブルまたはネットワーク装置) に関して問題があれば、それは、リンクを失う結果となります。
dc%d: no memory for rx list
ドライバは、受信リングのための mbuf の割り付けに失敗しました。
dc%d: TX underrun -- increasing TX threshold
デバイスは、DMA とパケットの送信を試みている間に、送信アンダランエラーを発生します。ホストがパケットデータを十分早く NIC の FIFO に DMA できないなら、これは、起こります。ドライバは、送信開始スレッシュホールド (閾値) をダイナミックに増加させます。それで、より多くのデータは、 NIC がそれを配線に送信し始める前に FIFO に DMA しなければなりません。
dc%d: TX underrun -- using store and forward mode
これだけ、考えられる送信開始スレッシュホールドの設定が試みられたのに、デバイスは、送信アンダランを発生し続けます。したがって、ドライバは、格納と転送モードでプログラムされます。このモードでは、全体のパケットが FIFO メモリに転送されるまで、 NIC は、送信を始めません。
dc%d: chip is in D3 power state -- setting to D0
このメッセージは、パワーマネージメントをサポートするアダプタだけにあてはまります。いくつかのオペレーティングシステムは、シャットダウンするとき、コントローラを低消費電力モードにし、いくつかの PCI BIOS は、それを設定する前に、この状態でチップを明らかにすることに失敗します。コントローラは、D3 状態で PCI 設定のすべてを失うので、BIOS が時間内にそれをフルパワーモードに戻せない場合、正しくそれを設定することができません。ドライバは、この状態を検出して、D0 (フルパワー) 状態にアダプタを戻しますが、これは、ドライバを完全な操作状態に復帰するためには十分ではありません。利用者がブート時にこのメッセージを見つけ、ドライバがネットワークインタフェースとしてデバイスのアタッチに失敗した場合、利用者は、デバイスを適切に設定させるためにウォームブートを実行しなければなりません。

この状態は、別のオペレーティングシステムからウォームブートするときのみ生じることに注意してください。 FreeBSD をブートする前に利用者のシステムをパワーダウンする場合、カードは、正しく設定されるはずです。

関連項目

altq(4), arp(4), miibus(4), netintro(4), ng_ether(4), polling(4), vlan(4), eeprom(8), ifconfig(8) ADMtek AL981, AL983 and AL985 data sheets, http://www.admtek.com.tw. ASIX Electronics AX88140A and AX88141 data sheets, http://www.asix.com.tw. Davicom DM9102 data sheet, http://www.davicom.com.tw/userfile/24247/DM9102H-DS-F01-021508.pdf. Intel 21143 Hardware Reference Manual, http://developer.intel.com. Macronix 98713/A, 98715/A and 98725 data sheets, http://www.macronix.com. Macronix 98713/A and 98715/A app notes, http://www.macronix.com.

歴史

dc デバイスドライバは、 FreeBSD 4.0 ではじめて登場しました。

作者

dc ドライバは、 Bill Paul <wpaul@ee.columbia.edu>によって書かれました。

バグ

Macronix アプリケーションノートでは、通常の操作でチップに記入するためにドライバは、特定のマジックナンバ (数値) を CSR16 レジスタに書き込まなければならないと要求しています。ナンバ (数値) は、アプリケーションノートに文書化されたいますが、ビットの正確な意味は、文書化されていません。

98713A は、10Mbps 全二重モードで問題があるように思えます。送信側は、動作しますが、受信側は、全体の性能がたいへんに貧弱となる多くの説明されないエラーを起こす傾向があります。 98715A は、この問題を示しません。 98713A の他のすべてのモードが正しく動作するように思えます。

オリジナルの 82c168 PNIC チップは、特定の初期の LinkSys LNE100TX と Matrox FastNIC カードで使用される NWAY サポートを組み込んでいますが、確実に使用するのはひどく壊れて難しいです。その結果として、自動ネゴシエーションは、現在、このチップセットでは、サポートされません: ドライバは、NIC を 10baseT 半二重でデフォルトとして、必要なら、オペレータを異なったモードに手動で選択しようとします。 (後のカードは、NWAY 自動ネゴシエーションを実装して正しく動作するために外部の MII トランシーバを使用します。)

dc ドライバは、デフォルトで送信開始スレッシュホールドのために格納と転送設定で使用される 82c168 と 82c169 PNIC チップをプログラムします。これは、たぶん PCI DMA バースト転送誤りのため、 100Mbps で作動するとき PNIC が不正なフレームを送信することができるいくつかの NIC/PCI バスの組み合わせに関する問題の周りで働きます。

また、82c168 と 82c169 PNIC チップは、チップがホストに受信フレームを不適切に DMA するところで、重い受信と送信活動の期間の間に時々現れる受信バグがあります。チップは、まさしく予想されたものの代わりにいくつかの受信 RX バッファを汚す、受信されたフレームデータとともに数キロバイトのガーベージデータをアップロードするように見えます。 dc ドライバは、この状態を検出してフレームを復旧します。しかしながら、それは、プロセスで重大な性能の不利益を被ります。

また、PNIC チップは、ドライバが、不当にプログラムされた受信フィルタに帰着することができる、受信側フィルタセットアップフレームをダウンロードするのを試みるとき、時々送信アンダランエラーを発生させます。その転送が成功するまで、 dc ドライバは、この状態を注目してセットアップフレームを再びキューに入れます。

ADMtek AL981 チップ (そして、たぶん AN985 も同様に) は、送信時に時々割り込ませるために観察されます: これは、ドライバが送信記述子リングの終わりから始めに折り返す場合に、フレームのシーケンスをキューに入れるとき、起こるように思われます。 dc ドライバは、 dc_start() ルーチンの一つの呼び出しの間に、送信リングの終わりに渡されるフレームを何もキューに入れないことによってこの状態を避けるように試みます。この回避方法は、送信性能においてごくわずかな影響力があります。

October 24, 2011 FreeBSD