Browse Source

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
Abhinav Kumar 6 years ago
parent
commit
2b431b6376
2 changed files with 8 additions and 0 deletions
  1. 3 0
      core/hdd/src/wlan_hdd_assoc.c
  2. 5 0
      core/hdd/src/wlan_hdd_main.c

+ 3 - 0
core/hdd/src/wlan_hdd_assoc.c

@@ -1983,6 +1983,9 @@ QDF_STATUS hdd_change_peer_state(struct hdd_adapter *adapter,
 #endif
 
 	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
 		/* make sure event is reset */
 		INIT_COMPLETION(adapter->sta_authorized_event);

+ 5 - 0
core/hdd/src/wlan_hdd_main.c

@@ -14618,6 +14618,11 @@ void hdd_set_roaming_in_progress(bool value)
 
 	hdd_ctx->roaming_in_progress = 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)