LinkSys EtherFast 10/100 LAN Card

David Rose drose@wdi.disney.com
Thu Nov 5 05:05:42 1998


I bought this card today, mainly because the box proudly claimed that
the card was supported by Linux.  Any manufacturer that devotes ink to
reporting Linux connectivity should be rewarded, in my opinion.

Sadly, I've thus far been unsuccessful in getting it to talk to me
outside of Windows world.  (It does work fine in Windows.)  I'm
running v0.90 of tulip.c.  

As soon as I try to ifconfig it, the machine locks up.  On a hunch, I
reinserted some code from an older version of tulip.c into
tulip_interrupt():


    /* Code that should never be run!  Perhaps remove after testing.. */
    {
        static int stopit = 10;
        if (dev->start == 0  &&  --stopit < 0) {
            printk(KERN_ERR "%s: Emergency stop, looping startup interrupt.\n"
                   KERN_ERR "%s: Disabling interrupt handler %d to avoid "
                   "locking up the machine.\n",
                   dev->name, dev->name, dev->irq);
#ifdef SA_SHIRQ
            free_irq(irq, dev);
#else
            free_irq(irq);
#endif
        }
    }



and sure enough, this code gets invoked.  For some reason, the startup
interrupt is looping without ever calling tulip_open().  I have no
idea what this means, or how to go about debugging it further.

It seems that several other people have gotten this card to work well,
and others still have had problems, but not this problem exactly.
Can anyone offer suggestions as to what I might be able to conclude
from this, or where I should be looking further?


Here's all the interesting stuff I could find:

-------------------------------
tulip-diag -f -e -e -a -m -m

tulip-diag.c:v1.06 9/18/98 Donald Becker (becker@cesdis.gsfc.nasa.gov)
Unable to find a Tulip card in /proc/pci.
If there is a Tulip card in the machine, explicitly set the I/O port address
  using '-p <ioaddr>

-------------------------------
Odd, isn't it?  Shouldn't it be able to locate the card automatically?
I tried again:

-------------------------------
tulip-diag -p 0xf800 -f -e -e -a -m -m

tulip-diag.c:v1.06 9/18/98 Donald Becker (becker@cesdis.gsfc.nasa.gov)
Digital DC21040 Tulip Tulip chip registers at 0xf800:
  00004800 01ff0000 ffffffff 00bf6010 00bf6210 02679006 816e2002 0001ebef
  00000000 0000b2d7 00bf6260 00bf6260 0000002d 00000000 00000000 10000001
 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 MII 100baseTx scrambler, half-duplex.
EEPROM contents:
  0000 0000 0000 0000 0000 0000 0000 0000
  0000 0000 0000 0000 0000 0000 0000 0000
  0000 0000 0000 0000 0000 0000 0000 0000
  0000 0000 0000 0000 0000 0000 0000 0000
  0000 0000 0000 0000 0000 0000 0000 0000
  0000 0000 0000 0000 0000 0000 0000 0000
  0000 0000 0000 0000 0000 0000 0000 0000
  0000 0000 0000 0000 0000 0000 0000 0000
 ID CRC 0xe3 (vs. 00), complete CRC 3b59d4af.
 ***WARNING***: No MII transceivers found!


-------------------------------
Still odd.  Should I be concerned by the inability of tulip-diag to
find the MII transceiver?

-------------------------------
/var/log/messages:

Nov  5 00:46:47 eros kernel: tulip.c:v0.90 10/20/98 becker@cesdis.gsfc.nasa.gov
Nov  5 00:46:47 eros kernel: eth1: Lite-On 82c168 PNIC at 0xf800, 00 a0 cc 23 b2 d7, IRQ 9.
Nov  5 00:46:47 eros kernel: eth1:  MII transceiver #1 config 3100 status 7809 advertising 01e1.
Nov  5 00:46:53 eros kernel: eth1: interrupt  csr5=0x02001102 new csr5=0x02001000.
Nov  5 00:46:53 eros kernel: eth1: exiting interrupt, csr5=0x2001000.
Nov  5 00:46:53 eros kernel: eth1: interrupt  csr5=0x02001000 new csr5=0x02001000.
Nov  5 00:46:53 eros kernel: eth1: exiting interrupt, csr5=0x2001000.
Nov  5 00:46:53 eros kernel: eth1: interrupt  csr5=0x02001000 new csr5=0x02001000.
Nov  5 00:46:53 eros kernel: eth1: exiting interrupt, csr5=0x2001000.
Nov  5 00:46:53 eros kernel: eth1: interrupt  csr5=0x02001000 new csr5=0x02001000.
Nov  5 00:46:53 eros kernel: eth1: exiting interrupt, csr5=0x2001000.
Nov  5 00:46:53 eros kernel: eth1: interrupt  csr5=0x02001000 new csr5=0x02001000.
Nov  5 00:46:53 eros kernel: eth1: exiting interrupt, csr5=0x2001000.
Nov  5 00:46:53 eros kernel: eth1: interrupt  csr5=0x02001000 new csr5=0x02001000.
Nov  5 00:46:53 eros kernel: eth1: exiting interrupt, csr5=0x2001000.
Nov  5 00:46:53 eros kernel: eth1: interrupt  csr5=0x02001000 new csr5=0x02001000.
Nov  5 00:46:53 eros kernel: eth1: exiting interrupt, csr5=0x2001000.
Nov  5 00:46:53 eros kernel: eth1: interrupt  csr5=0x02001000 new csr5=0x02001000.
Nov  5 00:46:53 eros kernel: eth1: exiting interrupt, csr5=0x2001000.
Nov  5 00:46:53 eros kernel: eth1: interrupt  csr5=0x02001000 new csr5=0x02001000.
Nov  5 00:46:53 eros kernel: eth1: exiting interrupt, csr5=0x2001000.
Nov  5 00:46:53 eros kernel: eth1: interrupt  csr5=0x02001000 new csr5=0x02001000.
Nov  5 00:46:53 eros kernel: eth1: exiting interrupt, csr5=0x2001000.
Nov  5 00:46:53 eros kernel: eth1: interrupt  csr5=0x02001000 new csr5=0x02001000.
Nov  5 00:46:53 eros kernel: eth1: exiting interrupt, csr5=0x2001000.

---- At this point I get the diagnostic about looping the start handler:
eth1: Emergency stop, looping startup interrupt.
eth1: Disabling interrupt handler 9 to avoid locking up the machine.
----

Nov  5 00:46:53 eros kernel: eth1: tulip_open() irq 9.
Nov  5 00:46:53 eros kernel: eth1: Done tulip_open(), CSR0 00004800, CSR5 02561000 CSR6 816c2002.
Nov  5 00:46:58 eros kernel: eth1: LC82C168 negotiated capability 00000000, CSR5 02671004.
Nov  5 00:46:58 eros kernel: eth1: LC82C168 MII PHY status 7809, Link partner report 0000, csr6 816c0000/816c2002.
Nov  5 00:46:58 eros kernel: eth1: Changing PNIC configuration to half-duplex, CSR6 816e0000.


Many thanks.

David