スポンサーリンク

RL(4) FreeBSD/i386 カーネルインタフェースマニュアル RL(4)

名称

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

書式

device rl0

解説

rl ドライバは、RealTek 8129, 8139 ファストイーサネットコントローラチップ が載っている、PCI イーサネットアダプタやコントローラをサポートしていま す。これは、 Allied Telesyn AT2550, Genius GF100TXR, NDC Communications NE100TX-E, OvisLink LEF-8129TX, OvisLink LEF-8139TX, Netronix Inc. EA-1210 NetEther 10/100, KTX-9130TX 10/100 Fast Ethernet, Encore ENL832-TX 10/100 M PCI, Longshine LCS-8038TX-R, SMC EZ Card 10/100 PCI 1211-TX や、ほかの安価なアダプタを含みます。 RealTek 互換であると思われる MPX5030 (または MPX5038) と書いてあるチップが載っているAccton EN1207D も サポートしています。

RealTek コントローラはバスマスタ DMA を使いますが、ディスクリプタベースの データ伝送機構は用いません。受信側はひとつの固定サイズのリングバッファを 用い、パケットはそこから mbuf にコピーされます。伝送のために、外向きのパ ケットアドレスレジスタが 4 つだけありますが、外向きのパケットがすべて隣接 したバッファに入れられることが要求されます。さらに、外向きのパケットバッ ファは longword に整列されている必要があります。さもなければ、伝送は失敗 します。

8139 は特別なダイレクトアクセスレジスタによってコントロールされる内部 PHY を持っていますが、8129 は MII バス経由で外部 PHY を用いているという点で、 8139 と 8129 は違います。8139 は全二重または半二重における 10 または 100Mbps をサポートしています。8129 は適切な PHY チップによって決まってい る同じスピードとモードをサポートしています。

rl ドライバは次のようなメディアタイプをサポートしています。

       autoselect

メディアタイプとオプションの自動選択を使用可能にし ます。これは、 RealTek コントローラについている PHY チップが NWAY オートネゴシエーションをサポートして いるときのみ可能です。ユーザは /etc/rc.conf ファイ ルにメディアオプションを書き加えることで、自動選択 モードを手動で上書きすることができます。

10baseT/UTP
10Mbps に設定します。 mediaoptfull-duplex また は half-duplex モードを選択するために用いることがで きます。

100baseTX
100Mbps (ファストイーサネット) に設定します。 mediaoptfull-duplex または half-duplex モードを 選択するために用いることができます。

rl ドライバは次のようなメディアオプションをサポートしています。

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

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

アダプタがサポートしているときのみ、100baseTX メディアタイプは有効です。 このデバイスをさらに設定するためには、 ifconfig(8) を参照してください。

診断

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 (フルパワー) 状態に設定しなおそうとしますが、ド ライバを完全に操作できる状態にするのには至らないかもしれません。ブート時 にこのメッセージが現れ、ドライバがネットワークインタフェースとしてデバイ スをアタッチすることに失敗するのなら、デバイスを適切に設定するために 2 度 目のウォームブートを行う必要があります。

他のオペレーティングシステムからウォームブートするときのみに、この状態は 起こります。 FreeBSD のブート前にシステムの電源を切れば、カードが正常に設 定されます。

関連項目

arp(4), netintro(4), ifconfig(8)

       RealTek 81298139 のデータシート,                                              ftp.realtek.com.tw:/lancard/datasheet.

歴史

rl デバイスドライバは FreeBSD 3.0 に初めて現れました。

作者

rl ドライバは Bill Paul ⟨wpaul@ctr.columbia.edu⟩ が書きました。

バグ

外に出て行くパケットは longword に並べる必要があるので、伝送ルーチンは伝 送前に、整列していないパケットを mbuf クラスタバッファにコピーする必要が あります。システム開始時にページ境界から始まる連続した領域にクラスタバッ ファプールが確保されているという事実を、ドライバは濫用します。クラスタ バッファは 2048 バイトなので、当然 longword 境界に整列しています。ドライ バはおそらくこの特性に依存するべきではありません。

RealTek のデータシートの品質はとりわけ貧弱です。文法とスペルはひどいです し、多くの情報、特に受信器としての処理に関する情報が抜けています。非常に 重要な事実として、チップが受信バッファをフィルする (訳注: 受信データを入 れる) 方法に関して記述してないということがあります。フレームが受信された ことを知らせる割り込みが起きたときに、ドライバがこのフレームを処理してい る間に、次のフレームが受信バッファへコピーされている最中になる可能性があ ります。チップが次のフレームの残りを DMA してしまう前に、ドライバが最初の フレームを処理し終えたなら、チップが次のフレームのすべてを DMA するより前 に、バッファにあるそのフレームをドライバが処理しようとするかもしれませ ん。

ドライバは実パケットデータの前についているヘッダ中のフレーム長を調べるこ とで、不完全なフレームかどうかをチェックできます。不完全なフレームは 0xFFF0 というマジック長です。ドライバはこの長さを発見すると、現在有効なパ ケットをすべて処理し終えたことを知ることができます。このマジック値とその 重要性については、RealTek のデータシートのどこにも書いてありません。

FreeBSD November 4, 1998 FreeBSD

スポンサーリンク