summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/mac/inc/sir_api.h1
-rw-r--r--core/mac/src/pe/lim/lim_process_sme_req_messages.c17
-rw-r--r--core/wma/src/wma_scan_roam.c10
3 files changed, 26 insertions, 2 deletions
diff --git a/core/mac/inc/sir_api.h b/core/mac/inc/sir_api.h
index 0e808e2519a6..91eef977dfc9 100644
--- a/core/mac/inc/sir_api.h
+++ b/core/mac/inc/sir_api.h
@@ -3793,6 +3793,7 @@ typedef struct sSirScanOffloadReq {
uint16_t uIEFieldLen;
uint16_t uIEFieldOffset;
+ uint32_t burst_scan_duration;
/* mac address randomization attributes */
bool enable_scan_randomization;
uint8_t mac_addr[QDF_MAC_ADDR_SIZE];
diff --git a/core/mac/src/pe/lim/lim_process_sme_req_messages.c b/core/mac/src/pe/lim/lim_process_sme_req_messages.c
index 382605aaaf2a..afc3e1dbd99b 100644
--- a/core/mac/src/pe/lim/lim_process_sme_req_messages.c
+++ b/core/mac/src/pe/lim/lim_process_sme_req_messages.c
@@ -79,6 +79,9 @@
#define CONV_MS_TO_US 1024 /* conversion factor from ms to us */
+#define BEACON_INTERVAL_THRESHOLD 50 /* in msecs */
+#define STA_BURST_SCAN_DURATION 120 /* in msecs */
+
/* SME REQ processing function templates */
static bool __lim_process_sme_sys_ready_ind(tpAniSirGlobal, uint32_t *);
static bool __lim_process_sme_start_bss_req(tpAniSirGlobal, tpSirMsgQ pMsg);
@@ -1296,6 +1299,20 @@ static QDF_STATUS lim_send_hal_start_scan_offload_req(tpAniSirGlobal pMac,
pScanOffloadReq->scan_adaptive_dwell_mode =
pScanReq->scan_adaptive_dwell_mode;
+ for (i = 0; i < pMac->lim.maxBssId; i++) {
+ tpPESession session_entry =
+ pe_find_session_by_sme_session_id(pMac, i);
+ if (session_entry &&
+ (eLIM_MLM_LINK_ESTABLISHED_STATE ==
+ session_entry->limMlmState) &&
+ (session_entry->beaconParams.beaconInterval
+ < BEACON_INTERVAL_THRESHOLD)) {
+ pScanOffloadReq->burst_scan_duration =
+ STA_BURST_SCAN_DURATION;
+ break;
+ }
+ }
+
/* for normal scan, the value for p2pScanType should be 0
always */
if (pScanReq->p2pSearch)
diff --git a/core/wma/src/wma_scan_roam.c b/core/wma/src/wma_scan_roam.c
index 05297745abd0..c68fd02c7df1 100644
--- a/core/wma/src/wma_scan_roam.c
+++ b/core/wma/src/wma_scan_roam.c
@@ -358,8 +358,14 @@ QDF_STATUS wma_get_buf_start_scan_cmd(tp_wma_handle wma_handle,
}
if (wma_is_sta_active(wma_handle) ||
wma_is_p2p_cli_active(wma_handle)) {
- /* Typical background scan. Disable burst scan for now. */
- cmd->burst_duration = 0;
+ if (scan_req->burst_scan_duration)
+ cmd->burst_duration =
+ scan_req->burst_scan_duration;
+ else
+ /* Typical background scan.
+ * Disable burst scan for now.
+ */
+ cmd->burst_duration = 0;
break;
}
} while (0);