Autonegotiation endless loop

William Montgomery william@opinicus.com
Fri Oct 22 16:18:38 1999


I am using Linux kernel version 2.0.37 with the tulip driver
v0.91 dated 4/14/99.  The CPU is a Pentium III 500MHz and uses
the DEC21143-TB with a SYM-PHY (QS6611).  The EEPROM correctly
reflects this configuration and things work fine at 10mbs.

The problem comes about when I connect to a 100mbs ethernet hub.
The autonegotiation seems sucessful, then something happens to 
cause a link status interrupt and the autonegotiation starts all
over again, it loops forever in this manner.

The following is a log produced with the dmesg command.  I have
added some more debugging messages to help me follow the code.

eth0: Digital DS21143 Tulip rev 65 at 0xe400, 00:20:38:00:0E:75, IRQ 10.
eth0:  EEPROM default media type Autosense.
eth0:  Index #0 - Media 10baseT (#0) described by a 21142 Serial PHY (2) block.
eth0:  Index #1 - Media 10baseT-FD (#4) described by a 21142 Serial PHY (2) block.
eth0:  Index #2 - Media 100baseTx (#3) described by a 21143 SYM PHY (4) block.
eth0:  Index #3 - Media 100baseTx-FD (#5) described by a 21143 SYM PHY (4) block.
eth0: tulip_open() irq 10.
eth0: Restarting 21143 autonegotiation, 0003ffff.
eth0:  x0 tp->csr6: 82420200 
eth0:  x1 csr6: b2420200 
eth0: Done tulip_open(), CSR0 f8a08000, CSR5 f0360000 CSR6 b2422202.
eth0: exiting interrupt, csr5=0xf0660000.
eth0: exiting interrupt, csr5=0xf0660000.
eth0: exiting interrupt, csr5=0xf0660000.
eth0: exiting interrupt, csr5=0xf0660000.
eth0: 21143 link status interrupt 41e1d2ce, CSR5 f0668010, fffbffff.
eth0: Switching to 100baseTx-FD based on link partner advertisement 41e1.
eth0: sm mleaf->type 4  idx 3 count 4
eth0: sm 21143 non-MII 100baseTx-FD transceiver control 08af/00a5.
eth0:  sm mleaf->type: 4 p[0]: 5 
eth0:  Setting CSR15 to 08af0000/00a50000.
eth0:   sm csr13val: 00000001 csr14val: 0003ff7f
eth0:  sm Using media type 100baseTx-FD, CSR12 is ce.
eth0:  Restarting Tx and Rx, CSR5 is f0008102  CSR6: 83860200.
eth0: exiting interrupt, csr5=0xf0160000.
eth0: exiting interrupt, csr5=0xf0660000.
eth0: 21143 link status interrupt 41e1d2cd, CSR5 f8668000, fffbffff.
eth0: 21143 100baseTx-FD link beat good.
eth0: exiting interrupt, csr5=0xf0660000.
eth0: 21143 link status interrupt 41e192cf, CSR5 f8668000, fffbffff.
eth0: Restarting 21143 autonegotiation, 0003ffff.
eth0: exiting interrupt, csr5=0xf0000000.
eth0: 21143 link status interrupt 41e1d2cf, CSR5 f0008010, fffbffff.
eth0: Switching to 100baseTx-FD based on link partner advertisement 41e1.
eth0: sm mleaf->type 4  idx 3 count 4
eth0: sm 21143 non-MII 100baseTx-FD transceiver control 08af/00a5.
eth0:  sm mleaf->type: 4 p[0]: 5
eth0:  Setting CSR15 to 08af0000/00a50000.
eth0:   sm csr13val: 00000001 csr14val: 0003ff7f
eth0:  sm Using media type 100baseTx-FD, CSR12 is cf.
eth0:  Restarting Tx and Rx, CSR5 is f0000000  CSR6: 83860200.
eth0: exiting interrupt, csr5=0xf0160000.
eth0: exiting interrupt, csr5=0xf0660000.
eth0: 21143 link status interrupt 41e1d2cd, CSR5 f8668000, fffbffff.
eth0: 21143 100baseTx-FD link beat good.
eth0: exiting interrupt, csr5=0xf0660000.
eth0: 21143 link status interrupt 41e192cf, CSR5 f8668000, fffbffff.
eth0: Restarting 21143 autonegotiation, 0003ffff.
eth0: exiting interrupt, csr5=0xf0000000.
eth0: 21143 link status interrupt 41e1d2cf, CSR5 f0008010, fffbffff.
eth0: Switching to 100baseTx-FD based on link partner advertisement 41e1.

I am using the driver in module form to make testing easier
and have tried passing options=3 and options=5 to force no autoneg.
This produces a slightly different result in which the driver messages
indicate "link beat good" then "link beat failed" alternately.

Any suggestions would be most helpful.

Regards,

William Montgomery