[PATCH][2.4.28-pre3] 3c59x builtin NIC on Asus Pundit-R

From: Andreas Haumer
Date: Tue Sep 21 2004 - 04:16:52 EST


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi Marcelo!

(Sorry for crossposting, but contact adresses in driver
documentation and MAINTAINERS file look a little bit
outdated and I wanted the right persons to receive this
mail. Methinks the maintainer infos could use some update,
too... :-)

The Asus Pundit-R is a nice barebone system useful to
build small and compact desktop workstations. It uses
an Asus P4R8L motherboard which has an ATI chipsed on
board.

root@install:~ {589} $ lspci
00:00.0 Host bridge: ATI Technologies Inc Radeon 9100 IGP Host Bridge (rev 02)
00:01.0 PCI bridge: ATI Technologies Inc Radeon 9100 IGP AGP Bridge
00:13.0 USB Controller: ATI Technologies Inc: Unknown device 4347 (rev 01)
00:13.1 USB Controller: ATI Technologies Inc: Unknown device 4348 (rev 01)
00:13.2 USB Controller: ATI Technologies Inc: Unknown device 4345 (rev 01)
00:14.0 SMBus: ATI Technologies Inc ATI SMBus (rev 18)
00:14.1 IDE interface: ATI Technologies Inc: Unknown device 4349
00:14.3 ISA bridge: ATI Technologies Inc: Unknown device 434c
00:14.4 PCI bridge: ATI Technologies Inc: Unknown device 4342
00:14.5 Multimedia audio controller: ATI Technologies Inc IXP150 AC'97 Audio Controller
01:05.0 VGA compatible controller: ATI Technologies Inc Radeon 9100 IGP
02:08.0 Ethernet controller: 3Com Corporation 3Com 3C920B-EMB-WNM Integrated Fast Ethernet Controller (rev 40)
02:0a.0 FireWire (IEEE 1394): VIA Technologies, Inc. IEEE 1394 Host Controller (rev 80)
02:0c.0 CardBus bridge: ENE Technology Inc CB710 Cardbus Controller (rev 02)
02:0c.1 FLASH memory: ENE Technology Inc CB710 Memory Card Reader Controller

With a standard Linux 2.4.x kernel (tested with x >= 26),
every hardware component(*) works fine, except the built-in
ethernet controller.

As you can see, lspci tells us that this is an 3Com 3c920
integrated NIC. The standard 3c59x driver does not recognise
this piece of hardware. But with a small patch applied, it does,
and the network interface driver works without problems!

root@install:~ {602} $ ifconfig
eth0 Link encap:Ethernet HWaddr 00:0E:A6:C3:5A:76
inet addr:192.168.162.99 Bcast:192.168.162.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:7879510 errors:0 dropped:0 overruns:1 frame:0
TX packets:7220166 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:4193721321 (3999.4 Mb) TX bytes:496933951 (473.9 Mb)
Interrupt:18 Base address:0xec00

root@install:~ {604} $ mii-tool -v
eth0: negotiated 100baseTx-FD, link ok
product info: vendor 00:00:20, model 32 rev 1
basic mode: autonegotiation enabled
basic status: autonegotiation complete, link ok
capabilities: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD
advertising: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD
link partner: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD flow-control

dmesg output:
[...]
3c59x: Donald Becker and others. www.scyld.com/network/vortex.html
See Documentation/networking/vortex.txt
02:08.0: 3Com PCI 3c920B-EMB-WNM (ATI Radeon 9100 IGP) at 0xec00. Vers LK1.1.18-ac
00:0e:a6:c3:5a:76, IRQ 18
product code f800 rev 00.0 date 00-04-02
Internal config register is 1600000, transceivers 0x40.
8K byte-wide RAM 5:3 Rx:Tx split, autoselect/MII interface.
MII transceiver found at address 1, status 786d.
Enabling bus-master transmits and whole-frame receives.
02:08.0: scatter/gather enabled. h/w checksums enabled
[...]

Detailled PCI infos about this device:
[...]
02:08.0 Class 0200: 10b7:9202 (rev 40)
Subsystem: 1043:8108
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR+ FastB2B-
Status: Cap+ 66Mhz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 64 (2500ns min, 2500ns max), cache line size 10
Interrupt: pin A routed to IRQ 18
Region 0: I/O ports at ec00 [size=128]
Region 1: Memory at fe200000 (32-bit, non-prefetchable) [size=128]
Expansion ROM at fe100000 [disabled] [size=128K]
Capabilities: [dc] Power Management version 2
Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold+)
Status: D0 PME-Enable- DSel=0 DScale=2 PME-
[...]

I have tested this patch on three different Pundit-R
barebones with a few different kernels for several weeks now.
I started with linux-2.4.26 and have now 2.4.28pre3 running.
It seems to work well with no ill sideffects. I have not
tested all possible driver options, though.

Note: This patch was not created originally be me, but I do
not remember where I got it from in the first place. As it
works well for me I would like to submit it for inclusion
in the next kernel release.

Please take a look at the patch and consider including it
in the next 2.4 kernel. Thank you.

- - andreas

(*) I did not have the time to test the memory card reader,
so I can't say if it works ;-)

- --
Andreas Haumer | mailto:andreas@xxxxxxxxx
*x Software + Systeme | http://www.xss.co.at/
Karmarschgasse 51/2/20 | Tel: +43-1-6060114-0
A-1100 Vienna, Austria | Fax: +43-1-6060114-71
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.1 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFBT/DYxJmyeGcXPhERAlhGAJ9WJK/Zj3h+8EtLSkularfmV8gqtgCbB+4T
uQuMA/RaiSUurIK3hMxhZk0=
=cSPQ
-----END PGP SIGNATURE-----

Attachment: 013-3com_ati_radeon.patch
Description: application/octet-string