svn commit: r183859 - head/sys/dev/jme
Pyun YongHyeon
yongari at FreeBSD.org
Tue Oct 14 00:54:15 UTC 2008
Author: yongari
Date: Tue Oct 14 00:54:15 2008
New Revision: 183859
URL: http://svn.freebsd.org/changeset/base/183859
Log:
Make sure to read the last byte of EEPROM descriptor. Previously
the last byte of the ethernet address was not read which in turn
resulted in getting 5 out of the 6 bytes of ethernet address and
always returned ENOENT. I did not notice the bug on FPGA version
because of additional configuration data in EEPROM.
Pointed out by: bouyer at NetBSD
Modified:
head/sys/dev/jme/if_jme.c
Modified: head/sys/dev/jme/if_jme.c
==============================================================================
--- head/sys/dev/jme/if_jme.c Mon Oct 13 23:10:19 2008 (r183858)
+++ head/sys/dev/jme/if_jme.c Tue Oct 14 00:54:15 2008 (r183859)
@@ -415,11 +415,8 @@ jme_eeprom_macaddr(struct jme_softc *sc)
do {
if (jme_eeprom_read_byte(sc, offset, &fup) != 0)
break;
- /* Check for the end of EEPROM descriptor. */
- if ((fup & JME_EEPROM_DESC_END) == JME_EEPROM_DESC_END)
- break;
- if ((uint8_t)JME_EEPROM_MKDESC(JME_EEPROM_FUNC0,
- JME_EEPROM_PAGE_BAR1) == fup) {
+ if (JME_EEPROM_MKDESC(JME_EEPROM_FUNC0, JME_EEPROM_PAGE_BAR1) ==
+ (fup & (JME_EEPROM_FUNC_MASK | JME_EEPROM_PAGE_MASK))) {
if (jme_eeprom_read_byte(sc, offset + 1, ®) != 0)
break;
if (reg >= JME_PAR0 &&
@@ -431,6 +428,9 @@ jme_eeprom_macaddr(struct jme_softc *sc)
match++;
}
}
+ /* Check for the end of EEPROM descriptor. */
+ if ((fup & JME_EEPROM_DESC_END) == JME_EEPROM_DESC_END)
+ break;
/* Try next eeprom descriptor. */
offset += JME_EEPROM_DESC_BYTES;
} while (match != ETHER_ADDR_LEN && offset < JME_EEPROM_END);
More information about the svn-src-all
mailing list