elxl0 を full duplex にする方法
2007-02-07-1: [Solaris]
- 注意:
以下の情報は,正確なものではありません.この設定をしても,スイッチを確認すると harf duplex でしか通信していませんでした.
解決策は末尾に追記しています.
Solaris 10 で elxl0 なインタフェースを搭載した機械との scp がやたら遅いので調べてみました.
1. まず,インタフェースの確認.
$ ifconfig elxl0
elxl0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
inet 192.168.1.xxx netmask ffffff00 broadcast 192.168.1.255
2. モジュールの情報を確認
$ modinfo | grep elxl
133 f9a36000 58e8 39 1 elxl (3Com 90XX LAN driver 1.34)
elxl は 3Com の NIC ということがわかります.
3. 現在の通信方式と接続速度を確認
$ kstat -p :::duplex :::ifspeed
elxl:0:elxl0:duplex harf
elxl:0:elxl0:ifspeed 0
通信方式は半二重方式で,接続速度は 0 (???) ということがわかりました.
これを全二重方式 (full duplex) で接続速度を 100000000 (100M) にしてあげればよさそう.
4. man を見てみる
$ man elxl
Devices elxl(7D)
NAME
elxl - 3Com Ethernet device driver
SYNOPSIS
/kernel/drv/elxl
:
FILES
/dev/elxl Special character device
/kernel/drv/elxl.conf Configuration file for elxl
driver
/kernel/drv/elxl.conf が elxl の設定ファイルということがわかりました.
# vi /kernel/drv/elxl.conf
#ident "@(#)elxl.conf 1.4 00/07/17 SMI"
#
# Copyright (c) 1998, by Sun Microsystems, Inc.
# All rights reserved.
#
# Driver.conf file for the 3Com 3C90x
#
# To force full duplex operation, uncomment the following line:
full-duplex=1;
#
# To force half duplex operation, uncomment the following line:
#full-duplex=0;
#
# To force 10Mbps operation, uncomment the following line:
#speed=10;
#
# To force 100Mbps operation, uncomment the following line:
speed=100;
これで OK...と思ったら大間違いです.この設定をするとインタフェースが起動しなくなります.
ですので,先に下の 5 を行うのがいいでしょう.
注: ndd でテストしてみるのが王道でしょうが,なぜか elxl は ndd で値をセットできませんでした...?
5. 3c90xcfg.exe で通信方式と通信速度を変更する
3c90xcfg.exe というのは 3Com の NIC の DOS 用 診断プログラムです.
これをダウンロードしてきて,Boot 可能な FD にコピーして DOS で起動します.
- 3c90x2.exe (含 3c90xcfg.exe)
ftp://ftp.3com.com/pub/nic/3c90x/3c90x2.exe
診断プログラムで通信方式を full duplex に,通信速度を 100M に設定します.
6. ブートして確認
うまくいけば,ちゃんとブートしますので,ここで通信方式と通信速度を確認してみます.
$ kstat -p :::duplex :::ifspeed
elxl:0:elxl0:duplex full
elxl:0:elxl0:ifspeed 100000000
無事,全二重方式で 100M に設定されました.もちろん scp も劇的に改善しています.
環境は Solaris 10 x86 でした.
- ref.: Re: Full duplex with elxl0: 3Com 90XX LAN driver on Solaris x86
http://www.dbforums.com/showpost.php?s=f058de31a8eb53479a1effb026633668&p= ...
- 追記
上記の情報は,正確なものではありません.この設定をしても,スイッチを確認すると harf duplex でしか通信していませんでした.
解決策は単純に /kernel/drv/elxl.conf の speed のみを 100 に設定すれば OK です.
# vi /kernel/drv/elxl.conf
#ident "@(#)elxl.conf 1.4 00/07/17 SMI"
#
# Copyright (c) 1998, by Sun Microsystems, Inc.
# All rights reserved.
#
# Driver.conf file for the 3Com 3C90x
#
# To force full duplex operation, uncomment the following line:
#full-duplex=1;
#
# To force half duplex operation, uncomment the following line:
#full-duplex=0;
#
# To force 10Mbps operation, uncomment the following line:
#speed=10;
#
# To force 100Mbps operation, uncomment the following line:
speed=100;
上記手順 5 の 3c90xcfg.exe を使った通信方式と通信速度を変更は必要ありません.
この設定をしても,kstat の表示は harf duplex のままですが,スイッチで確認すると問題なく full duplex になっています.
$ kstat -p :::duplex :::ifspeed
elxl:0:elxl0:duplex harf
elxl:0:elxl0:ifspeed 0
おそらく,ドライバの表示が間違っているのではないかと思われます.