diff options
author | yongari <yongari@FreeBSD.org> | 2005-12-22 02:03:57 +0000 |
---|---|---|
committer | yongari <yongari@FreeBSD.org> | 2005-12-22 02:03:57 +0000 |
commit | 2543d7c4ba35f83357c8c61840da2e03d16b15d8 (patch) | |
tree | 2bf9235698167a67c7c9ea4111b33100172fdb40 /sys/dev/bge | |
parent | 1505ec54f3c0f63aaa95c57a95aa77c0955dfaee (diff) | |
download | FreeBSD-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.c | 11 |
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); } |