qcacmn: Add 11d scan as wakeup event

11d scan is scheduled every one hour.The HOST can
be asleep when new country is found. So add 11d
scan as wakeup event.

Change-Id: I495c010b9c1224ab17fc0b082292befaa6b4f1e8
CRs-Fixed: 2057841
This commit is contained in:
Kiran Kumar Lokere 2017-06-15 14:17:25 -07:00 • committed by snandini
commit 4decc31941
5 changed files with 36 additions and 0 deletions

View file

@ -25,6 +25,8 @@
#include "wlan_pmo_obj_mgmt_public_struct.h"
#include <wlan_scan_ucfg_api.h>
#include "wlan_pmo_static_config.h"
#include "wlan_reg_services_api.h"
static inline int pmo_find_wow_ptrn_len(const char *ptrn)
{
@ -199,6 +201,10 @@ bool pmo_core_is_wow_applicable(struct wlan_objmgr_psoc *psoc)
return true;
}
if (wlan_reg_is_11d_scan_inprogress(psoc)) {
pmo_debug("11d scan is in progress, enabling wow");
return true;
}
/* Iterate through VDEV list */
for (vdev_id = 0; vdev_id < WLAN_UMAC_PSOC_MAX_VDEVS; vdev_id++) {
vdev = pmo_psoc_get_vdev(psoc, vdev_id);

View file

@ -2008,6 +2008,7 @@ QDF_STATUS wlan_regulatory_psoc_obj_created_notification(
soc_reg_obj->dfs_enabled = true;
soc_reg_obj->set_fcc_channel = false;
soc_reg_obj->band_capability = BAND_ALL;
soc_reg_obj->enable_11d_supp = false;
soc_reg_obj->indoor_chan_enabled = true;
soc_reg_obj->master_vdev_cnt = 0;
soc_reg_obj->vdev_cnt_11d = 0;
@ -2922,6 +2923,21 @@ QDF_STATUS reg_program_chan_list(struct wlan_objmgr_psoc *psoc,
return QDF_STATUS_SUCCESS;
}
bool reg_is_11d_scan_inprogress(struct wlan_objmgr_psoc *psoc)
{
struct wlan_regulatory_psoc_priv_obj *psoc_priv_obj;
psoc_priv_obj = wlan_objmgr_psoc_get_comp_private_obj(psoc,
WLAN_UMAC_COMP_REGULATORY);
if (!psoc_priv_obj) {
reg_err("reg psoc private obj is NULL");
return false;
}
return psoc_priv_obj->enable_11d_supp;
}
QDF_STATUS reg_get_current_cc(struct wlan_objmgr_psoc *psoc,
struct cc_regdmn_s *rd)
{

View file

@ -318,6 +318,8 @@ struct chan_change_cbk_entry {
void *arg;
};
bool reg_is_11d_scan_inprogress(struct wlan_objmgr_psoc *psoc);
enum country_src reg_get_cc_and_src(struct wlan_objmgr_psoc *psoc,
uint8_t *alpha2);

View file

@ -386,6 +386,13 @@ bool wlan_reg_11d_enabled_on_host(struct wlan_objmgr_psoc *psoc);
QDF_STATUS wlan_reg_get_chip_mode(struct wlan_objmgr_pdev *pdev,
uint32_t *chip_mode);
/**
* wlan_reg_is_11d_scan_inprogress() - checks 11d scan status
* @psoc: psoc ptr
*
* Return: bool
*/
bool wlan_reg_is_11d_scan_inprogress(struct wlan_objmgr_psoc *psoc);
/**
* wlan_reg_get_freq_range() - Get 2GHz and 5GHz frequency range
* @pdev: pdev pointer

View file

@ -452,6 +452,11 @@ QDF_STATUS wlan_reg_get_chip_mode(struct wlan_objmgr_pdev *pdev,
return QDF_STATUS_SUCCESS;
}
bool wlan_reg_is_11d_scan_inprogress(struct wlan_objmgr_psoc *psoc)
{
return reg_is_11d_scan_inprogress(psoc);
}
QDF_STATUS wlan_reg_get_freq_range(struct wlan_objmgr_pdev *pdev,
uint32_t *low_2g,
uint32_t *high_2g,