mirror of https://gitee.com/openkylin/linux.git
mwifiex: add missing endian conversions
Fixes multiple locations where a little endian host is assumed during ser/des of messages sent to/received from the chip. Signed-off-by: Tobias Waldekranz <tobias@waldekranz.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
d4c04ba141
commit
cfcd926ea2
|
@ -69,7 +69,7 @@ mwifiex_11n_form_amsdu_pkt(struct sk_buff *skb_aggr,
|
||||||
memcpy(&tx_header->eth803_hdr, skb_src->data, dt_offset);
|
memcpy(&tx_header->eth803_hdr, skb_src->data, dt_offset);
|
||||||
|
|
||||||
/* Copy SNAP header */
|
/* Copy SNAP header */
|
||||||
snap.snap_type = *(u16 *) ((u8 *)skb_src->data + dt_offset);
|
snap.snap_type = le16_to_cpu(*(__le16 *) ((u8 *)skb_src->data + dt_offset));
|
||||||
dt_offset += sizeof(u16);
|
dt_offset += sizeof(u16);
|
||||||
|
|
||||||
memcpy(&tx_header->rfc1042_hdr, &snap, sizeof(struct rfc_1042_hdr));
|
memcpy(&tx_header->rfc1042_hdr, &snap, sizeof(struct rfc_1042_hdr));
|
||||||
|
|
|
@ -1026,7 +1026,7 @@ mwifiex_netdev_get_priv(struct net_device *dev)
|
||||||
*/
|
*/
|
||||||
static inline bool mwifiex_is_skb_mgmt_frame(struct sk_buff *skb)
|
static inline bool mwifiex_is_skb_mgmt_frame(struct sk_buff *skb)
|
||||||
{
|
{
|
||||||
return (*(u32 *)skb->data == PKT_TYPE_MGMT);
|
return (le32_to_cpu(*(__le32 *)skb->data) == PKT_TYPE_MGMT);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* This function retrieves channel closed for operation by Channel
|
/* This function retrieves channel closed for operation by Channel
|
||||||
|
|
|
@ -1062,7 +1062,7 @@ static int mwifiex_decode_rx_packet(struct mwifiex_adapter *adapter,
|
||||||
|
|
||||||
case MWIFIEX_TYPE_EVENT:
|
case MWIFIEX_TYPE_EVENT:
|
||||||
dev_dbg(adapter->dev, "info: --- Rx: Event ---\n");
|
dev_dbg(adapter->dev, "info: --- Rx: Event ---\n");
|
||||||
adapter->event_cause = *(u32 *) skb->data;
|
adapter->event_cause = le32_to_cpu(*(__le32 *) skb->data);
|
||||||
|
|
||||||
if ((skb->len > 0) && (skb->len < MAX_EVENT_SIZE))
|
if ((skb->len > 0) && (skb->len < MAX_EVENT_SIZE))
|
||||||
memcpy(adapter->event_body,
|
memcpy(adapter->event_body,
|
||||||
|
@ -1207,8 +1207,8 @@ static int mwifiex_sdio_card_to_host_mp_aggr(struct mwifiex_adapter *adapter,
|
||||||
for (pind = 0; pind < card->mpa_rx.pkt_cnt; pind++) {
|
for (pind = 0; pind < card->mpa_rx.pkt_cnt; pind++) {
|
||||||
|
|
||||||
/* get curr PKT len & type */
|
/* get curr PKT len & type */
|
||||||
pkt_len = *(u16 *) &curr_ptr[0];
|
pkt_len = le16_to_cpu(*(__le16 *) &curr_ptr[0]);
|
||||||
pkt_type = *(u16 *) &curr_ptr[2];
|
pkt_type = le16_to_cpu(*(__le16 *) &curr_ptr[2]);
|
||||||
|
|
||||||
/* copy pkt to deaggr buf */
|
/* copy pkt to deaggr buf */
|
||||||
skb_deaggr = card->mpa_rx.skb_arr[pind];
|
skb_deaggr = card->mpa_rx.skb_arr[pind];
|
||||||
|
|
|
@ -280,7 +280,7 @@ static int mwifiex_ret_tx_rate_cfg(struct mwifiex_private *priv,
|
||||||
|
|
||||||
tlv_buf = ((u8 *)rate_cfg) +
|
tlv_buf = ((u8 *)rate_cfg) +
|
||||||
sizeof(struct host_cmd_ds_tx_rate_cfg);
|
sizeof(struct host_cmd_ds_tx_rate_cfg);
|
||||||
tlv_buf_len = *(u16 *) (tlv_buf + sizeof(u16));
|
tlv_buf_len = le16_to_cpu(*(__le16 *) (tlv_buf + sizeof(u16)));
|
||||||
|
|
||||||
while (tlv_buf && tlv_buf_len > 0) {
|
while (tlv_buf && tlv_buf_len > 0) {
|
||||||
tlv = (*tlv_buf);
|
tlv = (*tlv_buf);
|
||||||
|
|
Loading…
Reference in New Issue