[eepro100] Auto-negotiation: can set by mii-diag but not by boot
Donald Becker
becker@scyld.com
Tue, 26 Jun 2001 10:57:10 -0400 (EDT)
On Mon, 25 Jun 2001, Dan Halbert wrote:
> We recently replaced our no-auto-negotiation switches with Cisco Catalyst
> 3548's.
>
> ...integrated 8255x controllers... kernel 2.2.18 ... The eepro100
> driver is included in the kernel.
..
> 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?).
"options=0" did mean that the setting is left unchanged.
This has been changed slightly in the v1.16 driver: as a special case,
if the transceiver is in forced-10baseT mode it is reset to restore
autonegotiation. This is to work around a BIOS bug on an Alpha
motherboard, rather than as a general-purpose fix.
> 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.
Hmmm, are you certain about the power-cycle? If this is a wake-on-LAN
board, you might need a hard-power-off rather than a soft-power-off.
> I then ran "mii-diag -A 100BaseTx", which -did- restore auto-negotiation.
> This also seems to survive resets and power-cycles.
This set the transceiver to autonegotiation, and the transceiver
retained that setting as long as it had power (even stand-by power).
> I didn't think that mii-diag was writing some non-volatile memory.
No, it doesn't. Only 'eepro100-diag' writes the configuration EEPROM.
> eepro100.c:v1.09j-t 9/29/99 Donald Becker
> http://cesdis.gsfc.nasa.gov/linux/drivers/eepro100.html
Grrr, that URL has been obsolete for about two years.
Donald Becker becker@scyld.com
Scyld Computing Corporation http://www.scyld.com
410 Severn Ave. Suite 210 Second Generation Beowulf Clusters
Annapolis MD 21403 410-990-9993