DEC 21140 doesn't work on 100bTX as module?

Cracu cracu@el.el.obs.utcluj.ro
Wed May 26 06:54:19 1999


Here's the problem: 
I have a box with two network cards, one 3c509 (on 10Mps) compiled in the
kernel, the other a DEC 21140 on 10/100 loaded as module, intended to work
on 100. The DEC refuses to work automatically (i suspect it does not
detect correctly the media or something like that because when i pull out
and then reinsert the connector the led becomes ON), although it is
detected and loaded at boot time. I have noticed that if i compile it by
default in the kernel (not use it like a module) it works correctly.
The problem is i have to use it like module because i'm going to have two
100 cards in the box to route between two subnets
If there's any trick to make it work automatically on 100 when loaded as
module, please let me know.

THANKS A LOT

Here follows some (i hope) helpful info:

$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
## boot screen
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

tulip.c:v0.89H 5/23/98 becker@cesdis.gsfc.nasa.gov
eth1: Digital DS21140 Tulip at 0x6500, 00 00 c0 41 70 bf, IRQ 10..
eth1: Old format EEPROM on 'SMC9332DST' board.  Using substitute media
control info.
eth1:  EEPROM default media type Autosense.
eth1:  Index #0 - Media 10baseT (#0) described by a 21140 non-MII (0) block.
eth1:  Index #1 - Media 100baseTx (#3) described by a 21140 non-MII (0)
block.
  PCI latency timer (CFLT) is 0x20,  PCI command is 0007.
INIT: Entering runlevel: 3
Going multiuser...
eth0: Setting Rx mode to 1 addresses.
eth1: Using user-specified media 100baseTx.

$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
## output from dmesg:
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

Linux NET4.0 for Linux 2.2
Based upon Swansea University Computer Society NET3.039
NET4: Unix domain sockets 1.0 for Linux NET4.0.
NET4: Linux TCP/IP 1.0 for NET4.0
IP Protocols: ICMP, UDP, TCP, IGMP
Linux IP multicast router 0.06 plus PIM-SM
Initializing RT netlink socket
eth0: 3c509 at 0x240 tag 1, BNC port, address  00 a0 24 2e 83 30, IRQ 12.
3c509.c:1.16 (2.2) 2/3/98 becker@cesdis.gsfc.nasa.gov.
...
tulip.c:v0.89H 5/23/98 becker@cesdis.gsfc.nasa.gov
eth1: Digital DS21140 Tulip at 0x6500, 00 00 c0 41 70 bf, IRQ 10.
eth1: Old format EEPROM on 'SMC9332DST' board.  Using substitute media control info.
read_eeprom:
0000 41c0 bf70 42f1 f142 70bf c041 0000
0000 41c0 bf70 42f1 00ff aa55 00ff aa55
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
343a 0002 005a 0000 0000 0000 0000 0000
c033 1034 8001 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
eth1:  EEPROM default media type Autosense.
eth1:  Index #0 - Media 10baseT (#0) described by a 21140 non-MII (0) block.
eth1:  Index #1 - Media 100baseTx (#3) described by a 21140 non-MII (0) block.
  PCI latency timer (CFLT) is 0x20,  PCI command is 0007.
eth0: Setting Rx mode to 1 addresses.
eth1: tulip_open() irq 10.
eth1: Using user-specified media 100baseTx.
eth1: Using a 21140 non-MII transceiver with control setting 09.
eth1: Using media type 100baseTx, CSR12 is 29.
eth1: Transmit error, Tx status 7fffbc80.
eth1: Transmit error, Tx status 7fffbc80.
eth1: Transmit error, Tx status 7fffbc80.
eth1: Transmit error, Tx status 7fffbc80.
eth1: Transmit error, Tx status 7fffbc80.

$$$$$$$$$$$$$$$$$$$$$$$$$$$$
## when removing module tulip and a new dmesg:
$$$$$$$$$$$$$$$$$$$$$$$$$$$$

eth1: Transmit error, Tx status 7fffbc80.
eth1: Transmit error, Tx status 7fffbc80.
eth1: Transmit error, Tx status 7fffbc80.
eth1: Transmit error, Tx status 7fffbc80.
eth1: Shutting down ethercard, status was fc660000.
tulip.c:v0.89H 5/23/98 becker@cesdis.gsfc.nasa.gov
eth1: Digital DS21140 Tulip at 0x6500, 00 00 c0 41 70 bf, IRQ 10.
eth1: Old format EEPROM on 'SMC9332DST' board.  Using substitute media
control info.
eth1:  EEPROM default media type Autosense.
eth1:  Index #0 - Media 10baseT (#0) described by a 21140 non-MII (0) block.
eth1:  Index #1 - Media 100baseTx (#3) described by a 21140 non-MII (0)
block.

