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);
|
struct mac_context *mac_ctx = MAC_CONTEXT(mac_handle);
|
||||||
enum roam_offload_state state;
|
enum roam_offload_state state;
|
||||||
QDF_STATUS status;
|
QDF_STATUS status;
|
||||||
|
bool supplicant_disabled_roaming;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* supplicant_disabled_roaming flag is altered when supplicant sends
|
* 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;
|
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,
|
mlme_set_supplicant_disabled_roaming(mac_ctx->psoc, session_id,
|
||||||
!is_fast_roam_enabled);
|
!is_fast_roam_enabled);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user