summaryrefslogtreecommitdiffstats
path: root/sys/dev/bge
diff options
context:
space:
mode:
authoryongari <yongari@FreeBSD.org>2005-12-22 02:03:57 +0000
committeryongari <yongari@FreeBSD.org>2005-12-22 02:03:57 +0000
commit2543d7c4ba35f83357c8c61840da2e03d16b15d8 (patch)
tree2bf9235698167a67c7c9ea4111b33100172fdb40 /sys/dev/bge
parent1505ec54f3c0f63aaa95c57a95aa77c0955dfaee (diff)
downloadFreeBSD-src-2543d7c4ba35f83357c8c61840da2e03d16b15d8.zip
FreeBSD-src-2543d7c4ba35f83357c8c61840da2e03d16b15d8.tar.gz
Fix bge_eeprom_getbyte() to return 1 when timeout happens.
Previously it always returned 0 which means success regardless of EEPROM status. While here, add a check whether EEPROM read is successful. Submitted by: jkim
Diffstat (limited to 'sys/dev/bge')
-rw-r--r--sys/dev/bge/if_bge.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/sys/dev/bge/if_bge.c b/sys/dev/bge/if_bge.c
index 3100f93..eb5ab71 100644
--- a/sys/dev/bge/if_bge.c
+++ b/sys/dev/bge/if_bge.c
@@ -519,7 +519,7 @@ bge_eeprom_getbyte(sc, addr, dest)
if (i == BGE_TIMEOUT) {
printf("bge%d: eeprom read timed out\n", sc->bge_unit);
- return(0);
+ return(1);
}
/* Get result. */
@@ -2197,8 +2197,13 @@ bge_attach(dev)
if (bge_readmem_ind(sc, BGE_SOFTWARE_GENCOMM_SIG) == BGE_MAGIC_NUMBER)
hwcfg = bge_readmem_ind(sc, BGE_SOFTWARE_GENCOMM_NICCFG);
else {
- bge_read_eeprom(sc, (caddr_t)&hwcfg,
- BGE_EE_HWCFG_OFFSET, sizeof(hwcfg));
+ if (bge_read_eeprom(sc, (caddr_t)&hwcfg, BGE_EE_HWCFG_OFFSET,
+ sizeof(hwcfg))) {
+ printf("bge%d: failed to read EEPROM\n", unit);
+ bge_release_resources(sc);
+ error = ENXIO;
+ goto fail;
+ }
hwcfg = ntohl(hwcfg);
}
OpenPOWER on IntegriCloud