qcacmn: Add ini parameters to control the burst duration

Add ini parameters to control the scan burst duration in STA, SAP
and GO cases.

Change-Id: Ib9f0cdae660b6d425887fefebf9e64f9ac977593
CRs-Fixed: 2398746
This commit is contained in:
Bala Venkatesh
2019-02-14 13:07:34 +05:30
committed by nshrivas
parent e9f72e08e2
commit 7f726aa21a
4 changed files with 163 additions and 28 deletions

View File

@@ -396,6 +396,10 @@ struct scan_default_params {
uint32_t usr_cfg_num_probes; uint32_t usr_cfg_num_probes;
uint16_t max_bss_per_pdev; uint16_t max_bss_per_pdev;
uint32_t max_active_scans_allowed; uint32_t max_active_scans_allowed;
uint8_t sta_scan_burst_duration;
uint8_t p2p_scan_burst_duration;
uint8_t go_scan_burst_duration;
uint8_t ap_scan_burst_duration;
enum scan_priority scan_priority; enum scan_priority scan_priority;
enum scan_dwelltime_adaptive_mode adaptive_dwell_time_mode; enum scan_dwelltime_adaptive_mode adaptive_dwell_time_mode;
enum scan_dwelltime_adaptive_mode adaptive_dwell_time_mode_nc; enum scan_dwelltime_adaptive_mode adaptive_dwell_time_mode_nc;

View File

@@ -644,19 +644,24 @@ static void scm_req_update_concurrency_params(struct wlan_objmgr_vdev *vdev,
* of channels in every transition by using * of channels in every transition by using
* burst scan. * burst scan.
*/ */
req->scan_req.burst_duration = if (scan_obj->scan_def.go_scan_burst_duration)
scm_scan_get_burst_duration( req->scan_req.burst_duration =
req->scan_req.dwell_time_active, scan_obj->
scan_obj->miracast_enabled); scan_def.go_scan_burst_duration;
else
req->scan_req.burst_duration =
scm_scan_get_burst_duration(
req->scan_req.
dwell_time_active,
scan_obj->
miracast_enabled);
break; break;
} }
if ((sta_active || p2p_cli_present) && if ((sta_active || p2p_cli_present)) {
!req->scan_req.burst_duration) { if (scan_obj->scan_def.sta_scan_burst_duration)
/* req->scan_req.burst_duration =
* Typical background scan. scan_obj->scan_def.
* Disable burst scan for now. sta_scan_burst_duration;
*/
req->scan_req.burst_duration = 0;
break; break;
} }
@@ -707,11 +712,17 @@ static void scm_req_update_concurrency_params(struct wlan_objmgr_vdev *vdev,
req->scan_req.dwell_time_passive = req->scan_req.dwell_time_passive =
req->scan_req.dwell_time_active; req->scan_req.dwell_time_active;
} }
req->scan_req.burst_duration = 0;
if (utils_is_dfs_ch(pdev, ap_chan)) if (scan_obj->scan_def.ap_scan_burst_duration) {
req->scan_req.burst_duration = req->scan_req.burst_duration =
SCAN_BURST_SCAN_MAX_NUM_OFFCHANNELS * scan_obj->scan_def.ap_scan_burst_duration;
req->scan_req.dwell_time_active; } else {
req->scan_req.burst_duration = 0;
if (utils_is_dfs_ch(pdev, ap_chan))
req->scan_req.burst_duration =
SCAN_BURST_SCAN_MAX_NUM_OFFCHANNELS *
req->scan_req.dwell_time_active;
}
} }
} }
@@ -860,22 +871,27 @@ scm_scan_req_update_params(struct wlan_objmgr_vdev *vdev,
else else
req->scan_req.repeat_probe_time = req->scan_req.repeat_probe_time =
req->scan_req.dwell_time_active / 3; req->scan_req.dwell_time_active / 3;
if (scan_obj->scan_def.p2p_scan_burst_duration) {
req->scan_req.burst_duration = req->scan_req.burst_duration =
BURST_SCAN_MAX_NUM_OFFCHANNELS * scan_obj->scan_def.
req->scan_req.dwell_time_active; p2p_scan_burst_duration;
if (req->scan_req.burst_duration > } else {
P2P_SCAN_MAX_BURST_DURATION) { req->scan_req.burst_duration =
uint8_t channels = BURST_SCAN_MAX_NUM_OFFCHANNELS *
P2P_SCAN_MAX_BURST_DURATION / req->scan_req.dwell_time_active;
req->scan_req.dwell_time_active; if (req->scan_req.burst_duration >
if (channels) P2P_SCAN_MAX_BURST_DURATION) {
req->scan_req.burst_duration = uint8_t channels =
P2P_SCAN_MAX_BURST_DURATION /
req->scan_req.dwell_time_active;
if (channels)
req->scan_req.burst_duration =
channels * channels *
req->scan_req.dwell_time_active; req->scan_req.dwell_time_active;
else else
req->scan_req.burst_duration = req->scan_req.burst_duration =
P2P_SCAN_MAX_BURST_DURATION; P2P_SCAN_MAX_BURST_DURATION;
}
} }
req->scan_req.scan_ev_bss_chan = false; req->scan_req.scan_ev_bss_chan = false;
} }

