奇怪的网卡问题!!!

kevin.tan
奇怪的网卡问题!!!

[code]
AierM:/home/tmeng# uname -a
Linux AierM 2.6.18-aier #1 SMP Mon Oct 8 22:07:30 CST 2007 i686 GNU/Linux
AierM:/home/tmeng# lspci|grep 'DECchip'
07:00.0 Ethernet controller: Digital Equipment Corporation DECchip 21142/43 (rev 20)
AierM:/home/tmeng# dmesg |grep 'eth1'
eth1: Digital DS21143 Tulip rev 32 at 00014800, 00:80:4C:35:0D:78, IRQ 11.
eth1: Digital DS21143 Tulip rev 32 at 00014800, 00:80:4C:35:0D:78, IRQ 11.
eth1: Digital DS21143 Tulip rev 32 at 00014800, 00:80:4C:35:0D:78, IRQ 11.
[/code]

在PCMICA插槽中有一块DECchip 21143芯片的网卡;从得到的信息来看,驱动已经加载了;并且所加载的驱动也包含 本芯片型号;如下:
[code]
AierM:/home/tmeng# modinfo tulip
filename:       /lib/modules/2.6.18-aier/kernel/drivers/net/tulip/tulip.ko
author:         The Linux Kernel Team
[color=Red]description:    Digital 21*4* Tulip ethernet driver[/color]
license:        GPL
version:        1.1.13-NAPI
vermagic:       2.6.18-aier SMP mod_unload PENTIUMM REGPARM gcc-4.1
depends:
alias:          pci:v00001011d00000009sv*sd*bc*sc*i*
alias:          pci:v00001011d00000019sv*sd*bc*sc*i*
alias:          pci:v000011ADd00000002sv*sd*bc*sc*i*
alias:          pci:v000010D9d00000512sv*sd*bc*sc*i*
alias:          pci:v000010D9d00000531sv*sd*bc*sc*i*
alias:          pci:v0000125Bd00001400sv*sd*bc*sc*i*
alias:          pci:v000011ADd0000C115sv*sd*bc*sc*i*
alias:          pci:v00001317d00000981sv*sd*bc*sc*i*
alias:          pci:v00001317d00000985sv*sd*bc*sc*i*
alias:          pci:v00001317d00001985sv*sd*bc*sc*i*
alias:          pci:v00001317d00009511sv*sd*bc*sc*i*
alias:          pci:v000013D1d0000AB02sv*sd*bc*sc*i*
alias:          pci:v000013D1d0000AB03sv*sd*bc*sc*i*
alias:          pci:v000013D1d0000AB08sv*sd*bc*sc*i*
alias:          pci:v0000104Ad00000981sv*sd*bc*sc*i*
alias:          pci:v0000104Ad00002774sv*sd*bc*sc*i*
alias:          pci:v00001259d0000A120sv*sd*bc*sc*i*
alias:          pci:v000011F6d00009881sv*sd*bc*sc*i*
alias:          pci:v00008086d00000039sv*sd*bc*sc*i*
alias:          pci:v00001282d00009100sv*sd*bc*sc*i*
alias:          pci:v00001282d00009102sv*sd*bc*sc*i*
alias:          pci:v00001113d00001216sv*sd*bc*sc*i*
alias:          pci:v00001113d00001217sv*sd*bc*sc*i*
alias:          pci:v00001113d00009511sv*sd*bc*sc*i*
alias:          pci:v00001186d00001541sv*sd*bc*sc*i*
alias:          pci:v00001186d00001561sv*sd*bc*sc*i*
alias:          pci:v00001186d00001591sv*sd*bc*sc*i*
alias:          pci:v000014F1d00001803sv*sd*bc*sc*i*
alias:          pci:v00001626d00008410sv*sd*bc*sc*i*
alias:          pci:v00001737d0000AB09sv*sd*bc*sc*i*
alias:          pci:v00001737d0000AB08sv*sd*bc*sc*i*
alias:          pci:v000017B3d0000AB08sv*sd*bc*sc*i*
alias:          pci:v000010B7d00009300sv*sd*bc*sc*i*
alias:          pci:v000014EAd0000AB08sv*sd*bc*sc*i*
alias:          pci:v00001414d00000002sv*sd*bc*sc*i*
srcversion:     04C5C182C6E93DE91DBE155
parm:           full_duplex:array of int
parm:           options:array of int
parm:           csr0:int
parm:           rx_copybreak:int
parm:           max_interrupt_work:int
parm:           tulip_debug:int
[/code]

