Problems with Tulip driver in 2.2 and 2.4

From: J. S. Connell (ankh@canuck.gen.nz)
Date: Sun Oct 15 2000 - 20:25:34 EST


Any time I disconnect and then reconnect the ethernet cable from my Netgear
FA310TX cards, the card appears to not notice and doesn't reestablish the
link. Under 2.2.17pre4, the link light comes on, but until I do ifconfig
ethX down; ifconfig ethX up, the kernel ignores any traffic on that
interface (tcpdump on both an affected machine and a nonaffected machine
show the kernel ignoring all incoming traffic, and not sending any traffic
out.) Under 2.4.0-test9-pre7, however, when I reconnect the ethernet
cable, the link light does _not_ come on, and nothing short of a reboot
will bring it back up.

I'm currently stuck at 2.2.17pre4 because I need André Hedrick's IDE patch,
which won't apply (except manually) to later 2.2 kernels, and my attempts
to apply the patch manually have ended in kernels that fail during boot.

In this system, eth0 is connected to a 10/100 Asanté FriendlyNet 8-port
switch, and eth1 is connected to an RCA model DCM205 "digital|BROADBAND"
cablemodem.

Bootup messages from 2.4.0-test9-pre7:
Linux Tulip driver version 0.9.10 (September 6, 2000)
eth0: Lite-On 82c168 PNIC rev 33 at 0xe000, 00:A0:CC:3C:A8:D4, IRQ 11.
eth0: MII transceiver #1 config 1000 status 782d advertising 01e1.
eth1: Lite-On 82c168 PNIC rev 33 at 0xee00, 00:A0:CC:3C:A8:DB, IRQ 10.
eth1: MII transceiver #1 config 1000 status 782d advertising 01e1.

lspci -vv output:
00:0f.0 Ethernet controller: Lite-On Communications Inc LNE100TX (rev 21)
        Subsystem: Netgear FA310TX
        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
        Interrupt: pin A routed to IRQ 11
        Region 0: I/O ports at e000 [size=256]
        Region 1: Memory at febfdf00 (32-bit, non-prefetchable) [size=256]
        Expansion ROM at feb40000 [disabled] [size=256K]

00:10.0 Ethernet controller: Lite-On Communications Inc LNE100TX (rev 21)
        Subsystem: Netgear FA310TX
        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
        Interrupt: pin A routed to IRQ 10
        Region 0: I/O ports at ee00 [size=256]
        Region 1: Memory at febfde00 (32-bit, non-prefetchable) [size=256]
        Expansion ROM at feb00000 [disabled] [size=256K]

tulip-diag -mm output, when happy, from 2.4.0-test9-pre7:
tulip-diag.c:v2.04 9/26/2000 Donald Becker (becker@scyld.com)
 http://www.scyld.com/diag/index.html
Index #1: Found a Lite-On 82c168 PNIC adapter at 0xe000.
 Port selection is MII, half-duplex.
 Transmit started, Receive started, half-duplex.
  The Rx process state is 'Waiting for packets'.
  The Tx process state is 'Idle'.
  The transmit threshold is 128.
 MII PHY found at address 1, status 0x782d.
 MII PHY #1 transceiver registers:
   3000 782d 7810 0000 0001 45e1 0001 0000
   0000 0000 0000 0000 0000 0000 0000 0000
   0000 0000 4000 0000 38c8 0010 0000 0002
   0001 0000 0000 0000 0000 0000 0000 0000.
 Basic mode control register 0x3000: Auto-negotiation enabled.
 Basic mode status register 0x782d ... 782d.
   Link status: established.
   Capable of 100baseTx-FD 100baseTx 10baseT-FD 10baseT.
   Able to perform Auto-negotiation, negotiation complete.
 Vendor ID is 1e:04:00:--:--:--, model 0 rev. 0.
   Vendor/Part: Level One LXT970.
 I'm advertising 0001:
   Advertising no additional info pages.
   IEEE 802.3 CSMA/CD protocol.
 Link partner capability is 45e1: Flow-control 100baseTx-FD 100baseTx 10baseT-FD 10baseT.
   Negotiation completed.
Index #2: Found a Lite-On 82c168 PNIC adapter at 0xee00.
 Port selection is MII, half-duplex.
 Transmit started, Receive started, half-duplex.
  The Rx process state is 'Waiting for packets'.
  The Tx process state is 'Idle'.
  The transmit threshold is 128.
 MII PHY found at address 1, status 0x782d.
 MII PHY #1 transceiver registers:
   3000 782d 7810 0000 0001 41e1 0001 0000
   0000 0000 0000 0000 0000 0000 0000 0000
   0000 0000 4000 0000 38c8 0010 0000 0002
   0001 0000 0000 0000 0000 0000 0000 0000.
 Basic mode control register 0x3000: Auto-negotiation enabled.
 Basic mode status register 0x782d ... 782d.
   Link status: established.
   Capable of 100baseTx-FD 100baseTx 10baseT-FD 10baseT.
   Able to perform Auto-negotiation, negotiation complete.
 Vendor ID is 1e:04:00:--:--:--, model 0 rev. 0.
   Vendor/Part: Level One LXT970.
 I'm advertising 0001:
   Advertising no additional info pages.
   IEEE 802.3 CSMA/CD protocol.
 Link partner capability is 41e1: 100baseTx-FD 100baseTx 10baseT-FD 10baseT.
   Negotiation completed.

When unhappy, the basic mode status register contains the value 0x7809, the
link status is "not established", and negotiation is listed as not
complete. Attempts to kick the card back into operation with -r, -R, -A,
or -F achieve nothing.

