aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/msk
diff options
context:
space:
mode:
authorPyun YongHyeon <yongari@FreeBSD.org>2010-02-20 22:24:24 +0000
committerPyun YongHyeon <yongari@FreeBSD.org>2010-02-20 22:24:24 +0000
commitcf5756a6bf6715ededc19d96114311a4cbb34099 (patch)
tree2da297855a253edb604380fb19cda8836fd766d9 /sys/dev/msk
parentc9fdacdac8a5176aeab7d1bdbb66e200ab03b44c (diff)
Notes
Diffstat (limited to 'sys/dev/msk')
-rw-r--r--sys/dev/msk/if_msk.c26
1 files changed, 16 insertions, 10 deletions
diff --git a/sys/dev/msk/if_msk.c b/sys/dev/msk/if_msk.c
index 3f349e8566b98..9b129bd3358c6 100644
--- a/sys/dev/msk/if_msk.c
+++ b/sys/dev/msk/if_msk.c
@@ -3713,10 +3713,10 @@ msk_init_locked(struct msk_if_softc *sc_if)
struct msk_softc *sc;
struct ifnet *ifp;
struct mii_data *mii;
- uint16_t eaddr[ETHER_ADDR_LEN / 2];
+ uint8_t *eaddr;
uint16_t gmac;
uint32_t reg;
- int error, i;
+ int error;
MSK_IF_LOCK_ASSERT(sc_if);
@@ -3785,14 +3785,20 @@ msk_init_locked(struct msk_if_softc *sc_if)
GMAC_WRITE_2(sc, sc_if->msk_port, GM_SERIAL_MODE, gmac);
/* Set station address. */
- bcopy(IF_LLADDR(ifp), eaddr, ETHER_ADDR_LEN);
- for (i = 0; i < ETHER_ADDR_LEN /2; i++)
- GMAC_WRITE_2(sc, sc_if->msk_port, GM_SRC_ADDR_1L + i * 4,
- eaddr[i]);
- for (i = 0; i < ETHER_ADDR_LEN /2; i++)
- GMAC_WRITE_2(sc, sc_if->msk_port, GM_SRC_ADDR_2L + i * 4,
- eaddr[i]);
-
+ eaddr = IF_LLADDR(ifp);
+ GMAC_WRITE_2(sc, sc_if->msk_port, GM_SRC_ADDR_1L,
+ eaddr[0] | (eaddr[1] << 8));
+ GMAC_WRITE_2(sc, sc_if->msk_port, GM_SRC_ADDR_1M,
+ eaddr[2] | (eaddr[3] << 8));
+ GMAC_WRITE_2(sc, sc_if->msk_port, GM_SRC_ADDR_1H,
+ eaddr[4] | (eaddr[5] << 8));
+ GMAC_WRITE_2(sc, sc_if->msk_port, GM_SRC_ADDR_2L,
+ eaddr[0] | (eaddr[1] << 8));
+ GMAC_WRITE_2(sc, sc_if->msk_port, GM_SRC_ADDR_2M,
+ eaddr[2] | (eaddr[3] << 8));
+ GMAC_WRITE_2(sc, sc_if->msk_port, GM_SRC_ADDR_2H,
+ eaddr[4] | (eaddr[5] << 8));
+
/* Disable interrupts for counter overflows. */
GMAC_WRITE_2(sc, sc_if->msk_port, GM_TX_IRQ_MSK, 0);
GMAC_WRITE_2(sc, sc_if->msk_port, GM_RX_IRQ_MSK, 0);