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:
@@ -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;
|
||||||
|
@@ -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;
|
||||||
}
|
}
|
||||||
|
@@ -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 */
|
||||||
|
@@ -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;
|
||||||
|
Reference in New Issue
Block a user