Module Name:    src
Committed By:   msaitoh
Date:           Wed Apr 24 08:03:07 UTC 2019

Modified Files:
        src/sys/dev/ic: lemac.c

Log Message:
 KNF. No functional change.


To generate a diff of this commit:
cvs rdiff -u -r1.50 -r1.51 src/sys/dev/ic/lemac.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/dev/ic/lemac.c
diff -u src/sys/dev/ic/lemac.c:1.50 src/sys/dev/ic/lemac.c:1.51
--- src/sys/dev/ic/lemac.c:1.50	Tue Feb  5 06:17:02 2019
+++ src/sys/dev/ic/lemac.c	Wed Apr 24 08:03:07 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: lemac.c,v 1.50 2019/02/05 06:17:02 msaitoh Exp $ */
+/* $NetBSD: lemac.c,v 1.51 2019/04/24 08:03:07 msaitoh Exp $ */
 
 /*-
  * Copyright (c) 1994, 1995, 1997 Matt Thomas <[email protected]>
@@ -34,7 +34,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: lemac.c,v 1.50 2019/02/05 06:17:02 msaitoh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: lemac.c,v 1.51 2019/04/24 08:03:07 msaitoh Exp $");
 
 #include "opt_inet.h"
 
@@ -55,6 +55,7 @@ __KERNEL_RCSID(0, "$NetBSD: lemac.c,v 1.
 #include <net/route.h>
 #include <net/if_ether.h>
 #include <net/if_media.h>
+#include <net/bpf.h>
 
 #ifdef INET
 #include <netinet/in.h>
@@ -73,8 +74,6 @@ __KERNEL_RCSID(0, "$NetBSD: lemac.c,v 1.
 #include <i386/isa/decether.h>
 #endif
 
-#include <net/bpf.h>
-
 static void lemac_init(lemac_softc_t *sc);
 static void lemac_ifstart(struct ifnet *ifp);
 static void lemac_reset(lemac_softc_t *sc);
@@ -86,14 +85,14 @@ static int  lemac_read_eeprom(lemac_soft
 static void lemac_init_adapmem(lemac_softc_t *sc);
 
 static const u_int16_t lemac_allmulti_mctbl[LEMAC_MCTBL_SIZE/sizeof(u_int16_t)] =  {
-    0xFFFFU, 0xFFFFU, 0xFFFFU, 0xFFFFU,
-    0xFFFFU, 0xFFFFU, 0xFFFFU, 0xFFFFU,
-    0xFFFFU, 0xFFFFU, 0xFFFFU, 0xFFFFU,
-    0xFFFFU, 0xFFFFU, 0xFFFFU, 0xFFFFU,
-    0xFFFFU, 0xFFFFU, 0xFFFFU, 0xFFFFU,
-    0xFFFFU, 0xFFFFU, 0xFFFFU, 0xFFFFU,
-    0xFFFFU, 0xFFFFU, 0xFFFFU, 0xFFFFU,
-    0xFFFFU, 0xFFFFU, 0xFFFFU, 0xFFFFU,
+	0xFFFFU, 0xFFFFU, 0xFFFFU, 0xFFFFU,
+	0xFFFFU, 0xFFFFU, 0xFFFFU, 0xFFFFU,
+	0xFFFFU, 0xFFFFU, 0xFFFFU, 0xFFFFU,
+	0xFFFFU, 0xFFFFU, 0xFFFFU, 0xFFFFU,
+	0xFFFFU, 0xFFFFU, 0xFFFFU, 0xFFFFU,
+	0xFFFFU, 0xFFFFU, 0xFFFFU, 0xFFFFU,
+	0xFFFFU, 0xFFFFU, 0xFFFFU, 0xFFFFU,
+	0xFFFFU, 0xFFFFU, 0xFFFFU, 0xFFFFU,
 };
 
 /*
@@ -102,248 +101,232 @@ static const u_int16_t lemac_allmulti_mc
 unsigned lemac_txmax = 16;
 
 static void
-lemac_rxd_intr(
-    lemac_softc_t *sc,
-    unsigned cs_value)
-{
-    /*
-     * Handle CS_RXD (Receiver disabled) here.
-     *
-     * Check Free Memory Queue Count. If not equal to zero
-     * then just turn Receiver back on. If it is equal to
-     * zero then check to see if transmitter is disabled.
-     * Process transmit TXD loop once more.  If all else
-     * fails then do software init (0xC0 to EEPROM Init)
-     * and rebuild Free Memory Queue.
-     */
-
-    sc->sc_cntrs.cntr_rxd_intrs++;
-
-    /*
-     *  Re-enable Receiver.
-     */
+lemac_rxd_intr(lemac_softc_t *sc, unsigned cs_value)
+{
+	/*
+	 * Handle CS_RXD (Receiver disabled) here.
+	 *
+	 * Check Free Memory Queue Count. If not equal to zero
+	 * then just turn Receiver back on. If it is equal to
+	 * zero then check to see if transmitter is disabled.
+	 * Process transmit TXD loop once more.  If all else
+	 * fails then do software init (0xC0 to EEPROM Init)
+	 * and rebuild Free Memory Queue.
+	 */
 
-    cs_value &= ~LEMAC_CS_RXD;
-    LEMAC_OUTB(sc, LEMAC_REG_CS, cs_value);
+	sc->sc_cntrs.cntr_rxd_intrs++;
 
-    if (LEMAC_INB(sc, LEMAC_REG_FMC) > 0)
-	return;
+	/* Re-enable Receiver. */
 
-    if (cs_value & LEMAC_CS_TXD)
-	lemac_txd_intr(sc, cs_value);
+	cs_value &= ~LEMAC_CS_RXD;
+	LEMAC_OUTB(sc, LEMAC_REG_CS, cs_value);
 
-    if ((LEMAC_INB(sc, LEMAC_REG_CS) & LEMAC_CS_RXD) == 0)
-	return;
+	if (LEMAC_INB(sc, LEMAC_REG_FMC) > 0)
+		return;
 
-    printf("%s: fatal RXD error, attempting recovery\n", sc->sc_if.if_xname);
+	if (cs_value & LEMAC_CS_TXD)
+		lemac_txd_intr(sc, cs_value);
 
-    lemac_reset(sc);
-    if (sc->sc_if.if_flags & IFF_UP) {
-	lemac_init(sc);
-	return;
-    }
+	if ((LEMAC_INB(sc, LEMAC_REG_CS) & LEMAC_CS_RXD) == 0)
+		return;
+
+	printf("%s: fatal RXD error, attempting recovery\n",
+	    sc->sc_if.if_xname);
 
-    /*
-     *  Error during initialization.  Mark card as disabled.
-     */
-    printf("%s: recovery failed -- board disabled\n", sc->sc_if.if_xname);
+	lemac_reset(sc);
+	if (sc->sc_if.if_flags & IFF_UP) {
+		lemac_init(sc);
+		return;
+	}
+
+	/* Error during initialization.  Mark card as disabled. */
+	printf("%s: recovery failed -- board disabled\n", sc->sc_if.if_xname);
 }
 
 static void
-lemac_tne_intr(
-    lemac_softc_t *sc)
+lemac_tne_intr(lemac_softc_t *sc)
 {
-    unsigned txcount = LEMAC_INB(sc, LEMAC_REG_TDC);
+	unsigned txcount = LEMAC_INB(sc, LEMAC_REG_TDC);
 
-    sc->sc_cntrs.cntr_tne_intrs++;
-    while (txcount-- > 0) {
-	unsigned txsts = LEMAC_INB(sc, LEMAC_REG_TDQ);
-	sc->sc_if.if_opackets++;		/* another one done */
-	if ((txsts & (LEMAC_TDQ_LCL|LEMAC_TDQ_NCL))
-	        || (txsts & LEMAC_TDQ_COL) == LEMAC_TDQ_EXCCOL) {
-	    if (txsts & LEMAC_TDQ_NCL)
-		sc->sc_flags &= ~LEMAC_LINKUP;
-	    sc->sc_if.if_oerrors++;
-	} else {
-	    sc->sc_flags |= LEMAC_LINKUP;
-	    if ((txsts & LEMAC_TDQ_COL) != LEMAC_TDQ_NOCOL)
-		sc->sc_if.if_collisions++;
-	}
-    }
-    sc->sc_if.if_flags &= ~IFF_OACTIVE;
-    if_schedule_deferred_start(&sc->sc_if);
+	sc->sc_cntrs.cntr_tne_intrs++;
+	while (txcount-- > 0) {
+		unsigned txsts = LEMAC_INB(sc, LEMAC_REG_TDQ);
+		sc->sc_if.if_opackets++;		/* another one done */
+		if ((txsts & (LEMAC_TDQ_LCL|LEMAC_TDQ_NCL))
+		    || (txsts & LEMAC_TDQ_COL) == LEMAC_TDQ_EXCCOL) {
+			if (txsts & LEMAC_TDQ_NCL)
+				sc->sc_flags &= ~LEMAC_LINKUP;
+			sc->sc_if.if_oerrors++;
+		} else {
+			sc->sc_flags |= LEMAC_LINKUP;
+			if ((txsts & LEMAC_TDQ_COL) != LEMAC_TDQ_NOCOL)
+				sc->sc_if.if_collisions++;
+		}
+	}
+	sc->sc_if.if_flags &= ~IFF_OACTIVE;
+	if_schedule_deferred_start(&sc->sc_if);
 }
 
 static void