但问题还是意外的发生了,找不到所标识的eth1网卡,如下:
[code]
AierM:/home/tmeng# ifconfig eth1
eth1: error fetching interface information: Device not found
AierM:/home/tmeng# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:09:6B:CD:CF:21
          inet addr:192.168.133.128  Bcast:192.168.133.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:8750 errors:0 dropped:0 overruns:0 frame:0
          TX packets:10045 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:6295737 (6.0 MiB)  TX bytes:1576558 (1.5 MiB)
          Base address:0x8000 Memory:c0220000-c0240000

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:24 errors:0 dropped:0 overruns:0 frame:0
          TX packets:24 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:1352 (1.3 KiB)  TX bytes:1352 (1.3 KiB)

AierM:/home/tmeng# ifconfig eth1 up
eth1: ERROR while getting interface flags: 没有那个设备
[/code]
上面输出的eth0为集成的板载网卡,e1000的,可以看到MAC地址与eth1是不同的。

在插入网卡或重加载模块的过程中可以看到:
[code]
May 30 17:36:21 AierM kernel: Linux Tulip driver version 1.1.13-NAPI (May 11, 2002)
May 30 17:36:21 AierM kernel: tulip0:  EEPROM default media type Autosense.
May 30 17:36:21 AierM kernel: tulip0:  Index #0 - Media 10baseT (#0) described by a 21142 Serial PHY (2) block.
May 30 17:36:21 AierM kernel: tulip0:  Index #1 - Media 10baseT-FDX (#4) described by a 21142 Serial PHY (2) block.
May 30 17:36:21 AierM kernel: tulip0:  Index #2 - Media 100baseTx (#3) described by a 21143 SYM PHY (4) block.
May 30 17:36:21 AierM kernel: tulip0:  Index #3 - Media 100baseTx-FDX (#5) described by a 21143 SYM PHY (4) block.
May 30 17:36:21 AierM kernel: eth1: Digital DS21143 Tulip rev 32 at 00014800, 00:80:4C:35:0D:78, IRQ 11.
[/code]
上面显示eth1已加载,芯片型号和MAC地址均无误,可ifconfig输出就是没有,真是无比郁闷 :(:(:(

kevin.tan
真是邪门了,百般无耐,处到翻看,Google无数,均无答案

终查看/pro/net/dev ,有些线索,如下:
[code]
AierM:/home/tmeng# cat /proc/net/dev
Inter-|   Receive                                                |  Transmit
face |bytes    packets errs drop fifo frame compressed multicast|bytes    packets errs drop fifo colls carrier compressed
    lo:    1252      22    0    0    0     0          0         0     1252      22    0    0    0     0       0          0
  imq0:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
  imq1:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
  eth0: 7012966    9581    0    0    0     0          0        18  1664289   10079    0    0    0     0       0          0
irda0:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
  eth3:       0       0    9    0    0     0          0         0        0       0    0    0    0     0       0          0
[/code]

乖乖,不是有个eth3吗,赶紧 up先,如是那朵出色的tulip终于出来了,如:
[code]
AierM:/home/tmeng# ifconfig eth3 up
AierM:/home/tmeng# ifconfig eth3
eth3      Link encap:Ethernet  HWaddr 00:80:4C:35:0D:78
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:9 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
          Interrupt:11 Base address:0x4800
[/code]

但比较让我郁闷是的,为什么不是默认的eth1而是eth3呢?继续找找看,是什么原因

kevin.tan
搞定了,在/etc/udev/rules.d/z25_persistent-net.rules配置文件记录了插入的网卡MAC地址和标识符,把不要的删掉,将需eth3改为eth1重启,即可

[[i] 本帖最后由 kevin.tan 于 2008-6-2 11:38 编辑 [/i]]