Package: Linux-2.6 Version: 2.6.17-5 3Com 3c900B network card unresponsive with latest kernels.
This was initially discovered while using Knoppix 5.0 and 5.0.1. Then installing the following Debian builds (from testing or unstable) showed the same failure: kernel-image 2.6.15-1-486 (Debian 2.6.15-8) kernel-image 2.6.15-1-686 (Debian 2.6.15-8) kernel-image 2.6.16-2-686 (Debian 2.6.16-17) kernel-image 2.6.17-1-486 (Debian 2.6.17-5) kernel-image 2.6.17-1-686 (Debian 2.6.17-5) All kernels showed the same behaviour. No amount of Knoppix options (in Knoppix) would get the card to work. Kernel 2.6.11 on Knoppix 4.0 is latest kernel I tested that works ok. Not tested 2.6.12 through 2.6.14. This also affects the Etch beta2 and latest (2006-07-31) net installer using the 2.6.16 kernel, as network install is impossible. The boot option install24 works. Analysis: ifconfig -a shows eth0 detected. dmesg output shows 3c59x module detected card and ran - the card looks like it is detected and configured. I can manually set an IP addr but the NIC does not respond to network requests, dhcp, ping etc. ifconfig output for eth0 looks normal except for "Base address:". It's always been 0x6800 on this machine for Debian Woody, Sarge, Knoppix and Windows. lspci -v, /proc/pci, /proc/ioports all confirm this - the card's pci io port address is configured at usual value of 0x6800. Snippet of output from lspci -v showing network card: 0000:00:0b.0 Ethernet controller: 3Com Corporation 3c900B-TPC Etherlink XL [Cyclone] (rev 04) Subsystem: 3Com Corporation 3c900B-TPC Etherlink XL [Cyclone] Flags: bus master, medium devsel, latency 64, IRQ 11 I/O ports at 6800 [size=128] Memory at e8040000 (32-bit, non-prefetchable) [size=128] Expansion ROM at 20000000 [disabled] [size=128K] Capabilities: [dc] Power Management version 1 and from ifconfig -a for eth0: eth0 Link encap:Ethernet HWaddr 00:10:5A:F7:2C:9B BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:1 errors:0 dropped:0 overruns:0 carrier:1 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 b) TX bytes:342 (342.0 b) Interrupt:11 Base address:0xe000 and snippet from dmesg: PCI: Found IRQ 11 for device 0000:00:0b.0 3c59x: Donald Becker and others. www .scyld.com/network/vortex.html 0000:00:0b.0: 3Com PCI 3c900 Cyclone 10Mbps TPC at c080e000. The "at c080e000" would be "at 0x6800" on previous kernels. IRQ and PCI slot number is good and matches lspci -v. It is immediately obvious the lower 16 bits of this address corresponds with ifconfig "Base address". The upper 16 bits look suspiciously like a memory address and are in fact close to the range of addresses from cat /proc/kallsyms|grep 3c59x. Subsequent reboots of the same Knoppix CD show different values used for the ifconfig base address. It has been 0x0000, 0x2000, 0x6000, 0x8000, 0xc000, 0xe000. Upper 16 bits of address displayed by 3c59x module are always the same or similar (~same top 13 bits) Rebooting Debian uses the same address each time - it varies for each kernel but is the same for boots of the same kernel - though I have once had the address c0810000 for 2.6.17-1-686 (see dmesg above). 2.6.16-2-686 was always c081c000 for the times I rebooted it. Attached files are outputs from commands dmesg, lspci -vvv and ifconfig -a for kernel 2.6.17-1-686 (2.6.17-5) 29 Jul. Hardware: Machine is Pentium II 400MHz, ATrend ATC6220 BX based motherboard. 256Mb RAM. 3Com 3c900B. Elsa Erazor III (nVidia TNT2), Monster Sound II (Aureal AU8830). IDE hard disk, DVD-ROM and CD writer. Not overclocked. A fairly ordinary machine. I also have two other machines with 3Com cards that I tried with Knoppix 5.0 and 5.0.1. The machines are in daily use so I can't really experiment further with them! One has been using Woody and Sarge (kernel 2.4.27) without problems. The other runs Smoothwall (Redhat based firewall). For brevity I won't list lspci etc for them. Please ask if you require this. First one is PIII/800 on A-Open AX6B+ BX based motherboard with AIC7880 on-board SCSI. 256Mb. ATI Radeon QD. SB Live. 3Com 3c900B. As with the PII machine, the 3c900B io port maps to 0x6800. lspci confirms this. ifconfig and dmesg output is wrong in the same way as described above. Oddity is the network card works perfectly! (bug has moved somewhere else??) Second is K6-2/400 on Epox EP-51MVP VIA motherboard. 128Mb. 3dfx Voodoo 3 3000. 3c900 and 3c905B. 3c900=eth0: base address should be 0xe800, dmesg shows 0001e800 always. 3c905B=eth1: base address should be 0xec00, dmesg shows c8c90000, c8cac000 and others as described above. Like PIII machine both network cards appear to function normally! I hope this characterises the problem sufficiently. I wouldn't have realised anything was wrong, and discovered this anomaly, unless the PII machine had stopped working with Knoppix 5. I don't know if the ifconfig and 3c59x address thing is relevant or just a red herring. As a programmer it yells out that something is horribly wrong, even if the network cards do work on some of my machines. The three machines are reasonably different hardware yet all show similar outputs which might point to the driver otherwise you would have been flooded with complaints by now! This is very repeatable with a normal install - I don't need to set up anything exotic! Yet it is a mystery why a (seemingly) bad io addr lets some cards work. They do have the 3c59x module in common. But if this were the case you'd be having reports from every user with a 3Com card and/or would have been spotted several kernels ago? Some people have pointed out that PCI has mobile addresses but this would be reflected in lspci? Unfortunately I only have 3Com cards for testing and I don't really know that much about the Linux internals to try and track this down further. Please let me know if there is anything else you need or want me to to try. Thanks.
dmesg.out
Description: Binary data
lspci-vvv.out
Description: Binary data
ifconfig-a.out
Description: Binary data