-lemac_txd_intr(
-    lemac_softc_t *sc,
-    unsigned cs_value)
-{
-    /*
-     * Read transmit status, remove transmit buffer from
-     * transmit queue and place on free memory queue,
-     * then reset transmitter.
-     * Increment appropriate counters.
-     */
-
-    sc->sc_cntrs.cntr_txd_intrs++;
-    if (sc->sc_txctl & LEMAC_TX_STP) {
-	sc->sc_if.if_oerrors++;
-	/* return page to free queue */
-	LEMAC_OUTB(sc, LEMAC_REG_FMQ, LEMAC_INB(sc, LEMAC_REG_TDQ));
-    }
-
-    /* Turn back on transmitter if disabled */
-    LEMAC_OUTB(sc, LEMAC_REG_CS, cs_value & ~LEMAC_CS_TXD);
-    sc->sc_if.if_flags &= ~IFF_OACTIVE;
+lemac_txd_intr(lemac_softc_t *sc, unsigned cs_value)
+{
+	/*
+	 * Read transmit status, remove transmit buffer from
+	 * transmit queue and place on free memory queue,
+	 * then reset transmitter.
+	 * Increment appropriate counters.
+	 */
+
+	sc->sc_cntrs.cntr_txd_intrs++;
+	if (sc->sc_txctl & LEMAC_TX_STP) {
+		sc->sc_if.if_oerrors++;
+		/* return page to free queue */
+		LEMAC_OUTB(sc, LEMAC_REG_FMQ, LEMAC_INB(sc, LEMAC_REG_TDQ));
+	}
+
+	/* Turn back on transmitter if disabled */
+	LEMAC_OUTB(sc, LEMAC_REG_CS, cs_value & ~LEMAC_CS_TXD);
+	sc->sc_if.if_flags &= ~IFF_OACTIVE;
 }
 
 static int
-lemac_read_eeprom(
-    lemac_softc_t *sc)
+lemac_read_eeprom(lemac_softc_t *sc)
 {
-    int	word_off, cksum;
+	int	word_off, cksum;
+	u_char *ep;
 
-    u_char *ep;
+	cksum = 0;
+	ep = sc->sc_eeprom;
+	for (word_off = 0; word_off < LEMAC_EEP_SIZE / 2; word_off++) {
+		LEMAC_OUTB(sc, LEMAC_REG_PI1, word_off);
+		LEMAC_OUTB(sc, LEMAC_REG_IOP, LEMAC_IOP_EEREAD);
 
-    cksum = 0;
-    ep = sc->sc_eeprom;
-    for (word_off = 0; word_off < LEMAC_EEP_SIZE / 2; word_off++) {
-	LEMAC_OUTB(sc, LEMAC_REG_PI1, word_off);
-	LEMAC_OUTB(sc, LEMAC_REG_IOP, LEMAC_IOP_EEREAD);
-
-	DELAY(LEMAC_EEP_DELAY);
+		DELAY(LEMAC_EEP_DELAY);
 
-	*ep = LEMAC_INB(sc, LEMAC_REG_EE1);	cksum += *ep++;
-	*ep = LEMAC_INB(sc, LEMAC_REG_EE2);	cksum += *ep++;
-    }
+		*ep = LEMAC_INB(sc, LEMAC_REG_EE1);	cksum += *ep++;
+		*ep = LEMAC_INB(sc, LEMAC_REG_EE2);	cksum += *ep++;
+	}
 
-    /*
-     *  Set up Transmit Control Byte for use later during transmit.
-     */
+	/* Set up Transmit Control Byte for use later during transmit. */
 
-    sc->sc_txctl |= LEMAC_TX_FLAGS;
+	sc->sc_txctl |= LEMAC_TX_FLAGS;
 
-    if ((sc->sc_eeprom[LEMAC_EEP_SWFLAGS] & LEMAC_EEP_SW_SQE) == 0)
-	sc->sc_txctl &= ~LEMAC_TX_SQE;
+	if ((sc->sc_eeprom[LEMAC_EEP_SWFLAGS] & LEMAC_EEP_SW_SQE) == 0)
+		sc->sc_txctl &= ~LEMAC_TX_SQE;
 
-    if (sc->sc_eeprom[LEMAC_EEP_SWFLAGS] & LEMAC_EEP_SW_LAB)
-	sc->sc_txctl |= LEMAC_TX_LAB;
+	if (sc->sc_eeprom[LEMAC_EEP_SWFLAGS] & LEMAC_EEP_SW_LAB)
+		sc->sc_txctl |= LEMAC_TX_LAB;
 
-    memcpy(sc->sc_prodname, &sc->sc_eeprom[LEMAC_EEP_PRDNM], LEMAC_EEP_PRDNMSZ);
-    sc->sc_prodname[LEMAC_EEP_PRDNMSZ] = '\0';
+	memcpy(sc->sc_prodname, &sc->sc_eeprom[LEMAC_EEP_PRDNM],
+	    LEMAC_EEP_PRDNMSZ);
+	sc->sc_prodname[LEMAC_EEP_PRDNMSZ] = '\0';
 
-    return cksum % 256;
+	return cksum % 256;
 }
 
 static void
-lemac_init_adapmem(
-    lemac_softc_t *sc)
+lemac_init_adapmem(lemac_softc_t *sc)
 {
-    int pg, conf;
+	int pg, conf;
 
-    conf = LEMAC_INB(sc, LEMAC_REG_CNF);
+	conf = LEMAC_INB(sc, LEMAC_REG_CNF);
 
-    if ((sc->sc_eeprom[LEMAC_EEP_SETUP] & LEMAC_EEP_ST_DRAM) == 0) {
-	sc->sc_lastpage = 63;
-	conf &= ~LEMAC_CNF_DRAM;
-    } else {
-	sc->sc_lastpage = 127;
-	conf |= LEMAC_CNF_DRAM;
-    }
+	if ((sc->sc_eeprom[LEMAC_EEP_SETUP] & LEMAC_EEP_ST_DRAM) == 0) {
+		sc->sc_lastpage = 63;
+		conf &= ~LEMAC_CNF_DRAM;
+	} else {
+		sc->sc_lastpage = 127;
+		conf |= LEMAC_CNF_DRAM;
+	}
 
-    LEMAC_OUTB(sc, LEMAC_REG_CNF, conf);
+	LEMAC_OUTB(sc, LEMAC_REG_CNF, conf);
 
-    for (pg = 1; pg <= sc->sc_lastpage; pg++)
-	LEMAC_OUTB(sc, LEMAC_REG_FMQ, pg);
+	for (pg = 1; pg <= sc->sc_lastpage; pg++)
+		LEMAC_OUTB(sc, LEMAC_REG_FMQ, pg);
 }
 
 static void
-lemac_input(
-    lemac_softc_t *sc,
-    bus_addr_t offset,
-    size_t length)
+lemac_input(lemac_softc_t *sc, bus_addr_t offset, size_t length)
 {
-    struct ether_header eh;
-    struct mbuf *m;
+	struct ether_header eh;
+	struct mbuf *m;
 
-    if (length - sizeof(eh) > ETHERMTU
-	    || length - sizeof(eh) < ETHERMIN) {
-	sc->sc_if.if_ierrors++;
-	return;
-    }
-    if (LEMAC_USE_PIO_MODE(sc)) {
-	LEMAC_INSB(sc, LEMAC_REG_DAT, sizeof(eh), (void *) &eh);
-    } else {
-	LEMAC_GETBUF16(sc, offset, sizeof(eh) / 2, (void *) &eh);
-    }
-
-    MGETHDR(m, M_DONTWAIT, MT_DATA);
-    if (m == NULL) {
-	sc->sc_if.if_ierrors++;
-	return;
-    }
-    if (length + 2 > MHLEN) {
-	MCLGET(m, M_DONTWAIT);
-	if ((m->m_flags & M_EXT) == 0) {
-	    m_free(m);
-	    sc->sc_if.if_ierrors++;
-	    return;
-	}
-    }
-    m->m_data += 2;
-    memcpy(m->m_data, (void *)&eh, sizeof(eh));
-    if (LEMAC_USE_PIO_MODE(sc)) {
-	LEMAC_INSB(sc, LEMAC_REG_DAT, length - sizeof(eh),
-		   mtod(m, char *) + sizeof(eh));
-    } else {
-	LEMAC_GETBUF16(sc, offset + sizeof(eh), (length - sizeof(eh)) / 2,
-		      (void *)(mtod(m, char *) + sizeof(eh)));
-	if (length & 1)
-	    m->m_data[length - 1] = LEMAC_GET8(sc, offset + length - 1);
-    }
-
-    m->m_pkthdr.len = m->m_len = length;
-    m_set_rcvif(m, &sc->sc_if);
-
-    if_percpuq_enqueue((&sc->sc_if)->if_percpuq, m);
+	if (length - sizeof(eh) > ETHERMTU || length - sizeof(eh) < ETHERMIN) {
+		sc->sc_if.if_ierrors++;
+		return;
+	}
+	if (LEMAC_USE_PIO_MODE(sc))
+		LEMAC_INSB(sc, LEMAC_REG_DAT, sizeof(eh), (void *)&eh);
+	else
+		LEMAC_GETBUF16(sc, offset, sizeof(eh) / 2, (void *)&eh);
+
+	MGETHDR(m, M_DONTWAIT, MT_DATA);
+	if (m == NULL) {
+		sc->sc_if.if_ierrors++;
+		return;
+	}
+	if (length + 2 > MHLEN) {
+		MCLGET(m, M_DONTWAIT);
+		if ((m->m_flags & M_EXT) == 0) {
+			m_free(m);
+			sc->sc_if.if_ierrors++;
+			return;
+		}
+	}
+	m->m_data += 2;
+	memcpy(m->m_data, (void *)&eh, sizeof(eh));
+	if (LEMAC_USE_PIO_MODE(sc)) {
+		LEMAC_INSB(sc, LEMAC_REG_DAT, length - sizeof(eh),
+		    mtod(m, char *) + sizeof(eh));
+	} else {
+		LEMAC_GETBUF16(sc, offset + sizeof(eh),
+		    (length - sizeof(eh)) / 2,
+		    (void *)(mtod(m, char *) + sizeof(eh)));
+		if (length & 1)
+			m->m_data[length - 1]
+			    = LEMAC_GET8(sc, offset + length - 1);
+	}
+
+	m->m_pkthdr.len = m->m_len = length;
+	m_set_rcvif(m, &sc->sc_if);
+
+	if_percpuq_enqueue((&sc->sc_if)->if_percpuq, m);
 }
 
 static void
-lemac_rne_intr(
-    lemac_softc_t *sc)
-{
-    int rxcount;
-
-    sc->sc_cntrs.cntr_rne_intrs++;
-    rxcount = LEMAC_INB(sc, LEMAC_REG_RQC);
-    while (rxcount--) {
-	unsigned rxpg = LEMAC_INB(sc, LEMAC_REG_RQ);
-	u_int32_t rxlen;
+lemac_rne_intr(lemac_softc_t *sc)
+{
+	int rxcount;
 
-	if (LEMAC_USE_PIO_MODE(sc)) {
-	    LEMAC_OUTB(sc, LEMAC_REG_IOP, rxpg);
-	    LEMAC_OUTB(sc, LEMAC_REG_PI1, 0);
-	    LEMAC_OUTB(sc, LEMAC_REG_PI2, 0);
-	    LEMAC_INSB(sc, LEMAC_REG_DAT, sizeof(rxlen), (void *) &rxlen);
-	} else {
-	    LEMAC_OUTB(sc, LEMAC_REG_MPN, rxpg);
-	    rxlen = LEMAC_GET32(sc, 0);
-	}
-	if (rxlen & LEMAC_RX_OK) {
-	    sc->sc_flags |= LEMAC_LINKUP;
-	    /*
-	     * Get receive length - subtract out checksum.
-	     */
-	    rxlen = ((rxlen >> 8) & 0x7FF) - 4;
-	    lemac_input(sc, sizeof(rxlen), rxlen);
-	} else {
-	    sc->sc_if.if_ierrors++;
-	}
-	LEMAC_OUTB(sc, LEMAC_REG_FMQ, rxpg);  /* Return this page to Free Memory Queue */
-    }  /* end while (recv_count--) */
+	sc->sc_cntrs.cntr_rne_intrs++;
+	rxcount = LEMAC_INB(sc, LEMAC_REG_RQC);
+	while (rxcount--) {
+		unsigned rxpg = LEMAC_INB(sc, LEMAC_REG_RQ);
+		u_int32_t rxlen;
+
+		if (LEMAC_USE_PIO_MODE(sc)) {
+			LEMAC_OUTB(sc, LEMAC_REG_IOP, rxpg);
+			LEMAC_OUTB(sc, LEMAC_REG_PI1, 0);
+			LEMAC_OUTB(sc, LEMAC_REG_PI2, 0);
+			LEMAC_INSB(sc, LEMAC_REG_DAT, sizeof(rxlen),
+			    (void *)&rxlen);
+		} else {
+			LEMAC_OUTB(sc, LEMAC_REG_MPN, rxpg);
+			rxlen = LEMAC_GET32(sc, 0);
+		}
+		if (rxlen & LEMAC_RX_OK) {
+			sc->sc_flags |= LEMAC_LINKUP;
+			/* Get receive length - subtract out checksum. */
+			rxlen = ((rxlen >> 8) & 0x7FF) - 4;
+			lemac_input(sc, sizeof(rxlen), rxlen);
+		} else {
+			sc->sc_if.if_ierrors++;
+		}
+		/* Return this page to Free Memory Queue */
+		LEMAC_OUTB(sc, LEMAC_REG_FMQ, rxpg);
+	}  /* end while (recv_count--) */
 
-    return;
+	return;
 }
 
 /*
@@ -351,670 +334,667 @@ lemac_rne_intr(
  *  I don't understand it but it does work.
  */
 static int
-lemac_read_macaddr(
-    unsigned char *hwaddr,
-    const bus_space_tag_t iot,
-    const bus_space_handle_t ioh,
-    const bus_addr_t ioreg,
-    int skippat)
-{
-    int cksum, rom_cksum;
-    unsigned char addrbuf[6];
-
-    if (!skippat) {
-	int idx, idx2, found, octet;
-	static u_char testpat[] = { 0xFF, 0, 0x55, 0xAA, 0xFF, 0, 0x55, 0xAA };
-	idx2 = found = 0;
-
-	for (idx = 0; idx < 32; idx++) {
-	    octet = bus_space_read_1(iot, ioh, ioreg);
-
-	    if (octet == testpat[idx2]) {
-		if (++idx2 == sizeof(testpat)) {
-		    ++found;
-		    break;
-		}
-	    } else {
-		idx2 = 0;
-	    }
-	}
-
-	if (!found)
-	    return -1;
-    }
-
-    if (hwaddr == NULL)
-	hwaddr = addrbuf;
-
-    cksum = 0;
-    hwaddr[0] = bus_space_read_1(iot, ioh, ioreg);
-    hwaddr[1] = bus_space_read_1(iot, ioh, ioreg);
-
-    /* hardware address can't be multicast */
-    if (hwaddr[0] & 1)
-	return -1;
-
-    cksum = *(u_short *) &hwaddr[0];
-
-    hwaddr[2] = bus_space_read_1(iot, ioh, ioreg);
-    hwaddr[3] = bus_space_read_1(iot, ioh, ioreg);
-    cksum *= 2;
-    if (cksum > 65535) cksum -= 65535;
-    cksum += *(u_short *) &hwaddr[2];
-    if (cksum > 65535) cksum -= 65535;
-
-    hwaddr[4] = bus_space_read_1(iot, ioh, ioreg);
-    hwaddr[5] = bus_space_read_1(iot, ioh, ioreg);
-    cksum *= 2;
-    if (cksum > 65535) cksum -= 65535;
-    cksum += *(u_short *) &hwaddr[4];
-    if (cksum >= 65535) cksum -= 65535;
-
-    /* 00-00-00 is an illegal OUI */
-    if (hwaddr[0] == 0 && hwaddr[1] == 0 && hwaddr[2] == 0)
-	return -1;
-
-    rom_cksum = bus_space_read_1(iot, ioh, ioreg);
-    rom_cksum |= bus_space_read_1(iot, ioh, ioreg) << 8;
-
-    if (cksum != rom_cksum)
-	return -1;
-    return 0;
+lemac_read_macaddr(unsigned char *hwaddr, const bus_space_tag_t iot,
+	const bus_space_handle_t ioh, const bus_addr_t ioreg, int skippat)
+{
+	int cksum, rom_cksum;
+	unsigned char addrbuf[6];
+
+	if (!skippat) {
+		int idx, idx2, found, octet;
+		static u_char testpat[]
+		    = { 0xFF, 0, 0x55, 0xAA, 0xFF, 0, 0x55, 0xAA };
+
+		idx2 = found = 0;
+
+		for (idx = 0; idx < 32; idx++) {
+			octet = bus_space_read_1(iot, ioh, ioreg);
+
+			if (octet == testpat[idx2]) {
+				if (++idx2 == sizeof(testpat)) {
+					++found;
+					break;
+				}
+			} else
+				idx2 = 0;
+		}
+
+		if (!found)
+			return -1;
+	}
+
+	if (hwaddr == NULL)
+		hwaddr = addrbuf;
+
+	cksum = 0;
+	hwaddr[0] = bus_space_read_1(iot, ioh, ioreg);
+	hwaddr[1] = bus_space_read_1(iot, ioh, ioreg);
+
+	/* hardware address can't be multicast */
+	if (hwaddr[0] & 1)
+		return -1;
+
+	cksum = *(u_short *)&hwaddr[0];
+
+	hwaddr[2] = bus_space_read_1(iot, ioh, ioreg);
+	hwaddr[3] = bus_space_read_1(iot, ioh, ioreg);
+	cksum *= 2;
+	if (cksum > 65535) cksum -= 65535;
+	cksum += *(u_short *) &hwaddr[2];
+	if (cksum > 65535) cksum -= 65535;
+
+	hwaddr[4] = bus_space_read_1(iot, ioh, ioreg);
+	hwaddr[5] = bus_space_read_1(iot, ioh, ioreg);
+	cksum *= 2;
+	if (cksum > 65535) cksum -= 65535;
+	cksum += *(u_short *)&hwaddr[4];
+	if (cksum >= 65535) cksum -= 65535;
+
+	/* 00-00-00 is an illegal OUI */
+	if (hwaddr[0] == 0 && hwaddr[1] == 0 && hwaddr[2] == 0)
+		return -1;
+
+	rom_cksum = bus_space_read_1(iot, ioh, ioreg);
+	rom_cksum |= bus_space_read_1(iot, ioh, ioreg) << 8;
+
+	if (cksum != rom_cksum)
+		return -1;
+	return 0;
 }
 
 static void
 lemac_multicast_op(
-    u_int16_t *mctbl,
-    const u_char *mca,
-    int enable)
-{
-    u_int idx, bit, crc;
-
-    crc = ether_crc32_le(mca, ETHER_ADDR_LEN);
-
-    /*
-     * The following two lines convert the N bit index into a longword index
-     * and a longword mask.
-     */
+	u_int16_t *mctbl,
+	const u_char *mca,
+	int enable)
+{
+	u_int idx, bit, crc;
+
+	crc = ether_crc32_le(mca, ETHER_ADDR_LEN);
+
+	/*
+	 * The following two lines convert the N bit index into a longword
+	 * index and a longword mask.
+	 */
 #if LEMAC_MCTBL_BITS < 0
-    crc >>= (32 + LEMAC_MCTBL_BITS);
-    crc &= (1 << -LEMAC_MCTBL_BITS) - 1;
+	crc >>= (32 + LEMAC_MCTBL_BITS);
+	crc &= (1 << -LEMAC_MCTBL_BITS) - 1;
 #else
-    crc &= (1 << LEMAC_MCTBL_BITS) - 1;
+	crc &= (1 << LEMAC_MCTBL_BITS) - 1;
 #endif
-    bit = 1 << (crc & 0x0F);
-    idx = crc >> 4;
+	bit = 1 << (crc & 0x0F);
+	idx = crc >> 4;
 
-    /*
-     * Set or clear hash filter bit in our table.
-     */
-    if (enable) {
-	mctbl[idx] |= bit;		/* Set Bit */
-    } else {
-	mctbl[idx] &= ~bit;		/* Clear Bit */
-    }
+	/* Set or clear hash filter bit in our table. */
+	if (enable)
+		mctbl[idx] |= bit;		/* Set Bit */
+	else
+		mctbl[idx] &= ~bit;		/* Clear Bit */
 }
 
 static void
-lemac_multicast_filter(
-    lemac_softc_t *sc)
-{
-    struct ether_multistep step;
-    struct ether_multi *enm;
-
-    memset(sc->sc_mctbl, 0, LEMAC_MCTBL_BITS / 8);
-
-    lemac_multicast_op(sc->sc_mctbl, etherbroadcastaddr, TRUE);
-
-    ETHER_FIRST_MULTI(step, &sc->sc_ec, enm);
-    while (enm != NULL) {
-	if (!LEMAC_ADDREQUAL(enm->enm_addrlo, enm->enm_addrhi)) {
-	    sc->sc_flags |= LEMAC_ALLMULTI;
-	    sc->sc_if.if_flags |= IFF_ALLMULTI;
-	    return;
-	}
-	lemac_multicast_op(sc->sc_mctbl, enm->enm_addrlo, TRUE);
-	ETHER_NEXT_MULTI(step, enm);
-    }
-    sc->sc_flags &= ~LEMAC_ALLMULTI;
-    sc->sc_if.if_flags &= ~IFF_ALLMULTI;
+lemac_multicast_filter(lemac_softc_t *sc)
+{
+	struct ether_multistep step;
+	struct ether_multi *enm;
+
+	memset(sc->sc_mctbl, 0, LEMAC_MCTBL_BITS / 8);
+
+	lemac_multicast_op(sc->sc_mctbl, etherbroadcastaddr, TRUE);
+
+	ETHER_FIRST_MULTI(step, &sc->sc_ec, enm);
+	while (enm != NULL) {
+		if (!LEMAC_ADDREQUAL(enm->enm_addrlo, enm->enm_addrhi)) {
+			sc->sc_flags |= LEMAC_ALLMULTI;
+			sc->sc_if.if_flags |= IFF_ALLMULTI;
+			return;
+		}
+		lemac_multicast_op(sc->sc_mctbl, enm->enm_addrlo, TRUE);
+		ETHER_NEXT_MULTI(step, enm);
+	}
+	sc->sc_flags &= ~LEMAC_ALLMULTI;
+	sc->sc_if.if_flags &= ~IFF_ALLMULTI;
 }
 
 /*
  * Do a hard reset of the board;
  */
 static void
-lemac_reset(
-    lemac_softc_t * const sc)
+lemac_reset(lemac_softc_t * const sc)
 {
-    unsigned data;
+	unsigned data;
 
-    /*
-     * Initialize board..
-     */
-    sc->sc_flags &= ~LEMAC_LINKUP;
-    sc->sc_if.if_flags &= ~IFF_OACTIVE;
-    LEMAC_INTR_DISABLE(sc);
-
-    LEMAC_OUTB(sc, LEMAC_REG_IOP, LEMAC_IOP_EEINIT);
-    DELAY(LEMAC_EEP_DELAY);
-
-    /*
-     * Read EEPROM information.  NOTE - the placement of this function
-     * is important because functions hereafter may rely on information
-     * read from the EEPROM.
-     */
-    if ((data = lemac_read_eeprom(sc)) != LEMAC_EEP_CKSUM) {
-	printf("%s: reset: EEPROM checksum failed (0x%x)\n",
-	       sc->sc_if.if_xname, data);
-	return;
-    }
+	/*
+	 * Initialize board..
+	 */
+	sc->sc_flags &= ~LEMAC_LINKUP;
+	sc->sc_if.if_flags &= ~IFF_OACTIVE;
+	LEMAC_INTR_DISABLE(sc);
 
-    /*
-     * Update the control register to reflect the media choice
-     */
-    data = LEMAC_INB(sc, LEMAC_REG_CTL);
-    if ((data & (LEMAC_CTL_APD|LEMAC_CTL_PSL)) != sc->sc_ctlmode) {
-	data &= ~(LEMAC_CTL_APD|LEMAC_CTL_PSL);
-	data |= sc->sc_ctlmode;
-	LEMAC_OUTB(sc, LEMAC_REG_CTL, data);
-    }
-
-    /*
-     *  Force to 2K mode if not already configured.
-     */
-
-    data = LEMAC_INB(sc, LEMAC_REG_MBR);
-    if (LEMAC_IS_2K_MODE(data)) {
-	sc->sc_flags |= LEMAC_2K_MODE;
-    } else if (LEMAC_IS_64K_MODE(data)) {
-	data = (((data * 2) & 0xF) << 4);
-	sc->sc_flags |= LEMAC_WAS_64K_MODE;
-	LEMAC_OUTB(sc, LEMAC_REG_MBR, data);
-    } else if (LEMAC_IS_32K_MODE(data)) {
-	data = ((data & 0xF) << 4);
-	sc->sc_flags |= LEMAC_WAS_32K_MODE;
-	LEMAC_OUTB(sc, LEMAC_REG_MBR, data);
-    } else {
-	sc->sc_flags |= LEMAC_PIO_MODE;
-	/* PIO mode */
-    }
-
-    /*
-     *  Initialize Free Memory Queue, Init mcast table with broadcast.
-     */
-
-    lemac_init_adapmem(sc);
-    sc->sc_flags |= LEMAC_ALIVE;
+	LEMAC_OUTB(sc, LEMAC_REG_IOP, LEMAC_IOP_EEINIT);
+	DELAY(LEMAC_EEP_DELAY);
+
+	/*
+	 * Read EEPROM information.  NOTE - the placement of this function
+	 * is important because functions hereafter may rely on information
+	 * read from the EEPROM.
+	 */
+	if ((data = lemac_read_eeprom(sc)) != LEMAC_EEP_CKSUM) {
+		printf("%s: reset: EEPROM checksum failed (0x%x)\n",
+		    sc->sc_if.if_xname, data);
+		return;
+	}
+
+	/* Update the control register to reflect the media choice */
+	data = LEMAC_INB(sc, LEMAC_REG_CTL);
+	if ((data & (LEMAC_CTL_APD|LEMAC_CTL_PSL)) != sc->sc_ctlmode) {
+		data &= ~(LEMAC_CTL_APD|LEMAC_CTL_PSL);
+		data |= sc->sc_ctlmode;
+		LEMAC_OUTB(sc, LEMAC_REG_CTL, data);
+	}
+
+	/* Force to 2K mode if not already configured. */
+
+	data = LEMAC_INB(sc, LEMAC_REG_MBR);
+	if (LEMAC_IS_2K_MODE(data)) {
+		sc->sc_flags |= LEMAC_2K_MODE;
+	} else if (LEMAC_IS_64K_MODE(data)) {
+		data = (((data * 2) & 0xF) << 4);
+		sc->sc_flags |= LEMAC_WAS_64K_MODE;
+		LEMAC_OUTB(sc, LEMAC_REG_MBR, data);
+	} else if (LEMAC_IS_32K_MODE(data)) {
+		data = ((data & 0xF) << 4);
+		sc->sc_flags |= LEMAC_WAS_32K_MODE;
+		LEMAC_OUTB(sc, LEMAC_REG_MBR, data);
+	} else {
+		sc->sc_flags |= LEMAC_PIO_MODE;
+		/* PIO mode */
+	}
+
+	/* Initialize Free Memory Queue, Init mcast table with broadcast. */
+
+	lemac_init_adapmem(sc);
+	sc->sc_flags |= LEMAC_ALIVE;
 }
 
 static void
-lemac_init(
-    lemac_softc_t * const sc)
+lemac_init(lemac_softc_t * const sc)
 {
-    if ((sc->sc_flags & LEMAC_ALIVE) == 0)
-	return;
+	if ((sc->sc_flags & LEMAC_ALIVE) == 0)
+		return;
 
-    /*
-     * If the interface has the up flag
-     */
-    if (sc->sc_if.if_flags & IFF_UP) {
-	int saved_cs = LEMAC_INB(sc, LEMAC_REG_CS);
-	LEMAC_OUTB(sc, LEMAC_REG_CS, saved_cs | (LEMAC_CS_TXD | LEMAC_CS_RXD));
-	LEMAC_OUTB(sc, LEMAC_REG_PA0, sc->sc_enaddr[0]);
-	LEMAC_OUTB(sc, LEMAC_REG_PA1, sc->sc_enaddr[1]);
-	LEMAC_OUTB(sc, LEMAC_REG_PA2, sc->sc_enaddr[2]);
-	LEMAC_OUTB(sc, LEMAC_REG_PA3, sc->sc_enaddr[3]);
-	LEMAC_OUTB(sc, LEMAC_REG_PA4, sc->sc_enaddr[4]);
-	LEMAC_OUTB(sc, LEMAC_REG_PA5, sc->sc_enaddr[5]);
+	/*
+	 * If the interface has the up flag
+	 */
+	if (sc->sc_if.if_flags & IFF_UP) {
+		int saved_cs = LEMAC_INB(sc, LEMAC_REG_CS);
+		LEMAC_OUTB(sc, LEMAC_REG_CS,
+		    saved_cs | (LEMAC_CS_TXD | LEMAC_CS_RXD));
+		LEMAC_OUTB(sc, LEMAC_REG_PA0, sc->sc_enaddr[0]);
+		LEMAC_OUTB(sc, LEMAC_REG_PA1, sc->sc_enaddr[1]);
+		LEMAC_OUTB(sc, LEMAC_REG_PA2, sc->sc_enaddr[2]);
+		LEMAC_OUTB(sc, LEMAC_REG_PA3, sc->sc_enaddr[3]);
+		LEMAC_OUTB(sc, LEMAC_REG_PA4, sc->sc_enaddr[4]);
+		LEMAC_OUTB(sc, LEMAC_REG_PA5, sc->sc_enaddr[5]);
+
+		LEMAC_OUTB(sc, LEMAC_REG_IC,
+		    LEMAC_INB(sc, LEMAC_REG_IC) | LEMAC_IC_IE);
+
+		if (sc->sc_if.if_flags & IFF_PROMISC) {
+			LEMAC_OUTB(sc, LEMAC_REG_CS,
+			    LEMAC_CS_MCE | LEMAC_CS_PME);
+		} else {
+			LEMAC_INTR_DISABLE(sc);
+			lemac_multicast_filter(sc);
+			if (sc->sc_flags & LEMAC_ALLMULTI)
+				memcpy(sc->sc_mctbl, lemac_allmulti_mctbl,
+				    sizeof(sc->sc_mctbl));
+			if (LEMAC_USE_PIO_MODE(sc)) {
+				LEMAC_OUTB(sc, LEMAC_REG_IOP, 0);
+				LEMAC_OUTB(sc, LEMAC_REG_PI1,
+				    LEMAC_MCTBL_OFF & 0xFF);
+				LEMAC_OUTB(sc, LEMAC_REG_PI2,
+				    LEMAC_MCTBL_OFF >> 8);
+				LEMAC_OUTSB(sc, LEMAC_REG_DAT,
+				    sizeof(sc->sc_mctbl),
+				    (void *)sc->sc_mctbl);
+			} else {
+				LEMAC_OUTB(sc, LEMAC_REG_MPN, 0);
+				LEMAC_PUTBUF8(sc, LEMAC_MCTBL_OFF,
+				    sizeof(sc->sc_mctbl),
+				    (void *)sc->sc_mctbl);
+			}
+
+			LEMAC_OUTB(sc, LEMAC_REG_CS, LEMAC_CS_MCE);
+		}
 
-	LEMAC_OUTB(sc, LEMAC_REG_IC, LEMAC_INB(sc, LEMAC_REG_IC) | LEMAC_IC_IE);
+		LEMAC_OUTB(sc, LEMAC_REG_CTL,
+		    LEMAC_INB(sc, LEMAC_REG_CTL) ^ LEMAC_CTL_LED);
 
-	if (sc->sc_if.if_flags & IFF_PROMISC) {
-	    LEMAC_OUTB(sc, LEMAC_REG_CS, LEMAC_CS_MCE | LEMAC_CS_PME);
+		LEMAC_INTR_ENABLE(sc);
+		sc->sc_if.if_flags |= IFF_RUNNING;
+		lemac_ifstart(&sc->sc_if);
 	} else {
-	    LEMAC_INTR_DISABLE(sc);
-	    lemac_multicast_filter(sc);
-	    if (sc->sc_flags & LEMAC_ALLMULTI)
-		memcpy(sc->sc_mctbl, lemac_allmulti_mctbl,
-		       sizeof(sc->sc_mctbl));
-	    if (LEMAC_USE_PIO_MODE(sc)) {
-		LEMAC_OUTB(sc, LEMAC_REG_IOP, 0);
-		LEMAC_OUTB(sc, LEMAC_REG_PI1, LEMAC_MCTBL_OFF & 0xFF);
-		LEMAC_OUTB(sc, LEMAC_REG_PI2, LEMAC_MCTBL_OFF >> 8);
-		LEMAC_OUTSB(sc, LEMAC_REG_DAT, sizeof(sc->sc_mctbl), (void *) sc->sc_mctbl);
-	    } else {
-		LEMAC_OUTB(sc, LEMAC_REG_MPN, 0);
-		LEMAC_PUTBUF8(sc, LEMAC_MCTBL_OFF, sizeof(sc->sc_mctbl), (void *) sc->sc_mctbl);
-	    }
+		LEMAC_OUTB(sc, LEMAC_REG_CS, LEMAC_CS_RXD|LEMAC_CS_TXD);
 
-	    LEMAC_OUTB(sc, LEMAC_REG_CS, LEMAC_CS_MCE);
+		LEMAC_INTR_DISABLE(sc);
+		sc->sc_if.if_flags &= ~IFF_RUNNING;
 	}
-
-	LEMAC_OUTB(sc, LEMAC_REG_CTL, LEMAC_INB(sc, LEMAC_REG_CTL) ^ LEMAC_CTL_LED);
-
-	LEMAC_INTR_ENABLE(sc);
-	sc->sc_if.if_flags |= IFF_RUNNING;
-	lemac_ifstart(&sc->sc_if);
-    } else {
-	LEMAC_OUTB(sc, LEMAC_REG_CS, LEMAC_CS_RXD|LEMAC_CS_TXD);
-
-	LEMAC_INTR_DISABLE(sc);
-	sc->sc_if.if_flags &= ~IFF_RUNNING;
-    }
 }
 
 static void
 lemac_ifstart(
-    struct ifnet *ifp)
+	struct ifnet *ifp)
 {
-    lemac_softc_t * const sc = LEMAC_IFP_TO_SOFTC(ifp);
+	lemac_softc_t * const sc = LEMAC_IFP_TO_SOFTC(ifp);
 
-    if ((ifp->if_flags & IFF_RUNNING) == 0)
-	return;
+	if ((ifp->if_flags & IFF_RUNNING) == 0)
+		return;
 
-    LEMAC_INTR_DISABLE(sc);
+	LEMAC_INTR_DISABLE(sc);
 
-    for (;;) {
-	struct mbuf *m;
-	struct mbuf *m0;
-	int tx_pg;
+	for (;;) {
+		struct mbuf *m;
+		struct mbuf *m0;
+		int tx_pg;
+
+		IFQ_POLL(&ifp->if_snd, m);
+		if (m == NULL)
+			break;
+
+		if ((sc->sc_csr.csr_tqc = LEMAC_INB(sc, LEMAC_REG_TQC))
+		    >= lemac_txmax) {
+			sc->sc_cntrs.cntr_txfull++;
+			ifp->if_flags |= IFF_OACTIVE;
+			break;
+		}
 
-	IFQ_POLL(&ifp->if_snd, m);
-	if (m == NULL)
-	    break;
-
-	if ((sc->sc_csr.csr_tqc = LEMAC_INB(sc, LEMAC_REG_TQC)) >= lemac_txmax) {
-	    sc->sc_cntrs.cntr_txfull++;
-	    ifp->if_flags |= IFF_OACTIVE;
-	    break;
-	}
+		/* Get free memory page */
+		tx_pg = sc->sc_csr.csr_fmq = LEMAC_INB(sc, LEMAC_REG_FMQ);
 
-	/*
-	 * get free memory page
-	 */
-	tx_pg = sc->sc_csr.csr_fmq = LEMAC_INB(sc, LEMAC_REG_FMQ);
-	/*
-	 * Check for good transmit page.
-	 */
-	if (tx_pg == 0 || tx_pg > sc->sc_lastpage) {
-	    sc->sc_cntrs.cntr_txnospc++;
-	    ifp->if_flags |= IFF_OACTIVE;
-	    break;
-	}
+		/* Check for good transmit page. */
+		if (tx_pg == 0 || tx_pg > sc->sc_lastpage) {
+			sc->sc_cntrs.cntr_txnospc++;
+			ifp->if_flags |= IFF_OACTIVE;
+			break;
+		}
 
-	IFQ_DEQUEUE(&ifp->if_snd, m);
+		IFQ_DEQUEUE(&ifp->if_snd, m);
 
-	/*
-	 * The first four bytes of each transmit buffer are for
-	 * control information.  The first byte is the control
-	 * byte, then the length (why not word aligned?), then
-	 * the offset to the buffer.
-	 */
+		/*
+		 * The first four bytes of each transmit buffer are for
+		 * control information.  The first byte is the control
+		 * byte, then the length (why not word aligned?), then
+		 * the offset to the buffer.
+		 */
+
+		if (LEMAC_USE_PIO_MODE(sc)) {
+			/* Shift 2K window. */
+			LEMAC_OUTB(sc, LEMAC_REG_IOP, tx_pg);
+
+			LEMAC_OUTB(sc, LEMAC_REG_PI1, 0);
+			LEMAC_OUTB(sc, LEMAC_REG_PI2, 0);
+			LEMAC_OUTB(sc, LEMAC_REG_DAT, sc->sc_txctl);
+			LEMAC_OUTB(sc, LEMAC_REG_DAT,
+			    (m->m_pkthdr.len >> 0) & 0xFF);
+			LEMAC_OUTB(sc, LEMAC_REG_DAT,
+			    (m->m_pkthdr.len >> 8) & 0xFF);
+			LEMAC_OUTB(sc, LEMAC_REG_DAT, LEMAC_TX_HDRSZ);
+			for (m0 = m; m0 != NULL; m0 = m0->m_next)
+				LEMAC_OUTSB(sc, LEMAC_REG_DAT,
+				    m0->m_len, m0->m_data);
+		} else {
+			bus_size_t txoff = /* (mtod(m, u_int32_t) & (sizeof(u_int32_t) - 1)) + */ LEMAC_TX_HDRSZ;
+
+			/* Shift 2K window. */
+			LEMAC_OUTB(sc, LEMAC_REG_MPN, tx_pg);
+
+			LEMAC_PUT8(sc, 0, sc->sc_txctl);
+			LEMAC_PUT8(sc, 1, (m->m_pkthdr.len >> 0) & 0xFF);
+			LEMAC_PUT8(sc, 2, (m->m_pkthdr.len >> 8) & 0xFF);
+			LEMAC_PUT8(sc, 3, txoff);
 
-	if (LEMAC_USE_PIO_MODE(sc)) {
-	    LEMAC_OUTB(sc, LEMAC_REG_IOP, tx_pg);	/* Shift 2K window. */
-	    LEMAC_OUTB(sc, LEMAC_REG_PI1, 0);
-	    LEMAC_OUTB(sc, LEMAC_REG_PI2, 0);
-	    LEMAC_OUTB(sc, LEMAC_REG_DAT, sc->sc_txctl);
-	    LEMAC_OUTB(sc, LEMAC_REG_DAT, (m->m_pkthdr.len >> 0) & 0xFF);
-	    LEMAC_OUTB(sc, LEMAC_REG_DAT, (m->m_pkthdr.len >> 8) & 0xFF);
-	    LEMAC_OUTB(sc, LEMAC_REG_DAT, LEMAC_TX_HDRSZ);
-	    for (m0 = m; m0 != NULL; m0 = m0->m_next)
-		LEMAC_OUTSB(sc, LEMAC_REG_DAT, m0->m_len, m0->m_data);
-	} else {
-	    bus_size_t txoff = /* (mtod(m, u_int32_t) & (sizeof(u_int32_t) - 1)) + */ LEMAC_TX_HDRSZ;
-	    LEMAC_OUTB(sc, LEMAC_REG_MPN, tx_pg);	/* Shift 2K window. */
-	    LEMAC_PUT8(sc, 0, sc->sc_txctl);
-	    LEMAC_PUT8(sc, 1, (m->m_pkthdr.len >> 0) & 0xFF);
-	    LEMAC_PUT8(sc, 2, (m->m_pkthdr.len >> 8) & 0xFF);
-	    LEMAC_PUT8(sc, 3, txoff);
-
-	    /*
-	     * Copy the packet to the board
-	     */
-	    for (m0 = m; m0 != NULL; m0 = m0->m_next) {
+			/* Copy the packet to the board */
+			for (m0 = m; m0 != NULL; m0 = m0->m_next) {
 #if 0
-		LEMAC_PUTBUF8(sc, txoff, m0->m_len, m0->m_data);
-		txoff += m0->m_len;
+				LEMAC_PUTBUF8(sc, txoff, m0->m_len, m0->m_data);
+				txoff += m0->m_len;
 #else
-		const u_int8_t *cp = m0->m_data;
-		int len = m0->m_len;
+				const u_int8_t *cp = m0->m_data;
+				int len = m0->m_len;
 #if 0
-		if ((txoff & 3) == (((long)cp) & 3) && len >= 4) {
-		    if (txoff & 3) {
-			int alen = (~txoff & 3);
-			LEMAC_PUTBUF8(sc, txoff, alen, cp);
-			cp += alen; txoff += alen; len -= alen;
-		    }
-		    if (len >= 4) {
-			LEMAC_PUTBUF32(sc, txoff, len / 4, cp);
-			cp += len & ~3; txoff += len & ~3; len &= 3;
-		    }
-		}
+				if ((txoff & 3) == (((long)cp) & 3)
+				    && len >= 4) {
+					if (txoff & 3) {
+						int alen = (~txoff & 3);
+						LEMAC_PUTBUF8(sc, txoff, alen,
+						    cp);
+						cp += alen;
+						txoff += alen;
+						len -= alen;
+					}
+					if (len >= 4) {
+						LEMAC_PUTBUF32(sc, txoff,
+						    len / 4, cp);
+						cp += len & ~3;
+						txoff += len & ~3;
+						len &= 3;
+					}
+				}
 #endif
-		if ((txoff & 1) == (((long)cp) & 1) && len >= 2) {
-		    if (txoff & 1) {
-			int alen = (~txoff & 1);
-			LEMAC_PUTBUF8(sc, txoff, alen, cp);
-			cp += alen; txoff += alen; len -= alen;
-		    }
-		    if (len >= 2) {
-			LEMAC_PUTBUF16(sc, txoff, len / 2, (const void *) cp);
-			cp += len & ~1; txoff += len & ~1; len &= 1;
-		    }
-		}
-		if (len > 0) {
-		    LEMAC_PUTBUF8(sc, txoff, len, cp);
-		    txoff += len;
-		}
+				if ((txoff & 1) == (((long)cp) & 1)
+				    && len >= 2) {
+					if (txoff & 1) {
+						int alen = (~txoff & 1);
+						LEMAC_PUTBUF8(sc, txoff, alen,
+						    cp);
+						cp += alen;
+						txoff += alen;
+						len -= alen;
+					}
+					if (len >= 2) {
+						LEMAC_PUTBUF16(sc, txoff,
+						    len / 2, (const void *)cp);
+						cp += len & ~1;
+						txoff += len & ~1;
+						len &= 1;
+					}
+				}
+				if (len > 0) {
+					LEMAC_PUTBUF8(sc, txoff, len, cp);
+					txoff += len;
+				}
 #endif
-	    }
-	}
+			}
+		}
 
-	LEMAC_OUTB(sc, LEMAC_REG_TQ, tx_pg);	/* tell chip to transmit this packet */
-	bpf_mtap(&sc->sc_if, m, BPF_D_OUT);
-	m_freem(m);			/* free the mbuf */
-    }
-    LEMAC_INTR_ENABLE(sc);
+		/* Tell chip to transmit this packet */
+		LEMAC_OUTB(sc, LEMAC_REG_TQ, tx_pg);
+		bpf_mtap(&sc->sc_if, m, BPF_D_OUT);
+		m_freem(m);			/* Free the mbuf */
+	}
+	LEMAC_INTR_ENABLE(sc);
 }
 
 static int
 lemac_ifioctl(
-    struct ifnet *ifp,
-    u_long cmd,
-    void *data)
+	struct ifnet *ifp,
+	u_long cmd,
+	void *data)
 {
-    lemac_softc_t * const sc = LEMAC_IFP_TO_SOFTC(ifp);
-    int s;
-    int error = 0;
+	lemac_softc_t * const sc = LEMAC_IFP_TO_SOFTC(ifp);
+	int s;
+	int error = 0;
 
-    s = splnet();
+	s = splnet();
 
-    switch (cmd) {
+	switch (cmd) {
 	case SIOCINITIFADDR: {
-	    struct ifaddr *ifa = (struct ifaddr *)data;
+		struct ifaddr *ifa = (struct ifaddr *)data;
 
-	    ifp->if_flags |= IFF_UP;
-	    lemac_init(sc);
-	    switch (ifa->ifa_addr->sa_family) {
+		ifp->if_flags |= IFF_UP;
+		lemac_init(sc);
+		switch (ifa->ifa_addr->sa_family) {
 #ifdef INET
-		case AF_INET: {
-		    arp_ifinit(&sc->sc_if, ifa);
-		    break;
-		}
+		case AF_INET:
+			arp_ifinit(&sc->sc_if, ifa);
+			break;
 #endif /* INET */
 
 
-		default: {
-		    break;
+		default:
+			break;
 		}
-	    }
-	    break;
+		break;
 	}
 
-	case SIOCSIFFLAGS: {
-	    if ((error = ifioctl_common(ifp, cmd, data)) != 0)
+	case SIOCSIFFLAGS:
+		if ((error = ifioctl_common(ifp, cmd, data)) != 0)
+			break;
+		lemac_init(sc);
 		break;
-	    lemac_init(sc);
-	    break;
-	}
 
 	case SIOCADDMULTI:
-	case SIOCDELMULTI: {
-	    /*
-	     * Update multicast listeners
-	     */
-	    if ((error = ether_ioctl(ifp, cmd, data)) == ENETRESET) {
-		/* reset multicast filtering */
-		if (ifp->if_flags & IFF_RUNNING)
-		    lemac_init(sc);
-		error = 0;
-	    }
-	    break;
-	}
+	case SIOCDELMULTI:
+		/*
+		 * Update multicast listeners
+		 */
+		if ((error = ether_ioctl(ifp, cmd, data)) == ENETRESET) {
+			/* reset multicast filtering */
+			if (ifp->if_flags & IFF_RUNNING)
+				lemac_init(sc);
+			error = 0;
+		}
+		break;
 
 	case SIOCSIFMEDIA:
-	case SIOCGIFMEDIA: {
-	    error = ifmedia_ioctl(ifp, (struct ifreq *)data,
-				  &sc->sc_ifmedia, cmd);
-	    break;
-	}
+	case SIOCGIFMEDIA:
+		error = ifmedia_ioctl(ifp, (struct ifreq *)data,
+		    &sc->sc_ifmedia, cmd);
+		break;
 
-	default: {
-	    error = ether_ioctl(ifp, cmd, data);
-	    break;
+	default:
+		error = ether_ioctl(ifp, cmd, data);
+		break;
 	}
-    }
 
-    splx(s);
-    return error;
+	splx(s);
+	return error;
 }
 
 static int
-lemac_ifmedia_change(
-    struct ifnet * const ifp)
+lemac_ifmedia_change(struct ifnet * const ifp)
 {
-    lemac_softc_t * const sc = LEMAC_IFP_TO_SOFTC(ifp);
-    unsigned new_ctl;
+	lemac_softc_t * const sc = LEMAC_IFP_TO_SOFTC(ifp);
+	unsigned new_ctl;
 
-    switch (IFM_SUBTYPE(sc->sc_ifmedia.ifm_media)) {
+	switch (IFM_SUBTYPE(sc->sc_ifmedia.ifm_media)) {
 	case IFM_10_T: new_ctl = LEMAC_CTL_APD; break;
 	case IFM_10_2:
 	case IFM_10_5: new_ctl = LEMAC_CTL_APD|LEMAC_CTL_PSL; break;
 	case IFM_AUTO: new_ctl = 0; break;
 	default:       return EINVAL;
-    }
-    if (sc->sc_ctlmode != new_ctl) {
-	sc->sc_ctlmode = new_ctl;
-	lemac_reset(sc);
-	if (sc->sc_if.if_flags & IFF_UP)
-	    lemac_init(sc);
-    }
-    return 0;
+	}
+	if (sc->sc_ctlmode != new_ctl) {
+		sc->sc_ctlmode = new_ctl;
+		lemac_reset(sc);
+		if (sc->sc_if.if_flags & IFF_UP)
+			lemac_init(sc);
+	}
+	return 0;
 }
 
 /*
  * Media status callback
  */
 static void
-lemac_ifmedia_status(
-    struct ifnet * const ifp,
-    struct ifmediareq *req)
-{
-    lemac_softc_t *sc = LEMAC_IFP_TO_SOFTC(ifp);
-    unsigned data = LEMAC_INB(sc, LEMAC_REG_CNF);
-
-    req->ifm_status = IFM_AVALID;
-    if (sc->sc_flags & LEMAC_LINKUP)
-	req->ifm_status |= IFM_ACTIVE;
-
-    if (sc->sc_ctlmode & LEMAC_CTL_APD) {
-	if (sc->sc_ctlmode & LEMAC_CTL_PSL) {
-	    req->ifm_active = IFM_10_5;
-	} else {
-	    req->ifm_active = IFM_10_T;
-	}
-    } else {
-	/*
-	 * The link bit of the configuration register reflects the
-	 * current media choice when auto-port is enabled.
-	 */
-	if (data & LEMAC_CNF_NOLINK) {
-	    req->ifm_active = IFM_10_5;
+lemac_ifmedia_status(struct ifnet * const ifp, struct ifmediareq *req)
+{
+	lemac_softc_t *sc = LEMAC_IFP_TO_SOFTC(ifp);
+	unsigned data = LEMAC_INB(sc, LEMAC_REG_CNF);
+
+	req->ifm_status = IFM_AVALID;
+	if (sc->sc_flags & LEMAC_LINKUP)
+		req->ifm_status |= IFM_ACTIVE;
+
+	if (sc->sc_ctlmode & LEMAC_CTL_APD) {
+		if (sc->sc_ctlmode & LEMAC_CTL_PSL)
+			req->ifm_active = IFM_10_5;
+		else
+			req->ifm_active = IFM_10_T;
 	} else {
-	    req->ifm_active = IFM_10_T;
+		/*
+		 * The link bit of the configuration register reflects the
+		 * current media choice when auto-port is enabled.
+		 */
+		if (data & LEMAC_CNF_NOLINK)
+			req->ifm_active = IFM_10_5;
+		else
+			req->ifm_active = IFM_10_T;
 	}
-    }
 
-    req->ifm_active |= IFM_ETHER;
+	req->ifm_active |= IFM_ETHER;
 }
 
 int
-lemac_port_check(
-    const bus_space_tag_t iot,
-    const bus_space_handle_t ioh)
+lemac_port_check(const bus_space_tag_t iot, const bus_space_handle_t ioh)
 {
-    unsigned char hwaddr[6];
+	unsigned char hwaddr[6];
 
-    if (lemac_read_macaddr(hwaddr, iot, ioh, LEMAC_REG_APD, 0) == 0)
-	return 1;
-    if (lemac_read_macaddr(hwaddr, iot, ioh, LEMAC_REG_APD, 1) == 0)
-	return 1;
-    return 0;
+	if (lemac_read_macaddr(hwaddr, iot, ioh, LEMAC_REG_APD, 0) == 0)
+		return 1;
+	if (lemac_read_macaddr(hwaddr, iot, ioh, LEMAC_REG_APD, 1) == 0)
+		return 1;
+	return 0;
 }
 
 void
-lemac_info_get(
-    const bus_space_tag_t iot,
-    const bus_space_handle_t ioh,
-    bus_addr_t *maddr_p,
-    bus_size_t *msize_p,
-    int *irq_p)
-{
-    unsigned data;
-
-    *irq_p = LEMAC_DECODEIRQ(bus_space_read_1(iot, ioh, LEMAC_REG_IC) & LEMAC_IC_IRQMSK);
-
-    data = bus_space_read_1(iot, ioh, LEMAC_REG_MBR);
-    if (LEMAC_IS_2K_MODE(data)) {
-	*maddr_p = data * (2 * 1024) + (512 * 1024);
-	*msize_p =  2 * 1024;
-    } else if (LEMAC_IS_64K_MODE(data)) {
-	*maddr_p = data * 64 * 1024;
-	*msize_p = 64 * 1024;
-    } else if (LEMAC_IS_32K_MODE(data)) {
-	*maddr_p = data * 32 * 1024;
-	*msize_p = 32* 1024;
-    } else {
-	*maddr_p = 0;
-	*msize_p = 0;
-    }
+lemac_info_get(const bus_space_tag_t iot, const bus_space_handle_t ioh,
+	bus_addr_t *maddr_p, bus_size_t *msize_p, int *irq_p)
+{
+	unsigned data;
+
+	*irq_p = LEMAC_DECODEIRQ(bus_space_read_1(iot, ioh, LEMAC_REG_IC)
+	    & LEMAC_IC_IRQMSK);
+
+	data = bus_space_read_1(iot, ioh, LEMAC_REG_MBR);
+	if (LEMAC_IS_2K_MODE(data)) {
+		*maddr_p = data * (2 * 1024) + (512 * 1024);
+		*msize_p =  2 * 1024;
+	} else if (LEMAC_IS_64K_MODE(data)) {
+		*maddr_p = data * 64 * 1024;
+		*msize_p = 64 * 1024;
+	} else if (LEMAC_IS_32K_MODE(data)) {
+		*maddr_p = data * 32 * 1024;
+		*msize_p = 32* 1024;
+	} else {
+		*maddr_p = 0;
+		*msize_p = 0;
+	}
 }
 
 /*
  * What to do upon receipt of an interrupt.
  */
 int
-lemac_intr(
-    void *arg)
+lemac_intr(void *arg)
 {
-    lemac_softc_t * const sc = arg;
-    int cs_value;
+	lemac_softc_t * const sc = arg;
+	int cs_value;
 
-    LEMAC_INTR_DISABLE(sc);	/* Mask interrupts */
+	LEMAC_INTR_DISABLE(sc);	/* Mask interrupts */
 
-    /*
-     * Determine cause of interrupt.  Receive events take
-     * priority over Transmit.
-     */
+	/*
+	 * Determine cause of interrupt.  Receive events take
+	 * priority over Transmit.
+	 */
 
-    cs_value = LEMAC_INB(sc, LEMAC_REG_CS);
+	cs_value = LEMAC_INB(sc, LEMAC_REG_CS);
 
-    /*
-     * Check for Receive Queue not being empty.
-     * Check for Transmit Done Queue not being empty.
-     */
+	/*
+	 * Check for Receive Queue not being empty.
+	 * Check for Transmit Done Queue not being empty.
+	 */
 
-    if (cs_value & LEMAC_CS_RNE)
-	lemac_rne_intr(sc);
-    if (cs_value & LEMAC_CS_TNE)
-	lemac_tne_intr(sc);
+	if (cs_value & LEMAC_CS_RNE)
+		lemac_rne_intr(sc);
+	if (cs_value & LEMAC_CS_TNE)
+		lemac_tne_intr(sc);
 
-    /*
-     * Check for Transmitter Disabled.
-     * Check for Receiver Disabled.
-     */
+	/*
+	 * Check for Transmitter Disabled.
+	 * Check for Receiver Disabled.
+	 */
 
-    if (cs_value & LEMAC_CS_TXD)
-	lemac_txd_intr(sc, cs_value);
-    if (cs_value & LEMAC_CS_RXD)
-	lemac_rxd_intr(sc, cs_value);
+	if (cs_value & LEMAC_CS_TXD)
+		lemac_txd_intr(sc, cs_value);
+	if (cs_value & LEMAC_CS_RXD)
+		lemac_rxd_intr(sc, cs_value);
 
-    /*
-     * Toggle LED and unmask interrupts.
-     */
+	/* Toggle LED and unmask interrupts. */
 
-    sc->sc_csr.csr_cs = LEMAC_INB(sc, LEMAC_REG_CS);
+	sc->sc_csr.csr_cs = LEMAC_INB(sc, LEMAC_REG_CS);
 
-    LEMAC_OUTB(sc, LEMAC_REG_CTL, LEMAC_INB(sc, LEMAC_REG_CTL) ^ LEMAC_CTL_LED);
-    LEMAC_INTR_ENABLE(sc);		/* Unmask interrupts */
+	LEMAC_OUTB(sc, LEMAC_REG_CTL,
+	    LEMAC_INB(sc, LEMAC_REG_CTL) ^ LEMAC_CTL_LED);
+	LEMAC_INTR_ENABLE(sc);		/* Unmask interrupts */
 
-    if (cs_value)
-        rnd_add_uint32(&sc->rnd_source, cs_value);
+	if (cs_value)
+		rnd_add_uint32(&sc->rnd_source, cs_value);
 
-    return 1;
+	return 1;
 }
 
 void
-lemac_shutdown(
-    void *arg)
+lemac_shutdown(void *arg)
 {
-    lemac_reset((lemac_softc_t *) arg);
+
+	lemac_reset((lemac_softc_t *) arg);
 }
 
 static const char * const lemac_modes[4] = {
-    "PIO mode (internal 2KB window)",
-    "2KB window",
-    "changed 32KB window to 2KB",
-    "changed 64KB window to 2KB",
+	"PIO mode (internal 2KB window)",
+	"2KB window",
+	"changed 32KB window to 2KB",
+	"changed 64KB window to 2KB",
 };
 
 void
-lemac_ifattach(
-    lemac_softc_t *sc)
+lemac_ifattach(lemac_softc_t *sc)
 {
-    struct ifnet * const ifp = &sc->sc_if;
+	struct ifnet * const ifp = &sc->sc_if;
 
-    strlcpy(ifp->if_xname, device_xname(sc->sc_dev), IFNAMSIZ);
+	strlcpy(ifp->if_xname, device_xname(sc->sc_dev), IFNAMSIZ);
 
-    lemac_reset(sc);
+	lemac_reset(sc);
+
+	(void)lemac_read_macaddr(sc->sc_enaddr, sc->sc_iot, sc->sc_ioh,
+	    LEMAC_REG_APD, 0);
 
-    (void) lemac_read_macaddr(sc->sc_enaddr, sc->sc_iot, sc->sc_ioh,
-			      LEMAC_REG_APD, 0);
-
-    printf(": %s\n", sc->sc_prodname);
-
-    printf("%s: address %s, %dKB RAM, %s\n",
-	   ifp->if_xname,
-	   ether_sprintf(sc->sc_enaddr),
-	   sc->sc_lastpage * 2 + 2,
-	   lemac_modes[sc->sc_flags & LEMAC_MODE_MASK]);
-
-    ifp->if_softc = (void *) sc;
-    ifp->if_start = lemac_ifstart;
-    ifp->if_ioctl = lemac_ifioctl;
-
-    ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST;
-
-    if (sc->sc_flags & LEMAC_ALIVE) {
-	int media;
-
-	IFQ_SET_READY(&ifp->if_snd);
-
-	if_attach(ifp);
-	if_deferred_start_init(ifp, NULL);
-	ether_ifattach(ifp, sc->sc_enaddr);
-
-	rnd_attach_source(&sc->rnd_source, device_xname(sc->sc_dev),
-			  RND_TYPE_NET, RND_FLAG_DEFAULT);
-
-	ifmedia_init(&sc->sc_ifmedia, 0,
-		     lemac_ifmedia_change,
-		     lemac_ifmedia_status);
-	if (sc->sc_prodname[4] == '5')	/* DE205 is UTP/AUI */
-	    ifmedia_add(&sc->sc_ifmedia, IFM_ETHER | IFM_AUTO, 0, 0);
-	if (sc->sc_prodname[4] != '3')	/* DE204 & 205 have UTP */
-	    ifmedia_add(&sc->sc_ifmedia, IFM_ETHER | IFM_10_T, 0, 0);
-	if (sc->sc_prodname[4] != '4')	/* DE203 & 205 have BNC */
-	    ifmedia_add(&sc->sc_ifmedia, IFM_ETHER | IFM_10_5, 0, 0);
-	switch (sc->sc_prodname[4]) {
-	    case '3': media = IFM_10_5; break;
-	    case '4': media = IFM_10_T; break;
-	    default:  media = IFM_AUTO; break;
-	}
-	ifmedia_set(&sc->sc_ifmedia, IFM_ETHER | media);
-    } else {
-	printf("%s: disabled due to error\n", ifp->if_xname);
-    }
+	printf(": %s\n", sc->sc_prodname);
+
+	printf("%s: address %s, %dKB RAM, %s\n",
+	    ifp->if_xname,
+	    ether_sprintf(sc->sc_enaddr),
+	    sc->sc_lastpage * 2 + 2,
+	    lemac_modes[sc->sc_flags & LEMAC_MODE_MASK]);
+
+	ifp->if_softc = (void *)sc;
+	ifp->if_start = lemac_ifstart;
+	ifp->if_ioctl = lemac_ifioctl;
+
+	ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST;
+
+	if (sc->sc_flags & LEMAC_ALIVE) {
+		int media;
+
+		IFQ_SET_READY(&ifp->if_snd);
+
+		if_attach(ifp);
+		if_deferred_start_init(ifp, NULL);
+		ether_ifattach(ifp, sc->sc_enaddr);
+
+		rnd_attach_source(&sc->rnd_source, device_xname(sc->sc_dev),
+		    RND_TYPE_NET, RND_FLAG_DEFAULT);
+
+		ifmedia_init(&sc->sc_ifmedia, 0,
+		    lemac_ifmedia_change,
+		    lemac_ifmedia_status);
+		if (sc->sc_prodname[4] == '5')	/* DE205 is UTP/AUI */
+			ifmedia_add(&sc->sc_ifmedia, IFM_ETHER | IFM_AUTO,
+			    0, 0);
+		if (sc->sc_prodname[4] != '3')	/* DE204 & 205 have UTP */
+			ifmedia_add(&sc->sc_ifmedia, IFM_ETHER | IFM_10_T,
+			    0, 0);
+		if (sc->sc_prodname[4] != '4')	/* DE203 & 205 have BNC */
+			ifmedia_add(&sc->sc_ifmedia, IFM_ETHER | IFM_10_5,
+			    0, 0);
+		switch (sc->sc_prodname[4]) {
+		case '3': media = IFM_10_5; break;
+		case '4': media = IFM_10_T; break;
+		default:  media = IFM_AUTO; break;
+		}
+		ifmedia_set(&sc->sc_ifmedia, IFM_ETHER | media);
+	} else
+		printf("%s: disabled due to error\n", ifp->if_xname);
 }

Reply via email to