Commit 902831a7 authored by Karthik D A's avatar Karthik D A Committed by Kalle Valo

mwifiex: Fixed endianness problem for big endian platform

The driver sends and recives information to and from the firmware.
Correct endianness should be ensured as firmware follows little
endian format and host can be little/big endian.
Signed-off-by: default avatarKarthik D A <karthida@marvell.com>
Signed-off-by: default avatarAmitkumar Karwar <akarwar@marvell.com>
Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
parent 4ad0579a
...@@ -1646,7 +1646,7 @@ struct mwifiex_ie_types_sta_info { ...@@ -1646,7 +1646,7 @@ struct mwifiex_ie_types_sta_info {
}; };
struct host_cmd_ds_sta_list { struct host_cmd_ds_sta_list {
u16 sta_count; __le16 sta_count;
u8 tlv[0]; u8 tlv[0];
} __packed; } __packed;
...@@ -2034,26 +2034,26 @@ struct host_cmd_ds_set_bss_mode { ...@@ -2034,26 +2034,26 @@ struct host_cmd_ds_set_bss_mode {
struct host_cmd_ds_pcie_details { struct host_cmd_ds_pcie_details {
/* TX buffer descriptor ring address */ /* TX buffer descriptor ring address */
u32 txbd_addr_lo; __le32 txbd_addr_lo;
u32 txbd_addr_hi; __le32 txbd_addr_hi;
/* TX buffer descriptor ring count */ /* TX buffer descriptor ring count */
u32 txbd_count; __le32 txbd_count;
/* RX buffer descriptor ring address */ /* RX buffer descriptor ring address */
u32 rxbd_addr_lo; __le32 rxbd_addr_lo;
u32 rxbd_addr_hi; __le32 rxbd_addr_hi;
/* RX buffer descriptor ring count */ /* RX buffer descriptor ring count */
u32 rxbd_count; __le32 rxbd_count;
/* Event buffer descriptor ring address */ /* Event buffer descriptor ring address */
u32 evtbd_addr_lo; __le32 evtbd_addr_lo;
u32 evtbd_addr_hi; __le32 evtbd_addr_hi;
/* Event buffer descriptor ring count */ /* Event buffer descriptor ring count */
u32 evtbd_count; __le32 evtbd_count;
/* Sleep cookie buffer physical address */ /* Sleep cookie buffer physical address */
u32 sleep_cookie_addr_lo; __le32 sleep_cookie_addr_lo;
u32 sleep_cookie_addr_hi; __le32 sleep_cookie_addr_hi;
} __packed; } __packed;
struct mwifiex_ie_types_rssi_threshold { struct mwifiex_ie_types_rssi_threshold {
...@@ -2093,8 +2093,8 @@ struct mwifiex_ie_types_mc_group_info { ...@@ -2093,8 +2093,8 @@ struct mwifiex_ie_types_mc_group_info {
u8 chan_buf_weight; u8 chan_buf_weight;
u8 band_config; u8 band_config;
u8 chan_num; u8 chan_num;
u32 chan_time; __le32 chan_time;
u32 reserved; __le32 reserved;
union { union {
u8 sdio_func_num; u8 sdio_func_num;
u8 usb_ep_num; u8 usb_ep_num;
...@@ -2185,7 +2185,7 @@ struct host_cmd_ds_robust_coex { ...@@ -2185,7 +2185,7 @@ struct host_cmd_ds_robust_coex {
} __packed; } __packed;
struct host_cmd_ds_wakeup_reason { struct host_cmd_ds_wakeup_reason {
u16 wakeup_reason; __le16 wakeup_reason;
} __packed; } __packed;
struct host_cmd_ds_gtk_rekey_params { struct host_cmd_ds_gtk_rekey_params {
......
...@@ -1244,20 +1244,23 @@ mwifiex_cmd_pcie_host_spec(struct mwifiex_private *priv, ...@@ -1244,20 +1244,23 @@ mwifiex_cmd_pcie_host_spec(struct mwifiex_private *priv,
return 0; return 0;
/* Send the ring base addresses and count to firmware */ /* Send the ring base addresses and count to firmware */
host_spec->txbd_addr_lo = (u32)(card->txbd_ring_pbase); host_spec->txbd_addr_lo = cpu_to_le32((u32)(card->txbd_ring_pbase));
host_spec->txbd_addr_hi = (u32)(((u64)card->txbd_ring_pbase)>>32); host_spec->txbd_addr_hi =
host_spec->txbd_count = MWIFIEX_MAX_TXRX_BD; cpu_to_le32((u32)(((u64)card->txbd_ring_pbase) >> 32));
host_spec->rxbd_addr_lo = (u32)(card->rxbd_ring_pbase); host_spec->txbd_count = cpu_to_le32(MWIFIEX_MAX_TXRX_BD);
host_spec->rxbd_addr_hi = (u32)(((u64)card->rxbd_ring_pbase)>>32); host_spec->rxbd_addr_lo = cpu_to_le32((u32)(card->rxbd_ring_pbase));
host_spec->rxbd_count = MWIFIEX_MAX_TXRX_BD; host_spec->rxbd_addr_hi =
host_spec->evtbd_addr_lo = (u32)(card->evtbd_ring_pbase); cpu_to_le32((u32)(((u64)card->rxbd_ring_pbase) >> 32));
host_spec->evtbd_addr_hi = (u32)(((u64)card->evtbd_ring_pbase)>>32); host_spec->rxbd_count = cpu_to_le32(MWIFIEX_MAX_TXRX_BD);
host_spec->evtbd_count = MWIFIEX_MAX_EVT_BD; host_spec->evtbd_addr_lo = cpu_to_le32((u32)(card->evtbd_ring_pbase));
host_spec->evtbd_addr_hi =
cpu_to_le32((u32)(((u64)card->evtbd_ring_pbase) >> 32));
host_spec->evtbd_count = cpu_to_le32(MWIFIEX_MAX_EVT_BD);
if (card->sleep_cookie_vbase) { if (card->sleep_cookie_vbase) {
host_spec->sleep_cookie_addr_lo = host_spec->sleep_cookie_addr_lo =
(u32)(card->sleep_cookie_pbase); cpu_to_le32((u32)(card->sleep_cookie_pbase));
host_spec->sleep_cookie_addr_hi = host_spec->sleep_cookie_addr_hi = cpu_to_le32((u32)(((u64)
(u32)(((u64)(card->sleep_cookie_pbase)) >> 32); (card->sleep_cookie_pbase)) >> 32));
mwifiex_dbg(priv->adapter, INFO, mwifiex_dbg(priv->adapter, INFO,
"sleep_cook_lo phy addr: 0x%x\n", "sleep_cook_lo phy addr: 0x%x\n",
host_spec->sleep_cookie_addr_lo); host_spec->sleep_cookie_addr_lo);
......
...@@ -962,7 +962,7 @@ static int mwifiex_ret_uap_sta_list(struct mwifiex_private *priv, ...@@ -962,7 +962,7 @@ static int mwifiex_ret_uap_sta_list(struct mwifiex_private *priv,
int i; int i;
struct mwifiex_sta_node *sta_node; struct mwifiex_sta_node *sta_node;
for (i = 0; i < sta_list->sta_count; i++) { for (i = 0; i < (le16_to_cpu(sta_list->sta_count)); i++) {
sta_node = mwifiex_get_sta_entry(priv, sta_info->mac); sta_node = mwifiex_get_sta_entry(priv, sta_info->mac);
if (unlikely(!sta_node)) if (unlikely(!sta_node))
continue; continue;
......
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