Problem with tulip driver - wrong base address at initialization

Steven F. Schmieder sfs@ibm.net
Mon Dec 21 14:43:10 1998


Recently I upgraded to kernel 2.0.36 from 2.0.35 (Red Hat 5.1).  After doing
so, my generic network card stopped functioning.  When I first upgraded to
Red Hat 5.1 (kernel 2.0.34) from Red Hat 4.2 (kernel 2.0.32), my card was
automatically detected and initialized correctly.

I have a:

Quantex PPr0 200 (w/ Biostar MBD-P6NF motherboard)
Adaptec 2940UW SCSI adaptor
Ensoniq AudioPCI soundcard
Matrox Millenium videocard
Generic Digital 21040-based network adaptor

For some reason, when booting from kernel 2.0.36, the tulip card is not
initialized at the correct address.  The card resides at 0x7c80 and not
0x7c00.  However, if I try to force tulip.o to use 0x7c80 as the io address
at boot time, the kerneld reports an error and defers loading it.

Curiously, I had similar problems in the past when using with kernels
2.0.30 - 2.0.33.  Then I accidently discovered a workaround that
unfortunately doesn't work anymore.  At that time, I would load the de4x5.o
module and assigned it the wrong base address (io=0x7c00) in modules.conf.
No network services would start at boot time.  If they did, the trick
wouldn't work.  After the booting process finished, I could use ifconfig to
bring up eth0 without any problem.  dmesg and cat /proc/pci would be
indicate that the cards base address was 0x7c80.

This workaround unfortunately doesn't work anymore.  If I now try loading
the de4x5.o without any switches, I simply get kerneld error messages to the
effect that it didn't work.  If I try to force an io address, the computer
locks up completely with the ensuing nasty file system corruption problems.

I would be grateful for any suggestions.  I've included the pertinent
results from dmesg, cat /proc/pci, and tulip-diag for kernel 2.0.35 and
2.0.36 respectively.

Please excuse me if this post is rather wordy, it's only my second time and
I wanted to be clear.

Steven


dmesg for 2.0.35 kernel

tulip.c:v0.88 4/7/98 becker@cesdis.gsfc.nasa.gov
eth0: Digital DC21040 Tulip at 0x7c80, 00 c0 0c 60 05 2f, IRQ 9.
eth0: No 10baseT link beat found, switching to AUI media.

dmesg for 2.0.36 kernel

tulip.c:v0.89H 5/23/98 becker@cesdis.gsfc.nasa.gov
eth0: Digital DC21040 Tulip at 0x7c00, 00 c0 0c 60 05 2f, IRQ 9.
eth0: No 10baseT link beat found, switching to AUI media.
eth0: transmit timed out, switching to 10baseT media.


cat /proc/pci for 2.0.35 kernel

PCI devices found:
  Bus  0, device  10, function  0:
    Ethernet controller: DEC DC21040 (rev 35).
      Medium devsel.  Fast back-to-back capable.  IRQ 9.  Master Capable.
Latency=32.
      I/O at 0x7c80.
      Non-prefetchable 32 bit memory at 0xffafaf80.

cat /proc/pci for 2.0.36 kernel

PCI devices found:
  Bus  0, device  10, function  0:
    Ethernet controller: DEC DC21040 (rev 35).
      Medium devsel.  Fast back-to-back capable.  IRQ 9.  Master Capable.
Latency=32.
      I/O at 0x7c80.
      Non-prefetchable 32 bit memory at 0xffafaf80.


result of tulip-diag for 2.0.35 kernel

tulip-diag.c:v1.06 9/18/98 Donald Becker (becker@cesdis.gsfc.nasa.gov)
Index #1: Found a Digital DC21040 Tulip adapter at 0x7c80.
Digital DC21040 Tulip Tulip chip registers at 0x7c80:
  fff84800 ffffffff ffffffff 00f8f028 00f8f228 fc660000 fffe2002 ffffebef
  fffe0000 7fffffff ffffffff ffffffff ffffffc0 ffffef0d ffff87c5 ffff0006
 The Rx process state is 'Waiting for packets'.
 The Tx process state is 'Idle'.
Transmit started, Receive started, half-duplex.
 The transmit unit is set to store-and-forward.
 Port selection is 100mbps-SYM/PCS 100baseTx scrambler, half-duplex.

result of tulip-diag for 2.0.36 kernel

tulip-diag.c:v1.06 9/18/98 Donald Becker (becker@cesdis.gsfc.nasa.gov)
Index #1: Found a Digital DC21040 Tulip adapter at 0x7c80.
Digital DC21040 Tulip Tulip chip registers at 0x7c80:
  fff80000 ffffffff ffffffff cff3cdbf eeeeffea fc000000 fffc0040 fffe0000
  fffe0000 7fffffff ffffffff ffffffff ffffffc4 ffff0000 ffffffff ffff0000
 The Rx process state is 'Stopped'.
 The Tx process state is 'Stopped'.
Transmit stopped, Receive stopped, half-duplex.
 The transmit unit is set to store-and-forward.
 Port selection is 100mbps-SYM/PCS 100baseTx scrambler, half-duplex.