qcacmn: Expose scan_backoff_multiplier for NLO/PNO
For Network Listen Offload and Perfered Network Offload, the fast scan period is multiplied by scan_backoff_multiplier after max cycles have occurred. Expose scan_backoff_multiplier to consumers of the WMI API, so this parameter can be configured. Change-Id: I478fb61cd096d3496205f4ff556e180dabf99b77 CRs-Fixed: 2035201
这个提交包含在:
@@ -117,12 +117,14 @@ struct scan_req {
|
|||||||
* @pdev: pdev pointer
|
* @pdev: pdev pointer
|
||||||
* @dev: Pointer network device
|
* @dev: Pointer network device
|
||||||
* @request: Pointer to cfg80211 scheduled scan start request
|
* @request: Pointer to cfg80211 scheduled scan start request
|
||||||
|
* @scan_backoff_multiplier: multiply scan period by this after max cycles
|
||||||
*
|
*
|
||||||
* Return: 0 for success, non zero for failure
|
* Return: 0 for success, non zero for failure
|
||||||
*/
|
*/
|
||||||
int wlan_cfg80211_sched_scan_start(struct wlan_objmgr_pdev *pdev,
|
int wlan_cfg80211_sched_scan_start(struct wlan_objmgr_pdev *pdev,
|
||||||
struct net_device *dev,
|
struct net_device *dev,
|
||||||
struct cfg80211_sched_scan_request *request);
|
struct cfg80211_sched_scan_request *request,
|
||||||
|
uint8_t scan_backoff_multiplier);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* wlan_cfg80211_sched_scan_stop() - cfg80211 scheduled scan(pno) stop
|
* wlan_cfg80211_sched_scan_stop() - cfg80211 scheduled scan(pno) stop
|
||||||
|
@@ -140,7 +140,7 @@ static void wlan_cfg80211_pno_callback(struct wlan_objmgr_vdev *vdev,
|
|||||||
pdev_ospriv = wlan_pdev_get_ospriv(pdev);
|
pdev_ospriv = wlan_pdev_get_ospriv(pdev);
|
||||||
wlan_pdev_obj_unlock(pdev);
|
wlan_pdev_obj_unlock(pdev);
|
||||||
if (!pdev_ospriv) {
|
if (!pdev_ospriv) {
|
||||||
cfg80211_err("pdev_osprivis NULL");
|
cfg80211_err("pdev_ospriv is NULL");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
cfg80211_sched_scan_results(pdev_ospriv->wiphy);
|
cfg80211_sched_scan_results(pdev_ospriv->wiphy);
|
||||||
@@ -181,7 +181,8 @@ static QDF_STATUS wlan_cfg80211_is_pno_allowed(struct wlan_objmgr_vdev *vdev)
|
|||||||
|
|
||||||
int wlan_cfg80211_sched_scan_start(struct wlan_objmgr_pdev *pdev,
|
int wlan_cfg80211_sched_scan_start(struct wlan_objmgr_pdev *pdev,
|
||||||
struct net_device *dev,
|
struct net_device *dev,
|
||||||
struct cfg80211_sched_scan_request *request)
|
struct cfg80211_sched_scan_request *request,
|
||||||
|
uint8_t scan_backoff_multiplier)
|
||||||
{
|
{
|
||||||
struct pno_scan_req_params *req;
|
struct pno_scan_req_params *req;
|
||||||
int i, j, ret = 0;
|
int i, j, ret = 0;
|
||||||
@@ -342,6 +343,7 @@ int wlan_cfg80211_sched_scan_start(struct wlan_objmgr_pdev *pdev,
|
|||||||
*/
|
*/
|
||||||
wlan_config_sched_scan_plan(req, request);
|
wlan_config_sched_scan_plan(req, request);
|
||||||
req->delay_start_time = hdd_config_sched_scan_start_delay(request);
|
req->delay_start_time = hdd_config_sched_scan_start_delay(request);
|
||||||
|
req->scan_backoff_multiplier = scan_backoff_multiplier;
|
||||||
cfg80211_notice("Base scan interval: %d sec, scan cycles: %d, slow scan interval %d",
|
cfg80211_notice("Base scan interval: %d sec, scan cycles: %d, slow scan interval %d",
|
||||||
req->fast_scan_period, req->fast_scan_max_cycles,
|
req->fast_scan_period, req->fast_scan_max_cycles,
|
||||||
req->slow_scan_period);
|
req->slow_scan_period);
|
||||||
|
@@ -880,6 +880,7 @@ struct pno_nw_type {
|
|||||||
* @slow_scan_period: Slow scan period
|
* @slow_scan_period: Slow scan period
|
||||||
* @delay_start_time: delay in seconds to use before starting the first scan
|
* @delay_start_time: delay in seconds to use before starting the first scan
|
||||||
* @fast_scan_max_cycles: Fast scan max cycles
|
* @fast_scan_max_cycles: Fast scan max cycles
|
||||||
|
* @scan_backoff_multiplier: multiply fast scan period by this after max cycles
|
||||||
* @pno_channel_prediction: PNO channel prediction feature status
|
* @pno_channel_prediction: PNO channel prediction feature status
|
||||||
* @uint32_t active_dwell_time: active dwell time
|
* @uint32_t active_dwell_time: active dwell time
|
||||||
* @uint32_t passive_dwell_time: passive dwell time
|
* @uint32_t passive_dwell_time: passive dwell time
|
||||||
@@ -890,6 +891,11 @@ struct pno_nw_type {
|
|||||||
* @channel_prediction_full_scan: periodic timer upon which a full scan needs
|
* @channel_prediction_full_scan: periodic timer upon which a full scan needs
|
||||||
* to be triggered.
|
* to be triggered.
|
||||||
* @networks_list: Preferred network list
|
* @networks_list: Preferred network list
|
||||||
|
*
|
||||||
|
* E.g.
|
||||||
|
* { fast_scan_period=120, fast_scan_max_cycles=2,
|
||||||
|
* slow_scan_period=1800, scan_backoff_multiplier=2 }
|
||||||
|
* Result: 120s x2, 240s x2, 480s x2, 960s x2, 1800s xN
|
||||||
*/
|
*/
|
||||||
struct pno_scan_req_params {
|
struct pno_scan_req_params {
|
||||||
uint32_t networks_cnt;
|
uint32_t networks_cnt;
|
||||||
@@ -898,6 +904,7 @@ struct pno_scan_req_params {
|
|||||||
uint32_t slow_scan_period;
|
uint32_t slow_scan_period;
|
||||||
uint32_t delay_start_time;
|
uint32_t delay_start_time;
|
||||||
uint32_t fast_scan_max_cycles;
|
uint32_t fast_scan_max_cycles;
|
||||||
|
uint8_t scan_backoff_multiplier;
|
||||||
uint32_t active_dwell_time;
|
uint32_t active_dwell_time;
|
||||||
uint32_t passive_dwell_time;
|
uint32_t passive_dwell_time;
|
||||||
uint32_t pno_channel_prediction;
|
uint32_t pno_channel_prediction;
|
||||||
|
@@ -7020,6 +7020,7 @@ static QDF_STATUS send_pno_start_cmd_tlv(wmi_unified_t wmi_handle,
|
|||||||
cmd->slow_scan_period = pno->slow_scan_period;
|
cmd->slow_scan_period = pno->slow_scan_period;
|
||||||
cmd->delay_start_time = WMI_SEC_TO_MSEC(pno->delay_start_time);
|
cmd->delay_start_time = WMI_SEC_TO_MSEC(pno->delay_start_time);
|
||||||
cmd->fast_scan_max_cycles = pno->fast_scan_max_cycles;
|
cmd->fast_scan_max_cycles = pno->fast_scan_max_cycles;
|
||||||
|
cmd->scan_backoff_multiplier = pno->scan_backoff_multiplier;
|
||||||
WMI_LOGD("fast_scan_period: %d msec slow_scan_period: %d msec",
|
WMI_LOGD("fast_scan_period: %d msec slow_scan_period: %d msec",
|
||||||
cmd->fast_scan_period, cmd->slow_scan_period);
|
cmd->fast_scan_period, cmd->slow_scan_period);
|
||||||
WMI_LOGD("fast_scan_max_cycles: %d", cmd->fast_scan_max_cycles);
|
WMI_LOGD("fast_scan_max_cycles: %d", cmd->fast_scan_max_cycles);
|
||||||
|
在新工单中引用
屏蔽一个用户