Bootup messages from 2.2.17pre4:
tulip.c:v0.91g-ppc 7/16/99 becker@cesdis.gsfc.nasa.gov
eth0: Lite-On 82c168 PNIC rev 33 at 0xe000, 00:A0:CC:3C:A8:D4, IRQ 11.
eth0: MII transceiver #1 config 1000 status 782d advertising 01e1.
eth1: Lite-On 82c168 PNIC rev 33 at 0xee00, 00:A0:CC:3C:A8:DB, IRQ 10.
eth1: MII transceiver #1 config 1000 status 782d advertising 01e1.
< a few seconds later >
eth0: Setting full-duplex based on MII#1 link partner capability of 45e1.
eth1: Setting full-duplex based on MII#1 link partner capability of 41e1.

lspci -vv output, in 2.2.17pre4:
Identical with that from 2.4.0-test9-pre7, except the [size=XXX] information
isn't printed.

tulip-diag output, when happy, from 2.2.17pre4:
tulip-diag.c:v2.04 9/26/2000 Donald Becker (becker@scyld.com)
 http://www.scyld.com/diag/index.html
Index #1: Found a Lite-On 82c168 PNIC adapter at 0xe000.
 Port selection is MII, full-duplex.
 Transmit started, Receive started, full-duplex.
  The Rx process state is 'Waiting for packets'.
  The Tx process state is 'Idle'.
  The transmit threshold is 1024.
 MII PHY found at address 1, status 0x782d.
 MII PHY #1 transceiver registers:
   1000 782d 7810 0000 01e1 45e1 0001 0000
   0000 0000 0000 0000 0000 0000 0000 0000
   0000 0000 4000 0000 38c8 0010 0000 0002
   0001 0000 0000 0000 0000 0000 0000 0000.
 Basic mode control register 0x1000: Auto-negotiation enabled.
 Basic mode status register 0x782d ... 782d.
   Link status: established.
   Capable of 100baseTx-FD 100baseTx 10baseT-FD 10baseT.
   Able to perform Auto-negotiation, negotiation complete.
 Vendor ID is 1e:04:00:--:--:--, model 0 rev. 0.
   Vendor/Part: Level One LXT970.
 I'm advertising 01e1: 100baseTx-FD 100baseTx 10baseT-FD 10baseT
   Advertising no additional info pages.
   IEEE 802.3 CSMA/CD protocol.
 Link partner capability is 45e1: Flow-control 100baseTx-FD 100baseTx 10baseT-FD 10baseT.
   Negotiation completed.
Index #2: Found a Lite-On 82c168 PNIC adapter at 0xee00.
 Port selection is MII, full-duplex.
 Transmit started, Receive started, full-duplex.
  The Rx process state is 'Waiting for packets'.
  The Tx process state is 'Idle'.
  The transmit threshold is 128.
 MII PHY found at address 1, status 0x782d.
 MII PHY #1 transceiver registers:
   1000 782d 7810 0000 01e1 41e1 0001 0000
   0000 0000 0000 0000 0000 0000 0000 0000
   0000 0000 4000 0000 38c8 0010 0000 0002
   0001 0000 0000 0000 0000 0000 0000 0000.
 Basic mode control register 0x1000: Auto-negotiation enabled.
 Basic mode status register 0x782d ... 782d.
   Link status: established.
   Capable of 100baseTx-FD 100baseTx 10baseT-FD 10baseT.
   Able to perform Auto-negotiation, negotiation complete.
 Vendor ID is 1e:04:00:--:--:--, model 0 rev. 0.
   Vendor/Part: Level One LXT970.
 I'm advertising 01e1: 100baseTx-FD 100baseTx 10baseT-FD 10baseT
   Advertising no additional info pages.
   IEEE 802.3 CSMA/CD protocol.
 Link partner capability is 41e1: 100baseTx-FD 100baseTx 10baseT-FD 10baseT.
   Negotiation completed.

Here is a diff of the above output from when the tulip driver is in a
"hung" state:
--- tdout-2.2 Sun Oct 15 18:15:28 2000
+++ tdout-2.2-bad Sun Oct 15 18:17:27 2000
@@ -5,12 +5,12 @@
  Transmit started, Receive started, full-duplex.
   The Rx process state is 'Waiting for packets'.
   The Tx process state is 'Idle'.
- The transmit threshold is 1024.
- MII PHY found at address 1, status 0x782d.
+ The transmit threshold is 72.
+ MII PHY found at address 1, status 0x7829.
  MII PHY #1 transceiver registers:
- 1000 782d 7810 0000 01e1 45e1 0001 0000
+ 1000 782d 7810 0000 01e1 45e1 0003 0000
    0000 0000 0000 0000 0000 0000 0000 0000
- 0000 0000 4000 0000 38c8 0010 0000 0002
+ 0000 0000 4000 0000 3ff9 0010 0000 0002
    0001 0000 0000 0000 0000 0000 0000 0000.
  Basic mode control register 0x1000: Auto-negotiation enabled.
  Basic mode status register 0x782d ... 782d.

After the ifconfig down/up pair, the only part of the above that reverts is
the "MII PHY found at" line; the other changes remain.

Under 2.4.0-test9-pre7, no kernel messages are logged, other than a panoply
of "NETDEV WATCHDOG: ethX: transmit timed out".

If there's any other information I can send to assist in debugging and
fixing this, please don't hesitate to email me. Under 2.2 it is a
nuisance, but under 2.4 it's a real show-stopper for me, since I have to
reboot to fix it.

-- 
Jeffrey Sean Connell __ | SHOUTip Team Leader, net.com
ankh@canuck.gen.nz   \/ | PGP key: http://www.canuck.gen.nz/~ankh/pgpkey.html
------------------------+----------------------------------------------------

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Sun Oct 15 2000 - 21:00:29 EST