Method of correcting identification data stored in an EEPROM

A method of correcting identification data stored in an EEPROM is described. Identification data stored in an EEPROM of a device such as a NIC is programmed into a flash ROM in which the host computer's BIOS is stored. During boot up of the host computer, the BIOS checksums the identification data stored in the EEPROM to determine whether it is valid. If the identification data is determined to be invalid, the EEPROM is reprogrammed with the identification data stored in the flash ROM. Optionally, a flag is set in a CMOS RAM for use by a network administrator to monitor the health of the EEPROM.

TECHNICAL FIELD 
One embodiment relates generally to identification data for computer 
devices and subsystems and, more particularly, to a method of correcting 
identification data stored in an EEPROM. 
BACKGROUND 
Electrically erasable programmable read-only memories, or "EEPROMs", are 
commonly used in computer devices and subsystems to store "tag" or 
identification information for the devices or subsystems. For example, a 
network interface controller ("NIC"), which is a device used to connect a 
computer to a local area network ("LAN"), typically has assigned thereto a 
unique media access control ("MAC") or node address that identifies the 
NIC to the LAN and therefore enables the NIC to communicate with the LAN. 
The MAC or node address of the NIC is stored in an EEPROM associated 
therewith. If the data stored in the EEPROM is corrupted, the NIC is not 
recognizable to, and hence cannot communicate with, the LAN. A PCI device 
ID is also stored in the EEPROM of the NIC to enable the host computer and 
its software drivers and operating system to communicate with the NIC 
subsystem. 
Currently, the conventional way to "repair" a "soft" failure in an EEPROM 
is to remove the entire integrated circuit ("IC") chip on which it resides 
and replace the IC chip with a new one. Often, this means replacing the 
entire device with which the EEPROM is associated. The EEPROM may be 
reprogrammed, although it is often simply discarded. Reprogramming the 
EEPROM typically involves removing the motherboard and returning it to the 
manufacturer. Clearly, this practice is time-consuming, labor intensive, 
expensive, and, in cases in which the defective EEPROM is simply 
discarded, wasteful. 
Therefore, what is needed is a method of correcting identification data 
stored in an EEPROM without having to remove the EEPROM from the computer 
in which it resides. 
SUMMARY 
One embodiment, accordingly, programs the identification data stored in an 
EEPROM of a device such as a NIC into a flash ROM in which the host 
computer's BIOS is stored. During boot up of the computer, the BIOS 
checksums the identification data stored in the EEPROM to determine 
whether the identification data is valid. If the identification data is 
determined to be invalid, the EEPROM is reprogrammed with the 
identification data stored in the flash ROM. Optionally, a flag is set in 
a CMOS RAM for use by a network administrator to monitor the health of the 
EEPROM. 
A technical advantage is the reduction of time, energy, and expense 
involved in correcting identification data stored in an EEPROM. 
Another technical advantage is that, when corruption of the identification 
data occurs, neither the EEPROM nor the device with which it is 
associated, such as an NIC, must necessarily be replaced before the 
computer can communicate with the LAN or host computer.

DESCRIPTION OF THE PREFERRED EMBODIMENT 
As shown in FIG. 1, according to one embodiment, a computer 10 includes a 
host processor 12, a level 2 ("L2") cache 14, and a memory array 16, all 
connected to a PCI bus 18 via a bridge 20. Also connected to the PCI bus 
18 are a plurality of PCI slots 22, a network interface controller ("NIC") 
24, and a PCI video device 26. Additional PCI slots 28, which are 
connected to the PCI bus 18 via a PCI-to-PCI bridge 30. An additional 
bridge 32, which includes a CMOS RAM 32a, serves as an interface between 
the PCI bus 18 and an ISA bus 34 and a flash ROM device 36 for storing the 
BIOS 36a for the computer 10. 
As previously described, the NIC 24 can enable and control communications 
between the computer 10 and a local area network ("LAN") (not shown). The 
NIC 24 includes an EEPROM 38 in which is stored the MAC or node address 
and other identification data for the NIC 24 necessary for enabling 
communications with the LAN. The EEPROM 38 can also store the PCI device 
ID of the NIC 24, which is used to identify the NIC 24 on the PCI bus 18. 
The operation of one embodiment will now be described with reference to 
FIG. 2. During a functional verification system ("FVS") process, the 
EEPROM 38 can be programmed with identification data for the NIC 24 (step 
200). In accordance with the preferred embodiment, this process is 
extended to program a copy of the identification data into the flash ROM 
36 as well (step 202). As will be described, the identification data 
programmed into the flash ROM 36 is not used by the BIOS 36a or the NIC 24 
unless the identification data stored in the EEPROM 38 is determined to be 
corrupted. 
During boot-up of the computer 10, the BIOS 36a checksums the 
identification data stored in the EEPROM 38 (step 204) and then determines 
whether the identification data stored therein is valid, and hence not 
corrupted (step 206). If the EEPROM identification data is determined not 
to be valid, the BIOS 36a reprograms the EEPROM 38 with the copy of the 
identification data programmed into the flash ROM 36 during the FVS 
process (step 208). The process of the host computer's writing data to the 
EEPROM "on the fly" is known by those skilled in the art and is well 
documented in the applicable NIC and EEPROM databooks. The BIOS 36a also 
optionally sets a flag in the CMOS RAM 32a, which comprises part of the 
bridge 32, or in the flash ROM 36 itself (step 210). This flag could be 
returned to a system administrator using currently available system 
management tools, such as Dell Inspector, or some other desktop management 
interface ("DMI") utility in a known manner and used to determine the 
health of the EEPROM 38. The boot process then proceeds as usual (step 
212). Similarly, if the EEPROM identification data is determined to be 
valid, the boot process proceeds as usual (step 212). 
It will be recognized that other devices or subsystems of the computer 10, 
for example, the PCI video device 26, may have associated therewith an 
EEPROM for storing identification data therefor. The techniques described 
above with respect to the NIC 24 are equally applicable to such other 
devices or subsystems. 
Although an illustrative embodiment has been shown and described, other 
modifications, changes, and substitutions are intended in the foregoing 
disclosure. Accordingly, it is appropriate that the appended claims be 
construed broadly and in a manner consistent with the scope of the 
disclosure,