Subject: Re: kern/34812: VIA Rhine III (VT6105) fails to get valid station address
To: None <gnats-bugs@netbsd.org>
From: Steve Woodford <scw@netbsd.org>
List: netbsd-bugs
Date: 10/17/2006 12:25:24
On Saturday 14 October 2006 10:25, Christopher SEKIYA wrote:

> sys/dev/pci/if_vr.c special-cases the VT6105 and VT6102 when it tries
> to read the station address from EEPROM by *not* reloading the EEPROM.
>  The comment surrounding the code indicates that it's intentional
> because it's redundant.

The commit message for that bit of code is:

-----------
revision 1.66
date: 2003/11/13 22:29:09;  author: scw;  state: Exp;  lines: +16 -4
On Rhine III, don't set VR_EECSR_LOAD before reading the MAC address.
This reloads the entire EEPROM, not just the MAC address, which can
cause problems for the host PCI bus under certain circumstances. The
chip already loads the EEPROM at powerup/reset anyway.
-----------

The problem is that re-reading the EEPROM can undo some of the chip's PCI 
configuration performed by the host BIOS/firmware, resulting in lossage 
later on.

If your chip needs to be told explicitly to read its EEPROM, then it 
looks like a reliable heuristic would be to check for an all zeroes MAC 
address before doing so.

Cheers, Steve