[eepro100] Auto-negotiation: can set by mii-diag but not by boot

Dan Halbert halbert@bbn.com
Mon, 25 Jun 2001 20:01:58 -0400 (EDT)


We recently replaced our no-auto-negotiation switches with Cisco Catalyst
3548's.

We have a bunch of servers using Intel L440GX motherboards, which have
integrated 8255x controllers. We are running a Linux kernel 2.2.18
with smp enabled, though the boards have only one CPU. The eepro100
driver is included in the kernel. (Detailed version info about the
eepro100 version and status is at the end.)

Originally, /etc/lilo.conf said:

 append="ether=0,0,0x30,eth0"    # set 100Full no autonegotiate

I removed this line to enable autonegotiation, since I understand that
"options=0" should mean auto-negotiation is turned on (right?). I then
re-ran lilo.

However, after rebooting, and even after a power-cycle, mii-diag
reported that auto-negotiation was still disabled. I even restored the
lilo "ether" line and changed the 0x30 to 0 to explicitly set the
options, and that didn't work either.

I then ran "mii-diag -A 100BaseTx", which -did- restore auto-negotiation.
This also seems to survive resets and power-cycles.

I didn't think that mii-diag was writing some non-volatile memory. And
why doesn't my lilo.conf set auto-negotiation properly? I'm really
puzzled.

Thanks,
Dan Halbert
[apologies if this seems like a novice question; I searched the archives
but came up with nothing]

eepro100 version information:
On boot, I see:
==============================================================================
eepro100.c:v1.09j-t 9/29/99 Donald Becker http://cesdis.gsfc.nasa.gov/linux/drivers/eepro100.html
eepro100.c: $Revision: 1.20.2.10 $ 2000/05/31 Modified by Andrey V. Savochkin <saw@saw.sw.com.sg> and others
eepro100.c: VA Linux custom, Dragan Stancevic <visitor@valinux.com> 2000/11/15
eth0: Intel PCI EtherExpress Pro100 82557, 00:D0:B7:89:84:EE, IRQ 21.
  Receiver lock-up bug exists -- enabling work-around.
  Board assembly 000000-000, Physical connectors present: RJ45
  Primary interface chip i82555 PHY #1.
  General self-test: passed.
  Serial sub-system self-test: passed.
  Internal registers self-test: passed.
  ROM checksum self-test: passed (0x04f4518b).
==============================================================================

"./mii-diag -v -v" reports:
==============================================================================
mii-diag.c:v2.02 5/21/2001 Donald Becker (becker@scyld.com)
 http://www.scyld.com/diag/index.html
Using the default interface 'eth0'.
 The autonegotiated capability is 01e0.
The autonegotiated media type is 100baseTx-FD.
 Basic mode control register 0x3000: Auto-negotiation enabled.
 You have link beat, and everything is working OK.
   This transceiver is capable of  100baseTx-FD 100baseTx 10baseT-FD 10baseT.
   Able to perform Auto-negotiation, negotiation complete.
 Your link partner advertised 41e1: 100baseTx-FD 100baseTx 10baseT-FD 10baseT.
   End of basic transceiver informaion.
 
 MII PHY #1 transceiver registers:
   3000 782d 02a8 0154 05e1 41e1 0001 0000
   0000 0000 0000 0000 0000 0000 0000 0000
   0a03 0000 0001 0000 0000 0000 0000 0000
   0000 0000 0b10 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 00:aa:00:--:--:--, model 21 rev. 4.
   No specific information is known about this transceiver type.
 I'm advertising 05e1: Flow-control 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.