mirror of https://gitee.com/openkylin/linux.git
mwifiex: update correct dtim_period in dump_station()
Earlier we were using dtim period extracted from scan response buffer provided by FW in scan operation. But it is observed that sometimes the buffer doesn't contain dtim period tlv, and wrong value (0) was sent to user space. After association FW will start listening to beacon frames of connected AP and store dtim period. Therefore we can get it from FW in dump_station() instead of using wrong value obtained in scanning. Redundant code after adapting new approach for dtim period is also removed in this patch. Signed-off-by: Amitkumar Karwar <akarwar@marvell.com> Signed-off-by: Bing Zhao <bzhao@marvell.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
f3c8d2591f
commit
caf60a6c95
|
@ -539,6 +539,11 @@ mwifiex_dump_station_info(struct mwifiex_private *priv,
|
|||
ret = -EFAULT;
|
||||
}
|
||||
|
||||
/* Get DTIM period information from firmware */
|
||||
mwifiex_send_cmd_sync(priv, HostCmd_CMD_802_11_SNMP_MIB,
|
||||
HostCmd_ACT_GEN_GET, DTIM_PERIOD_I,
|
||||
&priv->dtim_period);
|
||||
|
||||
/*
|
||||
* Bit 0 in tx_htinfo indicates that current Tx rate is 11n rate. Valid
|
||||
* MCS index values for us are 0 to 7.
|
||||
|
@ -573,8 +578,7 @@ mwifiex_dump_station_info(struct mwifiex_private *priv,
|
|||
WLAN_CAPABILITY_SHORT_SLOT_TIME)
|
||||
sinfo->bss_param.flags |=
|
||||
BSS_PARAM_FLAGS_SHORT_SLOT_TIME;
|
||||
sinfo->bss_param.dtim_period =
|
||||
priv->curr_bss_params.bss_descriptor.dtim_period;
|
||||
sinfo->bss_param.dtim_period = priv->dtim_period;
|
||||
sinfo->bss_param.beacon_interval =
|
||||
priv->curr_bss_params.bss_descriptor.beacon_period;
|
||||
}
|
||||
|
|
|
@ -249,7 +249,6 @@ struct mwifiex_bssdescriptor {
|
|||
u32 channel;
|
||||
u32 freq;
|
||||
u16 beacon_period;
|
||||
u8 dtim_period;
|
||||
u8 erp_flags;
|
||||
u32 bss_mode;
|
||||
u8 supported_rates[MWIFIEX_SUPPORTED_RATES];
|
||||
|
@ -392,6 +391,7 @@ struct mwifiex_private {
|
|||
u8 prev_bssid[ETH_ALEN];
|
||||
struct mwifiex_current_bss_params curr_bss_params;
|
||||
u16 beacon_period;
|
||||
u8 dtim_period;
|
||||
u16 listen_interval;
|
||||
u16 atim_window;
|
||||
u8 adhoc_channel;
|
||||
|
|
|
@ -1086,7 +1086,6 @@ mwifiex_update_bss_desc_with_ie(struct mwifiex_adapter *adapter,
|
|||
struct ieee_types_vendor_specific *vendor_ie;
|
||||
const u8 wpa_oui[4] = { 0x00, 0x50, 0xf2, 0x01 };
|
||||
const u8 wmm_oui[4] = { 0x00, 0x50, 0xf2, 0x02 };
|
||||
struct ieee80211_tim_ie *tim_ie;
|
||||
|
||||
found_data_rate_ie = false;
|
||||
rate_size = 0;
|
||||
|
@ -1259,11 +1258,6 @@ mwifiex_update_bss_desc_with_ie(struct mwifiex_adapter *adapter,
|
|||
sizeof(struct ieee_types_header) -
|
||||
bss_entry->beacon_buf);
|
||||
break;
|
||||
case WLAN_EID_TIM:
|
||||
tim_ie = (void *) (current_ptr +
|
||||
sizeof(struct ieee_types_header));
|
||||
bss_entry->dtim_period = tim_ie->dtim_period;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -210,6 +210,9 @@ static int mwifiex_ret_802_11_snmp_mib(struct mwifiex_private *priv,
|
|||
dev_dbg(priv->adapter->dev,
|
||||
"info: SNMP_RESP: TxRetryCount=%u\n", ul_temp);
|
||||
break;
|
||||
case DTIM_PERIOD_I:
|
||||
dev_dbg(priv->adapter->dev,
|
||||
"info: SNMP_RESP: DTIM period=%u\n", ul_temp);
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue