.\" Copyright (c) 1997, 1998 .\" Bill Paul . All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by Bill Paul. .\" 4. Neither the name of the author nor the names of any co-contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY Bill Paul AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL Bill Paul OR THE VOICES IN HIS HEAD .\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR .\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF .\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS .\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN .\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF .\" THE POSSIBILITY OF SUCH DAMAGE. .\" .\" %Id: rl.4,v 1.7 1998/12/24 18:52:47 wpaul Exp % .\" $FreeBSD$ .\" .Dd November 4, 1998 .Dt RL 4 i386 .Os FreeBSD .Sh 名称 .Nm rl .Nd RealTek 8129/8139 ファストイーサネットデバイスドライバ .Sh 書式 .Cd "device rl0" .Sh 解説 .Nm ドライバは、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 もサポートしています。 .Pp RealTek コントローラはバスマスタ DMA を使いますが、ディスクリプタベース のデータ伝送機構は用いません。受信側はひとつの固定サイズのリングバッファ を用い、パケットはそこから mbuf にコピーされます。 伝送のために、外向きのパケットアドレスレジスタが 4 つだけありますが、 外向きのパケットがすべて隣接したバッファに入れられることが要求されます。 さらに、外向きのパケットバッファは longword に整列されている必要があります。 さもなければ、伝送は失敗します。 .Pp 8139 は特別なダイレクトアクセスレジスタによってコントロールされる内部 PHY を 持っていますが、8129 は MII バス経由で外部 PHY を用いているという点で、 8139 と 8129 は違います。8139 は全二重または半二重における 10 または 100Mbps をサポートしています。8129 は適切な PHY チップによって 決まっている同じスピードとモードをサポートしています。 .Pp .Nm ドライバは次のようなメディアタイプをサポートしています。 .Pp .Bl -tag -width xxxxxxxxxxxxxxxxxxxx .It autoselect メディアタイプとオプションの自動選択を使用可能にします。これは、 RealTek コントローラについている PHY チップが NWAY オートネゴシエーションを サポートしているときのみ可能です。ユーザは .Pa /etc/rc.conf ファイルにメディアオプションを書き加えることで、 自動選択モードを手動で上書きすることができます。 .It 10baseT/UTP 10Mbps に設定します。 .Ar mediaopt は .Ar full-duplex または .Ar half-duplex モードを選択するために用いることができます。 .It 100baseTX 100Mbps (ファストイーサネット) に設定します。 .Ar mediaopt は .Ar full-duplex または .Ar half-duplex モードを選択するために用いることができます。 .El .Pp .Nm ドライバは次のようなメディアオプションをサポートしています。 .Pp .Bl -tag -width xxxxxxxxxxxxxxxxxxxx .It full-duplex 全二重に設定します。 .It half-duplex 半二重に設定します。 .El .Pp アダプタがサポートしているときのみ、100baseTX メディアタイプは有効です。 このデバイスをさらに設定するためには、 .Xr ifconfig 8 を参照してください。 .Sh 診断 .Bl -diag .It "rl%d: couldn't map memory" 致命的な初期化エラーが起こりました。 .It "rl%d: couldn't map interrupt" 致命的な初期化エラーが起こりました。 .It "rl%d: watchdog timeout" デバイスがネットワークに応答しなくなったか、ネットワークの 接続 (ケーブル) に問題があります。 .It "rl%d: no memory for rx list" ドライバがレシーバリング用の mbuf の確保に失敗しました。 .It "rl%d: no memory for tx list" パッドバッファを確保、または mbuf チェインをクラスタにまとめるときに、 トランスミッタリング用の mbuf の確保に失敗しました。 .It "rl%d: chip is in D3 power state -- setting to D0" パワーマネージメントをサポートするアダプタにのみ、このメッセージが出ま す。シャットダウン時にコントローラをローパワーモードにするオペレーティング システムがあり、チップ設定前にこの状態を解除しない PCI BIOS があります。 D3 状態において、コントローラは PCI の設定すべてを失うので、BIOS がそのときにフルパワーモードに設定しなおさなければ、正しく設定すること はできません。ドライバはこの状態を検出し、アダプタを D0 (フルパワー) 状態に設定しなおそうとしますが、ドライバを完全に操作できる状態にするの には至らないかもしれません。ブート時にこのメッセージが現れ、ドライバが ネットワークインタフェースとしてデバイスをアタッチすることに失敗するの なら、デバイスを適切に設定するために 2 度目のウォームブートを行う必要が あります。 .Pp 他のオペレーティングシステムからウォームブートするときのみに、この状態は 起こります。 .Fx のブート前にシステムの電源を切れば、カードが正常に設定されます。 .El .Sh 関連項目 .Xr arp 4 , .Xr netintro 4 , .Xr ifconfig 8 .Rs .%B RealTek 8129 と 8139 のデータシート .%O ftp.realtek.com.tw:/lancard/data sheet .Re .Sh 歴史 .Nm デバイスドライバは .Fx 3.0 に初めて現れました。 .Sh 作者 .Nm ドライバは .An Bill Paul Aq wpaul@ctr.columbia.edu が書きました。 .Sh バグ 外に出て行くパケットは longword に並べる必要があるので、伝送ルーチン は伝送前に、整列していないパケットを mbuf クラスタバッファにコピーする 必要があります。 システム開始時にページ境界から始まる連続 した領域にクラスタバッファプールが確保されているという事実を、 ドライバは濫用します。 クラスタバッファは 2048 バイトなので、当然 longword 境界に整列しています。 ドライバはおそらくこの特性に依存するべきではありません。 .Pp RealTek のデータシートの品質はとりわけ貧弱です。文法とスペルはひどいですし、 多くの情報、特に受信器としての処理に関する情報が抜けています。 非常に重要な事実として、 チップが受信バッファをフィルする (訳注: 受信データを入れる) 方法に関して記述してないということがあります。 フレームが受信されたことを知らせる割り込みが起きたときに、 ドライバがこのフレームを処理している間に、 次のフレームが受信バッファへコピーされている最中になる可能性があります。 チップが次のフレームの残りを DMA してしまう前に、ドライバが最初のフレームを処理し終えたなら、チップ が次のフレームのすべてを DMA するより前に、バッファにあるそのフレーム をドライバが処理しようとするかもしれません。 .Pp ドライバは実パケットデータの前についているヘッダ中のフレーム長を調べる ことで、不完全なフレームかどうかをチェックできます。不完全なフレームは 0xFFF0 というマジック長です。ドライバはこの長さを発見すると、現在有効 なパケットをすべて処理し終えたことを知ることができます。このマジック値 とその重要性については、RealTek のデータシートのどこにも書いてありません。