Subject: Re: kern/34812: VIA Rhine III (VT6105) fails to get valid station address
To: None <kern-bug-people@netbsd.org, gnats-admin@netbsd.org,>
From: Steve Woodford <scw@netbsd.org>
List: netbsd-bugs
Date: 10/17/2006 11:30:02
The following reply was made to PR kern/34812; it has been noted by GNATS.
From: Steve Woodford <scw@netbsd.org>
To: gnats-bugs@netbsd.org
Cc: kern-bug-people@netbsd.org, gnats-admin@netbsd.org,
netbsd-bugs@netbsd.org
Subject: Re: kern/34812: VIA Rhine III (VT6105) fails to get valid station address
Date: Tue, 17 Oct 2006 12:25:24 +0100
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