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, &reg) != 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);
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to