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

名称

rlRealTek 8129/8139 ファストイーサネットデバイスドライバ

書式

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

device miibus
device rl

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

if_rl_load="YES"

解説

rl ドライバは、RealTek 8129 と 8139 ファーストイーサネットコントローラチップに基づく PCI イーサネットアダプタと組み込みコントローラのサポートを行ないます。

RealTek 8129/8139 シリーズコントローラは、バスマスタ DMA を使用しますが、ディスクリプタベースのデータ転送メカニズムは、使用しません。受信側は、パケットを mbuf にコピーしなければならない単一の固定サイズリングバッファを使用します。送信のために、すべての発信パケットが連続的なバッファとして格納されることを必要とする 4 つの発信パケットアドレスレジスタしかありません。さらに、発信パケットバッファは、ロングワードに整列されなければなりません。さもなければ送信が失敗します。

8139 が特別なダイレクトアクセスレジスタによって制御される内部 PHY を持っているのに対して 8129 は、MII バスを通して外部 PHY を使用するという点において 8129 は、8139 と異なっています。 8129 は、全二重か半二重のいずれかで 10Mbps と 100Mbps の両方の速度をサポートしています。 8129 は、適切な PHY チップを前提として同じ速度とモードをサポートできます。

注: 8139C+ のチップのためのサポートは、 re(4) ドライバによって提供されています。

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

autoselect
メディアタイプとオプションの自動選択を有効にします。 RealTek コントローラに取り付けられた PHY チップが NWAY 自動ネゴシエーションをサポートする場合にだけ、これは、サポートされます。ユーザは、 /etc/rc.conf ファイルにメディアオプションを加えることによって、手動で自動選択モードを無効にできます。
10baseT/UTP
10Mbps オペレーションを設定します。 mediaopt オプションも 全二重 または 半二重 モードのいずれかを選択するために使用できます。
100baseTX
100Mbps (ファーストイーサネット) オペレーションを設定します。 mediaopt オプションも 全二重 または 半二重 モードのいずれかを選択するために使用できます。

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

full-duplex
全二重オペレーションを強制的に設定します。
half-duplex
半二重オペレーションを強制的に設定します。

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

ハードウェア

rl ドライバによってサポートされたアダプタは、次を含んでいます:

  • Accton “Cheetah” EN1207D (MPX 5030/5038; RealTek 8139 clone)
  • Allied Telesyn AT2550
  • Allied Telesyn AT2500TX
  • Belkin F5D5000
  • BUFFALO (Melco INC.) LPC-CB-CLX (CardBus)
  • Compaq HNE-300
  • CompUSA no-name 10/100 PCI Ethernet NIC
  • Corega FEther CB-TXD
  • Corega FEtherII CB-TXD
  • D-Link DFE-520TX (rev. C1)
  • D-Link DFE-528TX
  • D-Link DFE-530TX+
  • D-Link DFE-538TX
  • D-Link DFE-690TXD
  • Edimax EP-4103DL CardBus
  • Encore ENL832-TX 10/100 M PCI
  • Farallon NetLINE 10/100 PCI
  • Genius GF100TXR
  • GigaFast Ethernet EE100-AXP
  • KTX-9130TX 10/100 Fast Ethernet
  • LevelOne FPC-0106TX
  • Longshine LCS-8038TX-R
  • NDC Communications NE100TX-E
  • Netronix Inc. EA-1210 NetEther 10/100
  • Nortel Networks 10/100BaseTX
  • OvisLink LEF-8129TX
  • OvisLink LEF-8139TX
  • Peppercon AG ROL-F
  • Planex FNW-3603-TX
  • Planex FNW-3800-TX
  • SMC EZ Card 10/100 PCI 1211-TX
  • SOHO (PRAGMATIC) UE-1211C

ローダ調整変数

dev.rl.%unit.prefer_iomap
レジスタマッピングを制御するこの調整変数は、指定されたデバイスで使用されるべきです。 0 以外の値は、I/O 空間レジスタマッピングを有効にします。 I/O 空間レジスタマッピングがないコントローラに関して、この調整変数は、メモリ空間レジスタマッピングを使用するように 0 に設定されるべきです。デフォルト値は、I/O 空間レジスタマッピングを使用する 1 です。
dev.rl.%unit.twister_enable
0 以外の値は、指定されたデバイスで長いケーブルチューニングを有効にします。デフォルトで無効にされます。

診断

rl%d: couldn't map memory
致命的な初期化エラーが生じました。
rl%d: couldn't map interrupt
致命的な初期化エラーが生じました。
rl%d: watchdog timeout
デバイスがネットワークに応答を止めたか、またはネットワーク接続 (ケーブル) に関する問題があります。
rl%d: no memory for rx list
ドライバは、受信リングのための mbuf の割り付けに失敗しました。
rl%d: no memory for tx list
パッドバッファを割り付けるか、クラスタへ mbuf チェーンを折りたたむ場合、ドライバは、送信リングのための mbuf の割り付けに失敗しました。
rl%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), ifconfig(8) The RealTek 8129, 8139 and 8139C+ datasheets, http://www.realtek.com.tw.

歴史

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

作者

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

バグ

発信パケットは、ロングワードに整列されなければならないので、送信ルーチンは、送信の前に mbuf クラスタバッファの中に整列されていないパケットをコピーしなければなりません。クラスタバッファプールがページ境界で始まってシステム起動時に連続した領域にを割り付けられるという事実をドライバは、不正利用しています。クラスタバッファは、2048 バイトであるので、それらは、当然ロングワードに整列されます。ドライバは、たぶんこの特性に依存するべきではありません。

RealTek のデータシートは、とりわけ低品質で、特に受信側の操作に関して多くの情報が欠けています。言い忘れたデータシートに関する 1 つの特に重要な事実は、チップが受信バッファに注入する方法に関連しています。割り込みがフレームが受信されたことを知らせるためにポストされるとき、ドライバが最初のものを忙しく操作する間に、他のフレームが受信バッファにコピーされる最中になるかもしれないことがあり得ます。チップが次のフレームの残りの部分を DMA し終わる前にドライバが最初のフレームの処理をし終える場合、チップがそれのすべてを DMA し終わったことがある前にドライバは、バッファの中に次のフレームを処理するのを試みるかもしれません。

ドライバは、実際のパケットデータに先行するヘッダ中のフレームの長さを調べることによって不完全なフレームがないかどうかチェックすることができます: 不完全なフレームは、0xFFF0 の入ったマジック長さがあります。ドライバがこの値に遭遇すると、現在利用可能なすべてのパケットを処理し終えたことを知っています。このマジック値もその意味も RealTek データシートでどこにも文書化されていません。

January 16, 2013 FreeBSD