mwifiex: add missing endian conversions
authorTobias Waldekranz <tobias@waldekranz.com>
Mon, 26 Aug 2013 07:18:06 +0000 (09:18 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Mon, 26 Aug 2013 18:10:38 +0000 (14:10 -0400)
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>
drivers/net/wireless/mwifiex/11n_aggr.c
drivers/net/wireless/mwifiex/main.h
drivers/net/wireless/mwifiex/sdio.c
drivers/net/wireless/mwifiex/sta_cmdresp.c

index 8f9f54231a1c416a3f47ee7346b0ca026c143aab..f69d7e068e756aa45bce4e21e150069393e9f0d4 100644 (file)
@@ -69,7 +69,7 @@ mwifiex_11n_form_amsdu_pkt(struct sk_buff *skb_aggr,
        memcpy(&tx_header->eth803_hdr, skb_src->data, dt_offset);
 
        /* 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);
 
        memcpy(&tx_header->rfc1042_hdr, &snap, sizeof(struct rfc_1042_hdr));
index 7d4d13779625e84c4b9aebe85af12e4e5d9e197c..1d72f13adb9dd5763187bde915fe0300eb5f4dd1 100644 (file)
@@ -1026,7 +1026,7 @@ mwifiex_netdev_get_priv(struct net_device *dev)
  */
 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
index 0e2070f72fed37457c078390a7b263a8d88a6e7e..1576104e3d9531ada721dc41ec5740f021345b83 100644 (file)
@@ -1062,7 +1062,7 @@ static int mwifiex_decode_rx_packet(struct mwifiex_adapter *adapter,
 
        case MWIFIEX_TYPE_EVENT:
                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))
                        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++) {
 
                        /* get curr PKT len & type */
-                       pkt_len = *(u16 *) &curr_ptr[0];
-                       pkt_type = *(u16 *) &curr_ptr[2];
+                       pkt_len = le16_to_cpu(*(__le16 *) &curr_ptr[0]);
+                       pkt_type = le16_to_cpu(*(__le16 *) &curr_ptr[2]);
 
                        /* copy pkt to deaggr buf */
                        skb_deaggr = card->mpa_rx.skb_arr[pind];
index 6a814eb2671a3a48a99d383cc725f2b69924ee26..58a6013712d2d2c7e063282e056fa31e2dd7a955 100644 (file)
@@ -280,7 +280,7 @@ static int mwifiex_ret_tx_rate_cfg(struct mwifiex_private *priv,
 
        tlv_buf = ((u8 *)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) {
                tlv = (*tlv_buf);