$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
## After reinserting module tulip with params:
##  insmod tulip debug=6 options=3,16
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

Found Digital DS21140 Tulip at I/O 0x6500.
tulip.c:v0.89H 5/23/98 becker@cesdis.gsfc.nasa.gov
eth1: Digital DS21140 Tulip at 0x6500, 00 00 c0 41 70 bf, IRQ 10.
eth1: Old format EEPROM on 'SMC9332DST' board.  Using substitute media
control info.
read_eeprom:
0000 41c0 bf70 42f1 f142 70bf c041 0000
0000 41c0 bf70 42f1 00ff aa55 00ff aa55
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
343a 0002 005a 0000 0000 0000 0000 0000
c033 1034 8001 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
eth1:  EEPROM default media type Autosense.
eth1:  Index #0 - Media 10baseT (#0) described by a 21140 non-MII (0) block.
eth1:  Index #1 - Media 100baseTx (#3) described by a 21140 non-MII (0)
block.
  PCI latency timer (CFLT) is 0x20,  PCI command is 0007.

$$$$$$$$$$$$$$$$$$$$$$$$$$$$
## After a succesful ping (to local card) 
## and an inscuccessfull (to a remote one)
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$eth1: tulip_open() irq 10.

eth1: Using user-specified media 100baseTx.
eth1: Using a 21140 non-MII transceiver with control setting 09.
eth1: Using media type 100baseTx, CSR12 is a9.
eth1: interrupt  csr5=0xfc670004 new csr5=0xfc660000.
eth1: interrupt  csr5=0xfc660000 new csr5=0xfc660000.
eth1: exiting interrupt, csr5=0xfc660000.
eth1: Done tulip_open(), CSR0 fff84800, CSR5 fc660000 CSR6 e3842002.
eth1: interrupt  csr5=0xfc670004 new csr5=0xfc660000.
eth1: interrupt  csr5=0xfc660000 new csr5=0xfc660000.
eth1: exiting interrupt, csr5=0xfc660000.
eth1: interrupt  csr5=0xfc670004 new csr5=0xfc660000.
eth1: interrupt  csr5=0xfc660000 new csr5=0xfc660000.
eth1: exiting interrupt, csr5=0xfc660000.
eth1: interrupt  csr5=0xfc670004 new csr5=0xfc660000.
eth1: interrupt  csr5=0xfc660000 new csr5=0xfc660000.
eth1: exiting interrupt, csr5=0xfc660000.
eth1: interrupt  csr5=0xfc670004 new csr5=0xfc660000.
eth1: interrupt  csr5=0xfc660000 new csr5=0xfc660000.
eth1: exiting interrupt, csr5=0xfc660000.
eth1: Media selection tick, status fc660000 mode e3842002 SIA ffffffa9 ffffffff 1c09fdc0 fffffec8.
eth1: Transceiver monitor tick: CSR12=0xffffffa9 bit 6 is 0, expecting 1.
eth1: interrupt  csr5=0xfc670004 new csr5=0xfc660000.
eth1: Transmit error, Tx status 7fffbc80.
eth1: interrupt  csr5=0xfc660000 new csr5=0xfc660000.
eth1: exiting interrupt, csr5=0xfc660000.
eth1: interrupt  csr5=0xfc670004 new csr5=0xfc660000.
eth1: Transmit error, Tx status 7fffbc80.
eth1: interrupt  csr5=0xfc660000 new csr5=0xfc660000.
eth1: exiting interrupt, csr5=0xfc660000.
eth1: interrupt  csr5=0xfc670004 new csr5=0xfc660000.
eth1: Transmit error, Tx status 7fffbc80.
eth1: interrupt  csr5=0xfc660000 new csr5=0xfc660000.
eth1: exiting interrupt, csr5=0xfc660000.

$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$ After removing and reinserting the cable (LED is now ON)
$$ now i ping the remote card successfully and dmesg says:
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

eth1: interrupt  csr5=0xfc670004 new csr5=0xfc660000.
eth1: Transmit error, Tx status 7fffbc80.
eth1: interrupt  csr5=0xfc660000 new csr5=0xfc660000.
eth1: exiting interrupt, csr5=0xfc660000.
eth1: interrupt  csr5=0xfc670004 new csr5=0xfc660000.
eth1: Transmit error, Tx status 7fffbc80.
eth1: interrupt  csr5=0xfc660000 new csr5=0xfc660000.
eth1: exiting interrupt, csr5=0xfc660000.
eth1: interrupt  csr5=0xfc670040 new csr5=0xfc660000.
 In tulip_rx(), entry 0 00400728.
