Commit 56dfe3c7 authored by Stanislav Fomichev's avatar Stanislav Fomichev Committed by Greg Kroah-Hartman

staging: brcm80211: replace broadcom specific unaligned byte swapping routines

htol16_ua_store -> put_unaligned_le16
htol32_ua_store -> put_unaligned_le32
hton16_ua_store -> put_unaligned_be16
hton32_ua_store -> put_unaligned_be32
ltoh16_ua -> get_unaligned_le16
ltoh32_ua -> get_unaligned_le32
ntoh16_ua -> get_unaligned_be16
ntoh32_ua -> get_unaligned_be32

removed unused:
- load32_ua
- load16_ua
- store32_ua
- store16_ua
- ltoh_ua
- ntoh_au
Signed-off-by: default avatarStanislav Fomichev <kernel@fomichev.me>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 628f10ba
...@@ -826,7 +826,7 @@ wl_host_event(struct dhd_info *dhd, int *ifidx, void *pktdata, ...@@ -826,7 +826,7 @@ wl_host_event(struct dhd_info *dhd, int *ifidx, void *pktdata,
} }
/* BRCM event pkt may be unaligned - use xxx_ua to load user_subtype. */ /* BRCM event pkt may be unaligned - use xxx_ua to load user_subtype. */
if (ntoh16_ua((void *)&pvt_data->bcm_hdr.usr_subtype) != if (get_unaligned_be16(&pvt_data->bcm_hdr.usr_subtype) !=
BCMILCP_BCM_SUBTYPE_EVENT) { BCMILCP_BCM_SUBTYPE_EVENT) {
DHD_ERROR(("%s: mismatched subtype, bailing\n", __func__)); DHD_ERROR(("%s: mismatched subtype, bailing\n", __func__));
return BCME_ERROR; return BCME_ERROR;
...@@ -838,10 +838,10 @@ wl_host_event(struct dhd_info *dhd, int *ifidx, void *pktdata, ...@@ -838,10 +838,10 @@ wl_host_event(struct dhd_info *dhd, int *ifidx, void *pktdata,
/* memcpy since BRCM event pkt may be unaligned. */ /* memcpy since BRCM event pkt may be unaligned. */
memcpy(event, &pvt_data->event, sizeof(wl_event_msg_t)); memcpy(event, &pvt_data->event, sizeof(wl_event_msg_t));
type = ntoh32_ua((void *)&event->event_type); type = get_unaligned_be32(&event->event_type);
flags = ntoh16_ua((void *)&event->flags); flags = get_unaligned_be16(&event->flags);
status = ntoh32_ua((void *)&event->status); status = get_unaligned_be32(&event->status);
evlen = ntoh32_ua((void *)&event->datalen) + sizeof(bcm_event_t); evlen = get_unaligned_be32(&event->datalen) + sizeof(bcm_event_t);
switch (type) { switch (type) {
case WLC_E_IF: case WLC_E_IF:
...@@ -895,7 +895,7 @@ wl_host_event(struct dhd_info *dhd, int *ifidx, void *pktdata, ...@@ -895,7 +895,7 @@ wl_host_event(struct dhd_info *dhd, int *ifidx, void *pktdata,
if (type == WLC_E_NDIS_LINK) { if (type == WLC_E_NDIS_LINK) {
u32 temp; u32 temp;
temp = ntoh32_ua((void *)&event->event_type); temp = get_unaligned_be32(&event->event_type);
DHD_TRACE(("Converted to WLC_E_LINK type %d\n", temp)); DHD_TRACE(("Converted to WLC_E_LINK type %d\n", temp));
temp = be32_to_cpu(WLC_E_NDIS_LINK); temp = be32_to_cpu(WLC_E_NDIS_LINK);
......
...@@ -974,8 +974,9 @@ static int dhdsdio_txpkt(dhd_bus_t *bus, struct sk_buff *pkt, uint chan, ...@@ -974,8 +974,9 @@ static int dhdsdio_txpkt(dhd_bus_t *bus, struct sk_buff *pkt, uint chan,
((chan << SDPCM_CHANNEL_SHIFT) & SDPCM_CHANNEL_MASK) | bus->tx_seq | ((chan << SDPCM_CHANNEL_SHIFT) & SDPCM_CHANNEL_MASK) | bus->tx_seq |
(((pad + (((pad +
SDPCM_HDRLEN) << SDPCM_DOFFSET_SHIFT) & SDPCM_DOFFSET_MASK); SDPCM_HDRLEN) << SDPCM_DOFFSET_SHIFT) & SDPCM_DOFFSET_MASK);
htol32_ua_store(swheader, frame + SDPCM_FRAMETAG_LEN);
htol32_ua_store(0, frame + SDPCM_FRAMETAG_LEN + sizeof(swheader)); put_unaligned_le32(swheader, frame + SDPCM_FRAMETAG_LEN);
put_unaligned_le32(0, frame + SDPCM_FRAMETAG_LEN + sizeof(swheader));
#ifdef DHD_DEBUG #ifdef DHD_DEBUG
tx_packets[pkt->priority]++; tx_packets[pkt->priority]++;
...@@ -1290,8 +1291,8 @@ int dhd_bus_txctl(struct dhd_bus *bus, unsigned char *msg, uint msglen) ...@@ -1290,8 +1291,8 @@ int dhd_bus_txctl(struct dhd_bus *bus, unsigned char *msg, uint msglen)
SDPCM_CHANNEL_MASK) SDPCM_CHANNEL_MASK)
| bus->tx_seq | ((doff << SDPCM_DOFFSET_SHIFT) & | bus->tx_seq | ((doff << SDPCM_DOFFSET_SHIFT) &
SDPCM_DOFFSET_MASK); SDPCM_DOFFSET_MASK);
htol32_ua_store(swheader, frame + SDPCM_FRAMETAG_LEN); put_unaligned_le32(swheader, frame + SDPCM_FRAMETAG_LEN);
htol32_ua_store(0, frame + SDPCM_FRAMETAG_LEN + sizeof(swheader)); put_unaligned_le32(0, frame + SDPCM_FRAMETAG_LEN + sizeof(swheader));
if (!DATAOK(bus)) { if (!DATAOK(bus)) {
DHD_INFO(("%s: No bus credit bus->tx_max %d, bus->tx_seq %d\n", DHD_INFO(("%s: No bus credit bus->tx_max %d, bus->tx_seq %d\n",
...@@ -3213,7 +3214,7 @@ static u8 dhdsdio_rxglom(dhd_bus_t *bus, u8 rxseq) ...@@ -3213,7 +3214,7 @@ static u8 dhdsdio_rxglom(dhd_bus_t *bus, u8 rxseq)
for (totlen = num = 0; dlen; num++) { for (totlen = num = 0; dlen; num++) {
/* Get (and move past) next length */ /* Get (and move past) next length */
sublen = ltoh16_ua(dptr); sublen = get_unaligned_le16(dptr);
dlen -= sizeof(u16); dlen -= sizeof(u16);
dptr += sizeof(u16); dptr += sizeof(u16);
if ((sublen < SDPCM_HDRLEN) || if ((sublen < SDPCM_HDRLEN) ||
...@@ -3366,8 +3367,8 @@ static u8 dhdsdio_rxglom(dhd_bus_t *bus, u8 rxseq) ...@@ -3366,8 +3367,8 @@ static u8 dhdsdio_rxglom(dhd_bus_t *bus, u8 rxseq)
/* Validate the superframe header */ /* Validate the superframe header */
dptr = (u8 *) (pfirst->data); dptr = (u8 *) (pfirst->data);
sublen = ltoh16_ua(dptr); sublen = get_unaligned_le16(dptr);
check = ltoh16_ua(dptr + sizeof(u16)); check = get_unaligned_le16(dptr + sizeof(u16));
chan = SDPCM_PACKET_CHANNEL(&dptr[SDPCM_FRAMETAG_LEN]); chan = SDPCM_PACKET_CHANNEL(&dptr[SDPCM_FRAMETAG_LEN]);
seq = SDPCM_PACKET_SEQUENCE(&dptr[SDPCM_FRAMETAG_LEN]); seq = SDPCM_PACKET_SEQUENCE(&dptr[SDPCM_FRAMETAG_LEN]);
...@@ -3436,8 +3437,8 @@ static u8 dhdsdio_rxglom(dhd_bus_t *bus, u8 rxseq) ...@@ -3436,8 +3437,8 @@ static u8 dhdsdio_rxglom(dhd_bus_t *bus, u8 rxseq)
num++, pnext = pnext->next) { num++, pnext = pnext->next) {
dptr = (u8 *) (pnext->data); dptr = (u8 *) (pnext->data);
dlen = (u16) (pnext->len); dlen = (u16) (pnext->len);
sublen = ltoh16_ua(dptr); sublen = get_unaligned_le16(dptr);
check = ltoh16_ua(dptr + sizeof(u16)); check = get_unaligned_le16(dptr + sizeof(u16));
chan = SDPCM_PACKET_CHANNEL(&dptr[SDPCM_FRAMETAG_LEN]); chan = SDPCM_PACKET_CHANNEL(&dptr[SDPCM_FRAMETAG_LEN]);
doff = SDPCM_DOFFSET_VALUE(&dptr[SDPCM_FRAMETAG_LEN]); doff = SDPCM_DOFFSET_VALUE(&dptr[SDPCM_FRAMETAG_LEN]);
#ifdef DHD_DEBUG #ifdef DHD_DEBUG
...@@ -3499,7 +3500,7 @@ static u8 dhdsdio_rxglom(dhd_bus_t *bus, u8 rxseq) ...@@ -3499,7 +3500,7 @@ static u8 dhdsdio_rxglom(dhd_bus_t *bus, u8 rxseq)
pfirst->next = NULL; pfirst->next = NULL;
dptr = (u8 *) (pfirst->data); dptr = (u8 *) (pfirst->data);
sublen = ltoh16_ua(dptr); sublen = get_unaligned_le16(dptr);
chan = SDPCM_PACKET_CHANNEL(&dptr[SDPCM_FRAMETAG_LEN]); chan = SDPCM_PACKET_CHANNEL(&dptr[SDPCM_FRAMETAG_LEN]);
seq = SDPCM_PACKET_SEQUENCE(&dptr[SDPCM_FRAMETAG_LEN]); seq = SDPCM_PACKET_SEQUENCE(&dptr[SDPCM_FRAMETAG_LEN]);
doff = SDPCM_DOFFSET_VALUE(&dptr[SDPCM_FRAMETAG_LEN]); doff = SDPCM_DOFFSET_VALUE(&dptr[SDPCM_FRAMETAG_LEN]);
...@@ -3772,8 +3773,8 @@ static uint dhdsdio_readframes(dhd_bus_t *bus, uint maxframes, bool *finished) ...@@ -3772,8 +3773,8 @@ static uint dhdsdio_readframes(dhd_bus_t *bus, uint maxframes, bool *finished)
memcpy(bus->rxhdr, rxbuf, SDPCM_HDRLEN); memcpy(bus->rxhdr, rxbuf, SDPCM_HDRLEN);
/* Extract hardware header fields */ /* Extract hardware header fields */
len = ltoh16_ua(bus->rxhdr); len = get_unaligned_le16(bus->rxhdr);
check = ltoh16_ua(bus->rxhdr + sizeof(u16)); check = get_unaligned_le16(bus->rxhdr + sizeof(u16));
/* All zeros means readahead info was bad */ /* All zeros means readahead info was bad */
if (!(len | check)) { if (!(len | check)) {
...@@ -3964,8 +3965,8 @@ static uint dhdsdio_readframes(dhd_bus_t *bus, uint maxframes, bool *finished) ...@@ -3964,8 +3965,8 @@ static uint dhdsdio_readframes(dhd_bus_t *bus, uint maxframes, bool *finished)
#endif #endif
/* Extract hardware header fields */ /* Extract hardware header fields */
len = ltoh16_ua(bus->rxhdr); len = get_unaligned_le16(bus->rxhdr);
check = ltoh16_ua(bus->rxhdr + sizeof(u16)); check = get_unaligned_le16(bus->rxhdr + sizeof(u16));
/* All zeros means no more frames */ /* All zeros means no more frames */
if (!(len | check)) { if (!(len | check)) {
......
...@@ -3480,9 +3480,8 @@ void wl_iw_event(struct net_device *dev, wl_event_msg_t *e, void *data) ...@@ -3480,9 +3480,8 @@ void wl_iw_event(struct net_device *dev, wl_event_msg_t *e, void *data)
cmd = IWEVPMKIDCAND; cmd = IWEVPMKIDCAND;
pmkcandlist = data; pmkcandlist = data;
count = count = get_unaligned_be32(&pmkcandlist->
ntoh32_ua((u8 *) & npmkid_cand);
pmkcandlist->npmkid_cand);
ASSERT(count >= 0); ASSERT(count >= 0);
wrqu.data.length = sizeof(struct iw_pmkid_cand); wrqu.data.length = sizeof(struct iw_pmkid_cand);
pmkidcand = pmkcandlist->pmkid_cand; pmkidcand = pmkcandlist->pmkid_cand;
......
...@@ -42,36 +42,6 @@ ...@@ -42,36 +42,6 @@
#define htol16_buf(buf, i) bcmswap16_buf((u16 *)(buf), (i)) #define htol16_buf(buf, i) bcmswap16_buf((u16 *)(buf), (i))
#endif /* IL_BIGENDIAN */ #endif /* IL_BIGENDIAN */
/* Unaligned loads and stores in host byte order */
#ifndef IL_BIGENDIAN
#define load32_ua(a) ltoh32_ua(a)
#define store32_ua(a, v) htol32_ua_store(v, a)
#define load16_ua(a) ltoh16_ua(a)
#define store16_ua(a, v) htol16_ua_store(v, a)
#else
#define load32_ua(a) ntoh32_ua(a)
#define store32_ua(a, v) hton32_ua_store(v, a)
#define load16_ua(a) ntoh16_ua(a)
#define store16_ua(a, v) hton16_ua_store(v, a)
#endif /* IL_BIGENDIAN */
#define _LTOH16_UA(cp) ((cp)[0] | ((cp)[1] << 8))
#define _LTOH32_UA(cp) ((cp)[0] | ((cp)[1] << 8) | ((cp)[2] << 16) | ((cp)[3] << 24))
#define _NTOH16_UA(cp) (((cp)[0] << 8) | (cp)[1])
#define _NTOH32_UA(cp) (((cp)[0] << 24) | ((cp)[1] << 16) | ((cp)[2] << 8) | (cp)[3])
#define ltoh_ua(ptr) \
(sizeof(*(ptr)) == sizeof(u8) ? *(const u8 *)(ptr) : \
sizeof(*(ptr)) == sizeof(u16) ? _LTOH16_UA((const u8 *)(ptr)) : \
sizeof(*(ptr)) == sizeof(u32) ? _LTOH32_UA((const u8 *)(ptr)) : \
*(u8 *)0)
#define ntoh_ua(ptr) \
(sizeof(*(ptr)) == sizeof(u8) ? *(const u8 *)(ptr) : \
sizeof(*(ptr)) == sizeof(u16) ? _NTOH16_UA((const u8 *)(ptr)) : \
sizeof(*(ptr)) == sizeof(u32) ? _NTOH32_UA((const u8 *)(ptr)) : \
*(u8 *)0)
#ifdef __GNUC__ #ifdef __GNUC__
/* GNU macro versions avoid referencing the argument multiple times, while also /* GNU macro versions avoid referencing the argument multiple times, while also
...@@ -102,58 +72,6 @@ ...@@ -102,58 +72,6 @@
} \ } \
}) })
#define htol16_ua_store(val, bytes) ({ \
u16 _val = (val); \
u8 *_bytes = (u8 *)(bytes); \
_bytes[0] = _val & 0xff; \
_bytes[1] = _val >> 8; \
})
#define htol32_ua_store(val, bytes) ({ \
u32 _val = (val); \
u8 *_bytes = (u8 *)(bytes); \
_bytes[0] = _val & 0xff; \
_bytes[1] = (_val >> 8) & 0xff; \
_bytes[2] = (_val >> 16) & 0xff; \
_bytes[3] = _val >> 24; \
})
#define hton16_ua_store(val, bytes) ({ \
u16 _val = (val); \
u8 *_bytes = (u8 *)(bytes); \
_bytes[0] = _val >> 8; \
_bytes[1] = _val & 0xff; \
})
#define hton32_ua_store(val, bytes) ({ \
u32 _val = (val); \
u8 *_bytes = (u8 *)(bytes); \
_bytes[0] = _val >> 24; \
_bytes[1] = (_val >> 16) & 0xff; \
_bytes[2] = (_val >> 8) & 0xff; \
_bytes[3] = _val & 0xff; \
})
#define ltoh16_ua(bytes) ({ \
const u8 *_bytes = (const u8 *)(bytes); \
_LTOH16_UA(_bytes); \
})
#define ltoh32_ua(bytes) ({ \
const u8 *_bytes = (const u8 *)(bytes); \
_LTOH32_UA(_bytes); \
})
#define ntoh16_ua(bytes) ({ \
const u8 *_bytes = (const u8 *)(bytes); \
_NTOH16_UA(_bytes); \
})
#define ntoh32_ua(bytes) ({ \
const u8 *_bytes = (const u8 *)(bytes); \
_NTOH32_UA(_bytes); \
})
#else /* !__GNUC__ */ #else /* !__GNUC__ */
/* Inline versions avoid referencing the argument multiple times */ /* Inline versions avoid referencing the argument multiple times */
...@@ -185,77 +103,5 @@ static inline void bcmswap16_buf(u16 *buf, uint len) ...@@ -185,77 +103,5 @@ static inline void bcmswap16_buf(u16 *buf, uint len)
} }
} }
/*
* Store 16-bit value to unaligned little-endian byte array.
*/
static inline void htol16_ua_store(u16 val, u8 *bytes)
{
bytes[0] = val & 0xff;
bytes[1] = val >> 8;
}
/*
* Store 32-bit value to unaligned little-endian byte array.
*/
static inline void htol32_ua_store(u32 val, u8 *bytes)
{
bytes[0] = val & 0xff;
bytes[1] = (val >> 8) & 0xff;
bytes[2] = (val >> 16) & 0xff;
bytes[3] = val >> 24;
}
/*
* Store 16-bit value to unaligned network-(big-)endian byte array.
*/
static inline void hton16_ua_store(u16 val, u8 *bytes)
{
bytes[0] = val >> 8;
bytes[1] = val & 0xff;
}
/*
* Store 32-bit value to unaligned network-(big-)endian byte array.
*/
static inline void hton32_ua_store(u32 val, u8 *bytes)
{
bytes[0] = val >> 24;
bytes[1] = (val >> 16) & 0xff;
bytes[2] = (val >> 8) & 0xff;
bytes[3] = val & 0xff;
}
/*
* Load 16-bit value from unaligned little-endian byte array.
*/
static inline u16 ltoh16_ua(const void *bytes)
{
return _LTOH16_UA((const u8 *)bytes);
}
/*
* Load 32-bit value from unaligned little-endian byte array.
*/
static inline u32 ltoh32_ua(const void *bytes)
{
return _LTOH32_UA((const u8 *)bytes);
}
/*
* Load 16-bit value from unaligned big-(network-)endian byte array.
*/
static inline u16 ntoh16_ua(const void *bytes)
{
return _NTOH16_UA((const u8 *)bytes);
}
/*
* Load 32-bit value from unaligned big-(network-)endian byte array.
*/
static inline u32 ntoh32_ua(const void *bytes)
{
return _NTOH32_UA((const u8 *)bytes);
}
#endif /* !__GNUC__ */ #endif /* !__GNUC__ */
#endif /* !_BCMENDIAN_H_ */ #endif /* !_BCMENDIAN_H_ */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment