FreeBSDのRealtek RTL8110SC用イーサネットドライバ
マザーボード内蔵のRTL8110SCでre0: watchdog timeoutが出るおかげでacpiを切ってしまった新マシンであるが、ダメもとでRealtekのサイトに行ってみたところ、ダウンロードページで8110で検索して出てきたRTL8110SC(L) (Software)のページに、FreeBSD用があっさりと置いてあった。Readme.txtによれば、4.x/5.x/6.0でテストしたとのことである。
Readme.txtにはいろいろと細かい手順が書いてあるが、ようは、
- reのない(適当にnodevice reとかした)configファイルを用意する。
- /usr/src/sys/modules/Makefileからreを消す。
- 付属のif_rl.cとif_rlreg.hを/usr/src/sys/pci内の同名ファイルに上書きコピーする。
- カーネルを普通にコンパイルしてインストールする。
- いじったファイルを元に戻しておく(でないと、忘れてcsupとかしてどうなるか予測不能)。
そして、/etc/rc.confのifconfig_re0をifconfig_rl0に書き換え、/boot/device.hintsのhint.acpi.0.disabled="1"を消し、再起動した。そうすると、見事に、
rl0: <Realtek RTL8169SC Gigabit Ethernet Adapter> port 0xce00-0xceff mem 0xfdeff000-0xfdeff0ff irq 21 at device 6.0 on pci3と認識され(8110SCは8169SC扱いになるようだ)、rl0による接続が可能になった。
ネットワークの負荷を上げてみても、re0のようにwatchdog timeoutとlinkのDOWN/UPを起こしたりしないし、acpiを切った状態でもtcpdumpを開始したり終了したりする際に、
re0: promiscuous mode disabledとなっていた問題も解消した。
re0: link state changed to DOWN
re0: link state changed to UP
最近もif_re.cとかはよく更新されているようであるが、早くこの手間をかけずに済むようになることを期待。
0 件のコメント:
コメントを投稿