eth1: interrupt  csr5=0xfc660000 new csr5=0xfc660000.
eth1: exiting interrupt, csr5=0xfc660000.
eth1: interrupt  csr5=0xfc670004 new csr5=0xfc660000.
eth1: interrupt  csr5=0xfc660000 new csr5=0xfc660000.
eth1: exiting interrupt, csr5=0xfc660000.
eth1: interrupt  csr5=0xfc670040 new csr5=0xfc660000.
 In tulip_rx(), entry 1 00400328.
eth1: interrupt  csr5=0xfc660000 new csr5=0xfc660000.
eth1: exiting interrupt, csr5=0xfc660000.
eth1: interrupt  csr5=0xfc670005 new csr5=0xfc660000.
eth1: interrupt  csr5=0xfc660000 new csr5=0xfc660000.
eth1: exiting interrupt, csr5=0xfc660000.
eth1: interrupt  csr5=0xfc670040 new csr5=0xfc660000.
 In tulip_rx(), entry 2 00400328.
eth1: interrupt  csr5=0xfc660000 new csr5=0xfc660000.
eth1: exiting interrupt, csr5=0xfc660000.
eth1: interrupt  csr5=0xfc670040 new csr5=0xfc660000.
 In tulip_rx(), entry 3 01e90328.
eth1: interrupt  csr5=0xfc660000 new csr5=0xfc660000.
eth1: exiting interrupt, csr5=0xfc660000.
eth1: interrupt  csr5=0xfc670004 new csr5=0xfc660000.
eth1: interrupt  csr5=0xfc660000 new csr5=0xfc660000.
eth1: exiting interrupt, csr5=0xfc660000.
eth1: interrupt  csr5=0xfc670004 new csr5=0xfc660000.
eth1: interrupt  csr5=0xfc660000 new csr5=0xfc660000.
eth1: exiting interrupt, csr5=0xfc660000.
eth1: interrupt  csr5=0xfc670040 new csr5=0xfc660000.
 In tulip_rx(), entry 4 00400328.
eth1: interrupt  csr5=0xfc660000 new csr5=0xfc660000.
eth1: exiting interrupt, csr5=0xfc660000.
eth1: interrupt  csr5=0xfc670004 new csr5=0xfc660000.
eth1: interrupt  csr5=0xfc660000 new csr5=0xfc660000.
eth1: exiting interrupt, csr5=0xfc660000.
eth1: interrupt  csr5=0xfc670004 new csr5=0xfc660000.
eth1: interrupt  csr5=0xfc660000 new csr5=0xfc660000.
eth1: exiting interrupt, csr5=0xfc660000.
eth1: interrupt  csr5=0xfc670040 new csr5=0xfc660000.
 In tulip_rx(), entry 5 00400328.
eth1: interrupt  csr5=0xfc660000 new csr5=0xfc660000.
eth1: exiting interrupt, csr5=0xfc660000.
eth1: interrupt  csr5=0xfc670040 new csr5=0xfc660000.
 In tulip_rx(), entry 6 00400328.
eth1: interrupt  csr5=0xfc660000 new csr5=0xfc660000.
eth1: exiting interrupt, csr5=0xfc660000.
eth1: interrupt  csr5=0xfc670004 new csr5=0xfc660000.
eth1: interrupt  csr5=0xfc660000 new csr5=0xfc660000.
eth1: exiting interrupt, csr5=0xfc660000.
eth1: interrupt  csr5=0xfc670004 new csr5=0xfc660000.
eth1: interrupt  csr5=0xfc660000 new csr5=0xfc660000.
eth1: exiting interrupt, csr5=0xfc660000.
eth1: interrupt  csr5=0xfc670040 new csr5=0xfc660000.
 In tulip_rx(), entry 7 00660328.
eth1: interrupt  csr5=0xfc660000 new csr5=0xfc660000.
eth1: exiting interrupt, csr5=0xfc660000.
eth1: interrupt  csr5=0xfc670004 new csr5=0xfc660000.
eth1: interrupt  csr5=0xfc660000 new csr5=0xfc660000.
eth1: exiting interrupt, csr5=0xfc660000.
eth1: interrupt  csr5=0xfc670040 new csr5=0xfc660000.
 In tulip_rx(), entry 8 00660328.
eth1: interrupt  csr5=0xfc660000 new csr5=0xfc660000.
eth1: exiting interrupt, csr5=0xfc660000.

THANKS

================================
Sysadmin  MSc.Eng.  Tiberiu Stef
       cracu@el.el.obs.utcluj.ro
	      Have a nice day !!
================================