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
This commit is contained in:
Dustin Brown
2017-04-24 10:47:42 -07:00
committed by snandini
parent 9d9fa19d83
commit f3351d97d7
4 changed files with 15 additions and 3 deletions

View File

@@ -117,12 +117,14 @@ struct scan_req {
* @pdev: pdev pointer
* @dev: Pointer network device
* @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
*/
int wlan_cfg80211_sched_scan_start(struct wlan_objmgr_pdev *pdev,
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

View File

@@ -140,7 +140,7 @@ static void wlan_cfg80211_pno_callback(struct wlan_objmgr_vdev *vdev,
pdev_ospriv = wlan_pdev_get_ospriv(pdev);
wlan_pdev_obj_unlock(pdev);
if (!pdev_ospriv) {
cfg80211_err("pdev_osprivis NULL");
cfg80211_err("pdev_ospriv is NULL");
return;
}
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,
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;
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);
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",
req->fast_scan_period, req->fast_scan_max_cycles,
req->slow_scan_period);

View File

@@ -880,6 +880,7 @@ struct pno_nw_type {
* @slow_scan_period: Slow scan period
* @delay_start_time: delay in seconds to use before starting the first scan
* @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
* @uint32_t active_dwell_time: active 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
* to be triggered.
* @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 {
uint32_t networks_cnt;
@@ -898,6 +904,7 @@ struct pno_scan_req_params {
uint32_t slow_scan_period;
uint32_t delay_start_time;
uint32_t fast_scan_max_cycles;
uint8_t scan_backoff_multiplier;
uint32_t active_dwell_time;
uint32_t passive_dwell_time;
uint32_t pno_channel_prediction;

View File

@@ -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->delay_start_time = WMI_SEC_TO_MSEC(pno->delay_start_time);
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",
cmd->fast_scan_period, cmd->slow_scan_period);
WMI_LOGD("fast_scan_max_cycles: %d", cmd->fast_scan_max_cycles);