[Q]
PCMCIA LAN カード (LAC-CD021AX) がうまく動かないのですが。
tail -f /var/log/messages を見てみると
vaio cardmgr[231]: executing: './network start eth0'
vaio kernel: eth0: transmit timed out with status 8080,
IRQ conflict?
と、IRQ conflict? とでているのですが
[A]
IRQ conflict? と出ている場合には IRQ を変えてみるとうまくいきませんか?
/etc/sysconfig/pcmcia ファイルで PCMCIA に割り当てる IRQ を変更する事ができます。
この PCMCIA card が irq=9 を使っていて conflict している場合、
PCIC_OPTS="do_scan=0 irq_mask=0x0e40 poll_interval=100"
の irq_mask の部分を
PCIC_OPTS="do_scan=0 irq_mask=0x0c40 poll_interval=100"
というように変更し、irq=9 を使用できないようにしてみるとどうでしょうか?
[Appendix]
irq_mask は割り当て可能な IRQ のビットパターンで、
ビット 0 が IRQ 0,ビット 15 が IRQ 15 に相当し、
irq_mask のビットがたっている IRQ が PCMCIA カードが使用できるものになります。
irq_mask は 16 進数で与えることになっており、
0x0e40 や 0x0c40 のはじめについている 0x が 16 進数であることをあらわしています。
上記ででてきた 16 進数を 10 進数であらわすと、
0xc = 12
0xe = 14
0x0e40 = 14*16^2 + 4*16^1 = 3648
0x0c40 = 12*16^2 + 4*16^1 = 3136
となります。
3648, 3136 を 2 進数に直すと、
3648 = 2048 + 1024 + 512 + 64 = 1*2^11 + 1*2^10 + 1*2^9 + 1*2^6 = 0000111001000000
3136 = 2048 + 1024 + 64 = 1*2^11 + 1*2^10 + 1*2^6 = 0000110001000000
となります。
結局、
0x0e40 = 0000111001000000
0x0c40 = 0000110001000000
となり、この右辺の 1 となっている所がビットがたっているところということになります。
IRQ との対応は、一番左が IRQ=15, 一番右が IRQ=0 というような順になりますので、
0x0e40 だとビットがたっているのが IRQ=11,10,9,6 の 4 つ、
一方 0x0c40 だとビットがたっているのが IRQ=11,10,6 の 3 つで、
変更前は IRQ=9 のビットがたっていたが、
変更後にはたっていない、
すなわち IRQ=9 を PCMCIA カードが使用できないように変更したということが分かると思いますがいかがでしょうか?
戻る