qcacld-3.0: back to back roaming disable cmds block wpa supplicant for 2s
If 2 roaming disable commands are sent by wpa supplicant back to back, 2nd won't send RSO STOP to target since RSO STOPPED already, and disable_lfr_event can't be completed any more since no RSO event from target until 2s timeout, wpa_supplicant thread and nl80211 are blocked in wlan_hdd_cfg80211_set_fast_roaming for 2s too. Fix: If roaming is stopped by wpa_supplicant already and to be disabled again, return QDF_STATUS_E_ALREADY in sme_config_fast_roaming. Change-Id: I7d15a4d4bd8e13ff410a7023f80b418eea435fcc CRs-Fixed: 2733945
This commit is contained in:
@@ -6206,6 +6206,7 @@ QDF_STATUS sme_config_fast_roaming(mac_handle_t mac_handle, uint8_t session_id,
|
||||
struct mac_context *mac_ctx = MAC_CONTEXT(mac_handle);
|
||||
enum roam_offload_state state;
|
||||
QDF_STATUS status;
|
||||
bool supplicant_disabled_roaming;
|
||||
|
||||
/*
|
||||
* supplicant_disabled_roaming flag is altered when supplicant sends
|
||||
@@ -6224,6 +6225,13 @@ QDF_STATUS sme_config_fast_roaming(mac_handle_t mac_handle, uint8_t session_id,
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
supplicant_disabled_roaming =
|
||||
mlme_get_supplicant_disabled_roaming(mac_ctx->psoc,
|
||||
session_id);
|
||||
if (!is_fast_roam_enabled && supplicant_disabled_roaming) {
|
||||
sme_debug("ROAM: RSO disabled by wpa supplicant already");
|
||||
return QDF_STATUS_E_ALREADY;
|
||||
}
|
||||
mlme_set_supplicant_disabled_roaming(mac_ctx->psoc, session_id,
|
||||
!is_fast_roam_enabled);
|
||||
|
||||
|
Fai riferimento in un nuovo problema
Block a user