qcacld-3.0: Fix false alarm scan reject issue

Currently, the scan is rejected if roaming in progress on STA or
if a client of SAP is in the middle of WPS/EAPOL exchange. And
it uses last_scan_reject_timestamp and reset scan_reject_cnt to
avoid scan stuck issue. last_scan_reject_timestamp and
scan_reject_cnt reset when the next scan issues successfully.

If:
1\ Scan happens and roaming is in progress on STA or client of SAP is
   in the middle of the WPS/EAPOL exchange. Initialized
   last_scan_reject_timestamp and reset scan_reject_cnt;
2\ Maybe no scan happens for a long time;
3\ scan happens but unfortunately, a connection is in progress again.
Then false alarm may happen because the time has already expired and
scan_reject_cnt >= 15.

Reset scan reject params after successful set key and successful roam.

Change-Id: I1197e66483e3bc8da38d6bcbc8b8c32b193ef6c9
CRs-Fixed: 2418658
This commit is contained in:
Abhinav Kumar
2019-03-18 20:23:58 +05:30
committed by nshrivas
parent a54654f5df
commit 2b431b6376
2 changed files with 8 additions and 0 deletions

View File

@@ -1983,6 +1983,9 @@ QDF_STATUS hdd_change_peer_state(struct hdd_adapter *adapter,
#endif #endif
if (sta_state == OL_TXRX_PEER_STATE_AUTH) { if (sta_state == OL_TXRX_PEER_STATE_AUTH) {
/* Reset scan reject params on successful set key */
hdd_debug("Reset scan reject params");
hdd_init_scan_reject_params(adapter->hdd_ctx);
#ifdef QCA_LL_LEGACY_TX_FLOW_CONTROL #ifdef QCA_LL_LEGACY_TX_FLOW_CONTROL
/* make sure event is reset */ /* make sure event is reset */
INIT_COMPLETION(adapter->sta_authorized_event); INIT_COMPLETION(adapter->sta_authorized_event);

View File

@@ -14618,6 +14618,11 @@ void hdd_set_roaming_in_progress(bool value)
hdd_ctx->roaming_in_progress = value; hdd_ctx->roaming_in_progress = value;
hdd_debug("Roaming in Progress set to %d", value); hdd_debug("Roaming in Progress set to %d", value);
if (!hdd_ctx->roaming_in_progress) {
/* Reset scan reject params on successful roam complete */
hdd_debug("Reset scan reject params");
hdd_init_scan_reject_params(hdd_ctx);
}
} }
bool hdd_is_roaming_in_progress(struct hdd_context *hdd_ctx) bool hdd_is_roaming_in_progress(struct hdd_context *hdd_ctx)