summaryrefslogtreecommitdiffstats
path: root/sys/dev
diff options
context:
space:
mode:
authormarcel <marcel@FreeBSD.org>2008-03-07 16:55:24 +0000
committermarcel <marcel@FreeBSD.org>2008-03-07 16:55:24 +0000
commitc3557a51f5e240d542f0902b9e7ab9d072647813 (patch)
tree9964ab1032df577cb70f00946bd6e7bbd6f215f6 /sys/dev
parent423cb10cb4fb9c8ff17ecb5cd6f60322c6336383 (diff)
downloadFreeBSD-src-c3557a51f5e240d542f0902b9e7ab9d072647813.zip
FreeBSD-src-c3557a51f5e240d542f0902b9e7ab9d072647813.tar.gz
Apply le*toh() or htole*() to the variables of which we use the address
as the buffer pointer in the call to axe_cmd(). This is needed to make the code work on big-endian machines. Ok'd: imp@
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/usb/if_axe.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/sys/dev/usb/if_axe.c b/sys/dev/usb/if_axe.c
index db65d10..188c08f 100644
--- a/sys/dev/usb/if_axe.c
+++ b/sys/dev/usb/if_axe.c
@@ -276,7 +276,7 @@ axe_miibus_readreg(device_t dev, int phy, int reg)
if (val)
sc->axe_phyaddrs[0] = phy;
- return (val);
+ return (le16toh(val));
}
static int
@@ -291,6 +291,7 @@ axe_miibus_writereg(device_t dev, int phy, int reg, int val)
AXE_SLEEPLOCKASSERT(sc);
AXE_LOCK(sc);
axe_cmd(sc, AXE_CMD_MII_OPMODE_SW, 0, 0, NULL);
+ val = htole32(val);
err = axe_cmd(sc, AXE_CMD_MII_WRITE_REG, reg, phy, (void *)&val);
axe_cmd(sc, AXE_CMD_MII_OPMODE_HW, 0, 0, NULL);
AXE_UNLOCK(sc);
@@ -381,6 +382,7 @@ axe_setmulti(struct axe_softc *sc)
AXE_LOCK(sc);
axe_cmd(sc, AXE_CMD_RXCTL_READ, 0, 0, (void *)&rxmode);
+ rxmode = le16toh(rxmode);
if (ifp->if_flags & IFF_ALLMULTI || ifp->if_flags & IFF_PROMISC) {
rxmode |= AXE_RXCMD_ALLMULTI;
@@ -417,6 +419,7 @@ axe_ax88178_init(struct axe_softc *sc)
axe_cmd(sc, AXE_CMD_SROM_WR_ENABLE, 0, 0, NULL);
/* XXX magic */
axe_cmd(sc, AXE_CMD_SROM_READ, 0, 0x0017, &eeprom);
+ eeprom = le16toh(eeprom);
axe_cmd(sc, AXE_CMD_SROM_WR_DISABLE, 0, 0, NULL);
/* if EEPROM is invalid we have to use to GPIO0 */
@@ -1249,6 +1252,7 @@ axe_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
AXE_LOCK(sc);
axe_cmd(sc, AXE_CMD_RXCTL_READ,
0, 0, (void *)&rxmode);
+ rxmode = le16toh(rxmode);
rxmode |= AXE_RXCMD_PROMISC;
axe_cmd(sc, AXE_CMD_RXCTL_WRITE,
0, rxmode, NULL);
@@ -1262,6 +1266,7 @@ axe_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
AXE_LOCK(sc);
axe_cmd(sc, AXE_CMD_RXCTL_READ,
0, 0, (void *)&rxmode);
+ rxmode = le16toh(rxmode);
rxmode &= ~AXE_RXCMD_PROMISC;
axe_cmd(sc, AXE_CMD_RXCTL_WRITE,
0, rxmode, NULL);
OpenPOWER on IntegriCloud