Commit b8b3ecec authored by Amitkumar Karwar's avatar Amitkumar Karwar Committed by John W. Linville

mwifiex: change beacon parameter structure

'mwifiex_bcn_param' structure contains five parameters which
are present in beacon buffer in case of legacy scan.

'rssi' field won't be there in this buffer for extended scan.
Hence 'bssid' and 'rssi' are removed from the structure and it is
renamed as 'mwifiex_fixed_bcn_param' so that we can have common
parsing logic later for both.
Signed-off-by: default avatarAmitkumar Karwar <akarwar@marvell.com>
Signed-off-by: default avatarBing Zhao <bzhao@marvell.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent f25b1431
...@@ -1047,9 +1047,7 @@ struct host_cmd_ds_rf_ant_siso { ...@@ -1047,9 +1047,7 @@ struct host_cmd_ds_rf_ant_siso {
__le16 ant_mode; __le16 ant_mode;
}; };
struct mwifiex_bcn_param { struct mwifiex_fixed_bcn_param {
u8 bssid[ETH_ALEN];
u8 rssi;
__le64 timestamp; __le64 timestamp;
__le16 beacon_period; __le16 beacon_period;
__le16 cap_info_bitmap; __le16 cap_info_bitmap;
......
...@@ -1689,7 +1689,7 @@ int mwifiex_ret_802_11_scan(struct mwifiex_private *priv, ...@@ -1689,7 +1689,7 @@ int mwifiex_ret_802_11_scan(struct mwifiex_private *priv,
u16 cap_info_bitmap; u16 cap_info_bitmap;
u8 *current_ptr; u8 *current_ptr;
u64 timestamp; u64 timestamp;
struct mwifiex_bcn_param *bcn_param; struct mwifiex_fixed_bcn_param *bcn_param;
struct mwifiex_bss_priv *bss_priv; struct mwifiex_bss_priv *bss_priv;
if (bytes_left >= sizeof(beacon_size)) { if (bytes_left >= sizeof(beacon_size)) {
...@@ -1716,25 +1716,30 @@ int mwifiex_ret_802_11_scan(struct mwifiex_private *priv, ...@@ -1716,25 +1716,30 @@ int mwifiex_ret_802_11_scan(struct mwifiex_private *priv,
curr_bcn_bytes = beacon_size; curr_bcn_bytes = beacon_size;
/* /* First 5 fields are bssid, RSSI(for legacy scan only),
* First 5 fields are bssid, RSSI, time stamp, beacon interval, * time stamp, beacon interval, and capability information
* and capability information
*/ */
if (curr_bcn_bytes < sizeof(struct mwifiex_bcn_param)) { if (curr_bcn_bytes < ETH_ALEN + sizeof(u8) +
sizeof(struct mwifiex_fixed_bcn_param)) {
dev_err(adapter->dev, dev_err(adapter->dev,
"InterpretIE: not enough bytes left\n"); "InterpretIE: not enough bytes left\n");
continue; continue;
} }
bcn_param = (struct mwifiex_bcn_param *)current_ptr;
current_ptr += sizeof(*bcn_param);
curr_bcn_bytes -= sizeof(*bcn_param);
memcpy(bssid, bcn_param->bssid, ETH_ALEN); memcpy(bssid, current_ptr, ETH_ALEN);
current_ptr += ETH_ALEN;
curr_bcn_bytes -= ETH_ALEN;
rssi = (s32) bcn_param->rssi; rssi = (s32) *(u8 *)current_ptr;
rssi = (-rssi) * 100; /* Convert dBm to mBm */ rssi = (-rssi) * 100; /* Convert dBm to mBm */
current_ptr += sizeof(u8);
curr_bcn_bytes -= sizeof(u8);
dev_dbg(adapter->dev, "info: InterpretIE: RSSI=%d\n", rssi); dev_dbg(adapter->dev, "info: InterpretIE: RSSI=%d\n", rssi);
bcn_param = (struct mwifiex_fixed_bcn_param *)current_ptr;
current_ptr += sizeof(*bcn_param);
curr_bcn_bytes -= sizeof(*bcn_param);
timestamp = le64_to_cpu(bcn_param->timestamp); timestamp = le64_to_cpu(bcn_param->timestamp);
beacon_period = le16_to_cpu(bcn_param->beacon_period); beacon_period = le16_to_cpu(bcn_param->beacon_period);
......
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