View File

@@ -943,6 +943,108 @@
CFG_VALUE_OR_DEFAULT, \ CFG_VALUE_OR_DEFAULT, \
"ext scan adaptive dwell mode") "ext scan adaptive dwell mode")
/*
* <ini>
* sta_scan_burst_duration - Burst duration in case of split scan.
* @Min: 0
* @Max: 180
* @Default: 0
*
* This ini is used to set burst duration of sta scan requests.
*
* Related: None.
*
* Supported Feature: Concurrency
*
* Usage: External
*
* </ini>
*/
#define CFG_STA_SCAN_BURST_DURATION CFG_INI_UINT( \
"sta_scan_burst_duration", \
0, \
180, \
0, \
CFG_VALUE_OR_DEFAULT, \
"sta scan burst duration")
/*
* <ini>
* p2p_scan_burst_duration - Burst duration in case of split scan for p2p scan.
* @Min: 0
* @Max: 180
* @Default: 0
*
* This ini is used to set burst duration of scan for p2p scan requests.
*
* Related: None.
*
* Supported Feature: Concurrency
*
* Usage: External
*
* </ini>
*/
#define CFG_P2P_SCAN_BURST_DURATION CFG_INI_UINT( \
"p2p_scan_burst_duration", \
0, \
180, \
0, \
CFG_VALUE_OR_DEFAULT, \
"p2p scan burst duration")
/*
* <ini>
* go_scan_burst_duration - Burst duration in case of split scan when GO is
* active.
* @Min: 0
* @Max: 180
* @Default: 0
*
* This ini is used to set burst duration of scan when GO is active.
*
* Related: None.
*
* Supported Feature: Concurrency
*
* Usage: External
*
* </ini>
*/
#define CFG_GO_SCAN_BURST_DURATION CFG_INI_UINT( \
"go_scan_burst_duration", \
0, \
180, \
0, \
CFG_VALUE_OR_DEFAULT, \
"go scan burst duration")
/*
* <ini>
* ap_scan_burst_duration - Burst duration in case of split scan when ap
* is active.
* @Min: 0
* @Max: 32
* @Default: 0
*
* This ini is used to set burst duration of scan when SAP is active.
*
* Related: None.
*
* Supported Feature: Concurrency
*
* Usage: External
*
* </ini>
*/
#define CFG_AP_SCAN_BURST_DURATION CFG_INI_UINT( \
"ap_scan_burst_duration", \
0, \
32, \
0, \
CFG_VALUE_OR_DEFAULT, \
"ap scan burst duration")
#define CFG_SCAN_ALL \ #define CFG_SCAN_ALL \
CFG(CFG_DROP_BCN_ON_CHANNEL_MISMATCH) \ CFG(CFG_DROP_BCN_ON_CHANNEL_MISMATCH) \
CFG(CFG_ENABLE_WAKE_LOCK_IN_SCAN) \ CFG(CFG_ENABLE_WAKE_LOCK_IN_SCAN) \
@@ -964,6 +1066,10 @@
CFG(CFG_ENABLE_MAC_ADDR_SPOOFING) \ CFG(CFG_ENABLE_MAC_ADDR_SPOOFING) \
CFG(CFG_SCAN_AGING_TIME) \ CFG(CFG_SCAN_AGING_TIME) \
CFG(CFG_ADAPTIVE_EXTSCAN_DWELL_MODE) \ CFG(CFG_ADAPTIVE_EXTSCAN_DWELL_MODE) \
CFG(CFG_STA_SCAN_BURST_DURATION) \
CFG(CFG_P2P_SCAN_BURST_DURATION) \
CFG(CFG_GO_SCAN_BURST_DURATION) \
CFG(CFG_AP_SCAN_BURST_DURATION) \
CFG_SCAN_PNO CFG_SCAN_PNO
#endif /* __CONFIG_SCAN_H */ #endif /* __CONFIG_SCAN_H */

View File

@@ -993,6 +993,15 @@ wlan_scan_global_init(struct wlan_objmgr_psoc *psoc,
scan_obj->scan_def.extscan_adaptive_dwell_mode = scan_obj->scan_def.extscan_adaptive_dwell_mode =
cfg_get(psoc, CFG_ADAPTIVE_EXTSCAN_DWELL_MODE); cfg_get(psoc, CFG_ADAPTIVE_EXTSCAN_DWELL_MODE);
/* init burst durations */
scan_obj->scan_def.sta_scan_burst_duration =
cfg_get(psoc, CFG_STA_SCAN_BURST_DURATION);
scan_obj->scan_def.p2p_scan_burst_duration =
cfg_get(psoc, CFG_P2P_SCAN_BURST_DURATION);
scan_obj->scan_def.go_scan_burst_duration =
cfg_get(psoc, CFG_GO_SCAN_BURST_DURATION);
scan_obj->scan_def.ap_scan_burst_duration =
cfg_get(psoc, CFG_AP_SCAN_BURST_DURATION);
/* scan contrl flags */ /* scan contrl flags */
scan_obj->scan_def.scan_f_passive = true; scan_obj->scan_def.scan_f_passive = true;
scan_obj->scan_def.scan_f_ofdm_rates = true; scan_obj->scan_def.scan_f_ofdm_rates = true;