diff options
author | marcel <marcel@FreeBSD.org> | 2008-03-07 16:55:24 +0000 |
---|---|---|
committer | marcel <marcel@FreeBSD.org> | 2008-03-07 16:55:24 +0000 |
commit | c3557a51f5e240d542f0902b9e7ab9d072647813 (patch) | |
tree | 9964ab1032df577cb70f00946bd6e7bbd6f215f6 /sys/dev | |
parent | 423cb10cb4fb9c8ff17ecb5cd6f60322c6336383 (diff) | |
download | FreeBSD-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.c | 7 |
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); |