WB(4)

名称
wb - Winbond W89C840F ファーストイーサネットデバイスドライバ

書式
device wb0

解説
wb ドライバは、Winbond W89C840F ファーストイーサネットコントローラを 利用した、PCI イーサネットアダプタ、 及び組み込み型コントローラをサポートしています。 このドライバには、Trendware TE100-PCIE など、 他の様々な安価なボードを含んでいます。 840F と 940F を混同しないでください。 940F は NE2000 クローンのため、10Mbps のみサポートしています。

Winbond コントローラは、バスマスタ DMA を使っています。 また、DECの 'tulip' と同性能になるようにデザインされています。 DEC の標準な設計とは、いくつかの点において異なっています: コントロールレジスタとステータスレジスタは 8 バイトではなく 4 バイト間隔になっています。 また、受信フィルタの設定は、 DMA 転送エンジンを経由した、特別なセットアップフレームを ダウンロードする方式ではなく、レジスタを通して行います。 外部の PHY を使うことによって、Winbond チップは、全二重または半二重に よる、10Mbps および 100Mbps の転送速度をサポートしています。

wb ドライバは次に挙げるメディアタイプをサポートしています:

autoselect
    メディアタイプ及びオプションの自動設定を有効にします。このオプションは、 Winbond コントローラに取り付けられた PHY チップが NWAY オートネゴシエーションをサポートする場合のみ利用可能です。 /etc/rc.conf にメディアオプションを追加することによって、 自動的に設定されたモードをユーザが手動で変更可能となります。

10baseT/UTP
    転送方式を 10Mbps に設定します。 mediaopt オプションを指定することによって、 全二重 モード、または 半二重 モードのどちらかひとつを利用できます。

100baseTX
    転送方式を 100Mbps (ファーストイーサネット) に設定します。 mediaopt オプションを指定することによって、 全二重 モード、または 半二重 モードのどちらかひとつを利用できます。

wb ドライバは次に挙げるメディアオプションをサポートしています:

full-duplex
    強制的に全二重に設定します。

half-duplex
    強制的に半二重に設定します。

100baseTX メディアタイプは、アダプタがサポートしているときに限って使用可能 であることに注意してください。 このデバイスの設定に関する、さらに詳しい情報については ifconfig(8) を参照してください。

診断

wb%d: couldn't map memory 致命的な初期化エラーが発生しました。

wb%d: couldn't map interrupt 致命的な初期化エラーが発生しました。

wb%d: watchdog timeout デバイスがネットワークに応答するのを停止したか、あるいは、 ネットワーク接続 (ケーブル) に関する問題が発生しました。

wb%d: no memory for rx list ドライバは、mbuf を受信リングに割り当てられませんでした。

wb%d: no memory for tx list パッドバッファを割り当てる際、 あるいは mbuf チェーン をクラスタに分割する際に、 ドライバは mbuf を送信リングに割り当てられませんでした。

wb%d: chip is in D3 power state -- setting to D0 このメッセージは、 パワーマネジメントをサポートするアダプタだけにあてはまります。 オペレーティングシステムによっては、 シャットダウン時にコントローラを低消費電力モードに設定します。 しかし、PCI BIOS によっては、チップの設定を開始するまでに、 チップを低消費電力モードから回復させることができないものがあります。 コントローラは D3 状態になると、PCI に関する設定を全て失ってしまいます。 従って、 BIOS が時間内にコントローラをフルパワーモードに戻すことができない場合、 PCI に関する設定を正常に行うことができません。 ドライバはこのような状態を検知したとき、アダプタを D0 (フルパワー) 状態に戻すことを試みます。 しかし、ドライバを完全に操作可能な状態まで、 復帰させることができないことがあります。 もしブート時にこのようなメッセージが表示され、 ドライバがネットワークインタフェースとして デバイスにアタッチできなかった場合には、 デバイスを正しく設定するために もう一回ウォームブートを行う必要があります。

このような状況は、他のオペレーティングシステムから ウォームブートを行った場合にのみ発生します。 FreeBSD をブートする前にマシンの電源を落しておけば、 カードは正しく認識されるはずです。

関連項目
arp(4), netintro(4), ifconfig(8)

歴史
wb デバイスドライバは FreeBSD 3.0 で登場しました。

作者
wb ドライバは Bill Paul <wpaul@ctr.columbia.edu> が作成しました。

バグ
接続先がモードを切り換える際、Winbond チップは 奇妙な振舞いを起しているように思われます。 例として、両方を 10Mbps 半二重の状態にセットしたとします。 それから片方を 100Mbps 全二重に設定すると、 Winbond チップのレシーバは RX 記述子の至るところにゴミを 書き始めます。 wb ドライバは、コントローラチップと付属の PHY を 強制的にリセットすることによってこの問題に対処します。 荒治療ではありますが、このような状態から正しく回復するための 唯一の方法に思えます。