[tulip-bug] Recurring Lite-on PNIC loss of traffic after unplug/replug from switch

Simen Thoresen simen-tt@online.no
Sun, 21 Jan 2001 21:28:00 +0100


This applies to stock linux kernels 2.2.16 (possibly earlier) thru 2.2.18 and 2.4.0, and the Kingston KNE110TX (Lite-ON PNIC based)
Target switch is Kingston KNS800/WG - cheap 8-port 100Mb-FD autneg switch, but has been observed on other switches as well.


When the kernel boots, link is set as expected to 100baseTx-FD, performance is great. (eth0: Setting full-duplex... capability of 41e1)

root@putty:~# ./tulip-diag -#1
tulip-diag.c:v2.06 1/8/2001 Donald Becker (becker@scyld.com)
 http://www.scyld.com/diag/index.html
Index #1: Found a Lite-On 82c168 PNIC adapter at 0xd800.
 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.
 Use '-a' or '-aa' to show device registers,
     '-e' to show EEPROM contents, -ee for parsed contents,
  or '-m' or '-mm' to show MII management registers.


root@putty:~# ./mii-diag
Using the default interface 'eth0'.
Basic registers of MII PHY #1:  3100 782d 0302 d008 01e1 41e1 0005 2001.
 Basic mode control register 0x3100: Auto-negotiation enabled.
 You have link beat, and everything is working OK.
 Your link partner advertised 41e1: 100baseTx-FD 100baseTx 10baseT-FD 10baseT.


Replugging the cable (or repowering the switch) will drop the 'FDX' light on the switch, and the card will seemingly 'hang' until reboot

root@putty:~# ./tulip-diag -#1
tulip-diag.c:v2.06 1/8/2001 Donald Becker (becker@scyld.com)
 http://www.scyld.com/diag/index.html
Index #1: Found a Lite-On 82c168 PNIC adapter at 0xd800.
 Port selection is 10mpbs-serial, 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 160.
 Use '-a' or '-aa' to show device registers,
     '-e' to show EEPROM contents, -ee for parsed contents,
  or '-m' or '-mm' to show MII management registers.


root@putty:~# ./mii-diag
Using the default interface 'eth0'.
Basic registers of MII PHY #1:  3100 782d 0302 d008 01e1 0080 0004 2001.
 Basic mode control register 0x3100: Auto-negotiation enabled.
 You have link beat, and everything is working OK.
 Your link partner is generating 100baseTx link beat  (no autonegotiation).

I've seen this on several machines (but only used tulip-diag and mii-diag on this one (440BX, dual 600MHz PIII, Linux 2.4.0), and the symptoms are the same.

(at times (most often), the capability of the link partner is reported as 01e1, not 41e1 - I've only seen 41e1 on the 2.4 kernel)


Now, if I ifconfig eth0 down, and then ifconfig it up again, i can run traffic, but without full-duplex. Rmmod'ing and insmod'ing does not help.

...oh, and the NT4 driver for the same card handles unplug/replug without any issues, so I guess it is the driver that is the problem, and not the card or the switch.

On a different set of machines, connected to a Olicom switch, I am unable to get 100baseTx-FD (only 100baseTx) - other cards get FD, and possibly also on earlier kernels, but I'm not sure about that.

I'm quite fond of these cards, and we use quite a lot of them at work, so I would like to see them work ok. Is there any tests I can perform that would help, or any more information I can supply?

Yours,
-Simen Thoresen,
--
Simen Thoresen, Beowulf-cleaner and random artist - close and personal.

Er det ikke rart?
The gnu RART-project on http://valinor.dolphinics.no:1080/~simentt/rart