qcacmn: Add CFG/INI items to extscan component

Add following extscan CFG items to common ext scan component

1.CFG_EXTSCAN_PASSIVE_MAX_CHANNEL_TIME
2.CFG_EXTSCAN_PASSIVE_MIN_CHANNEL_TIME
3.CFG_EXTSCAN_ACTIVE_MAX_CHANNEL_TIME
4.CFG_EXTSCAN_ACTIVE_MIN_CHANNEL_TIME
5.CFG_EXTSCAN_ALLOWED

Change-Id: Ib4e1acc2d1535f91a8dc084305cdf01f5d7f57f1
CRs-Fixed: 2292754
This commit is contained in:
Harprit Chhabada
2018-08-03 12:30:34 -07:00
committed by nshrivas
parent 44a7ab73f9
commit 20ffac7774
7 changed files with 538 additions and 2 deletions

View File

@@ -25,10 +25,12 @@
#include <wlan_scan_cfg.h> #include <wlan_scan_cfg.h>
#include "cfg_dp.h" #include "cfg_dp.h"
#include <wlan_extscan_cfg.h>
#define CFG_CONVERGED_ALL \ #define CFG_CONVERGED_ALL \
CFG_SCAN_ALL \ CFG_SCAN_ALL \
CFG_DP CFG_DP \
CFG_EXTSCAN_ALL
#endif /* __CFG_CONVERGED_H */ #endif /* __CFG_CONVERGED_H */

View File

@@ -269,6 +269,21 @@ struct pno_def_config {
struct nlo_mawc_params mawc_params; struct nlo_mawc_params mawc_params;
}; };
/**
* struct extscan_def_config - def configuration for EXTSCAN
* @extscan_enabled: enable extscan
* @extscan_passive_max_chn_time: max passive channel time
* @extscan_passive_min_chn_time: min passive channel time
* @extscan_active_max_chn_time: max active channel time
* @extscan_active_min_chn_time: min active channel time
*/
struct extscan_def_config {
bool extscan_enabled;
uint32_t extscan_passive_max_chn_time;
uint32_t extscan_passive_min_chn_time;
uint32_t extscan_active_max_chn_time;
uint32_t extscan_active_min_chn_time;
};
/** /**
* struct scan_default_params - default scan parameters to be used * struct scan_default_params - default scan parameters to be used
@@ -456,6 +471,7 @@ struct scan_cb {
* @global_evhandlers: registered scan event handlers * @global_evhandlers: registered scan event handlers
* @pdev_info: pointer to pdev info * @pdev_info: pointer to pdev info
* @pno_cfg: default pno configuration * @pno_cfg: default pno configuration
* @extscan_cfg: default extscan configuration
* @ie_whitelist: default ie whitelist attrs * @ie_whitelist: default ie whitelist attrs
* @bt_a2dp_enabled: if bt a2dp is enabled * @bt_a2dp_enabled: if bt a2dp is enabled
* @miracast_enabled: miracast enabled * @miracast_enabled: miracast enabled
@@ -476,6 +492,9 @@ struct wlan_scan_obj {
struct global_scan_ev_handlers global_evhandlers; struct global_scan_ev_handlers global_evhandlers;
struct pdev_scan_info pdev_info[WLAN_UMAC_MAX_PDEVS]; struct pdev_scan_info pdev_info[WLAN_UMAC_MAX_PDEVS];
struct pno_def_config pno_cfg; struct pno_def_config pno_cfg;
#ifdef FEATURE_WLAN_EXTSCAN
struct extscan_def_config extscan_cfg;
#endif
struct probe_req_whitelist_attr ie_whitelist; struct probe_req_whitelist_attr ie_whitelist;
bool bt_a2dp_enabled; bool bt_a2dp_enabled;
bool miracast_enabled; bool miracast_enabled;

View File

@@ -0,0 +1,134 @@
/*
* Copyright (c) 2012-2018 The Linux Foundation. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
* above copyright notice and this permission notice appear in all
* copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
* WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
* AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
* DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
* PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
/**
* DOC: This file contains APIs of EXTSCAN component
*/
#ifndef _WLAN_EXTSCAN_API_H_
#define _WLAN_EXTSCAN_API_H_
#include <wlan_objmgr_psoc_obj.h>
#include <wlan_objmgr_pdev_obj.h>
#include <wlan_objmgr_vdev_obj.h>
#include "../../core/src/wlan_scan_main.h"
#ifdef FEATURE_WLAN_EXTSCAN
/**
* extscan_get_enable() - API to get extscan enable value
* @psoc: pointer to psoc object
*
* Return: true if enabled else false.
*/
bool extscan_get_enable(struct wlan_objmgr_psoc *psoc);
/**
* extscan_get_passive_max_time() - API to get passive
* max channel time
* @psoc: pointer to psoc object
* @passive_max_chn_time: extscan passive max channel time
*
* Return: none
*/
void extscan_get_passive_max_time(struct wlan_objmgr_psoc *psoc,
uint32_t *passive_max_chn_time);
/**
* extscan_get_active_max_time() - API to get active
* max channel time
* @psoc: pointer to psoc object
* @active_max_chn_time: extscan active max channel time
*
* Return: none
*/
void extscan_get_active_max_time(struct wlan_objmgr_psoc *psoc,
uint32_t *active_max_chn_time);
/**
* extscan_get_active_min_time() - API to set active
* min channel time
* @psoc: pointer to psoc object
* @active_min_chn_time: extscan active min channel time
*
* Return: none
*/
void extscan_get_active_min_time(struct wlan_objmgr_psoc *psoc,
uint32_t *active_min_chn_time);
/**
* wlan_extscan_global_init() - Initialize extscan
* @psoc: pointer to psoc object
* @scan_obj: pointer to scan object
*
* Return: QDF_STATUS
*/
QDF_STATUS
wlan_extscan_global_init(struct wlan_objmgr_psoc *psoc,
struct wlan_scan_obj *scan_obj);
/**
* wlan_extscan_global_deinit() - Deinitialize extscan
* @psoc: pointer to psoc object
* @scan_obj: pointer to scan object
*
* Return: QDF_STATUS
*/
QDF_STATUS
wlan_extscan_global_deinit(void);
#else
static inline
bool cfg_extscan_get_enable(struct wlan_objmgr_psoc *psoc)
{
return false;
}
static inline
void cfg_extscan_get_passive_max_time(struct wlan_objmgr_psoc *psoc,
uint32_t *passive_max_chn_time)
{
}
static inline
void cfg_extscan_get_active_max_time(struct wlan_objmgr_psoc *psoc,
uint32_t *active_max_chn_time)
{
}
static inline
void cfg_extscan_get_active_min_time(struct wlan_objmgr_psoc *psoc,
uint32_t *active_min_chn_time)
{
}
static inline QDF_STATUS
wlan_extscan_global_init(struct wlan_objmgr_psoc *psoc,
struct wlan_scan_obj *scan_obj)
{
return QDF_STATUS_SUCCESS;
}
static inline QDF_STATUS wlan_extscan_global_deinit(void)
{
return QDF_STATUS_SUCCESS;
}
#endif
#endif

View File

@@ -0,0 +1,159 @@
/*
* Copyright (c) 2012-2018 The Linux Foundation. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
* above copyright notice and this permission notice appear in all
* copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
* WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
* AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
* DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
* PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
/**
* DOC: This file contains centralized definitions of EXTSCAN component
*/
#ifndef _WLAN_EXTSCAN_CONFIG_H_
#define _WLAN_EXTSCAN_CONFIG_H_
#include "cfg_define.h"
#ifdef FEATURE_WLAN_EXTSCAN
/*
* <ini>
* gExtScanPassiveMaxChannelTime - Set max channel time for external
* passive scan
* @Min: 0
* @Max: 500
* @Default: 110
*
* This ini is used to set maximum channel time in secs spent in
* external passive scan
*
* Related: None
*
* Supported Feature: Scan
*
* Usage: External
*
* </ini>
*/
#define CFG_EXTSCAN_PASSIVE_MAX_CHANNEL_TIME CFG_INI_UINT(\
"gExtScanPassiveMaxChannelTime",\
0, 500, 110, CFG_VALUE_OR_DEFAULT,\
"ext scan passive max channel time")
/*
* <ini>
* gExtScanPassiveMinChannelTime - Set min channel time for external
* passive scan
* @Min: 0
* @Max: 500
* @Default: 60
*
* This ini is used to set minimum channel time in secs spent in
* external passive scan
*
* Related: None
*
* Supported Feature: Scan
*
* Usage: External
*
* </ini>
*/
#define CFG_EXTSCAN_PASSIVE_MIN_CHANNEL_TIME CFG_INI_UINT(\
"gExtScanPassiveMinChannelTime",\
0, 500, 60, CFG_VALUE_OR_DEFAULT,\
"ext scan passive min channel time")
/*
* <ini>
* gExtScanActiveMaxChannelTime - Set min channel time for external
* active scan
* @Min: 0
* @Max: 110
* @Default: 40
*
* This ini is used to set maximum channel time in secs spent in
* external active scan
*
* Related: None
*
* Supported Feature: Scan
*
* Usage: External
*
* </ini>
*/
#define CFG_EXTSCAN_ACTIVE_MAX_CHANNEL_TIME CFG_INI_UINT(\
"gExtScanActiveMaxChannelTime",\
0, 110, 40, CFG_VALUE_OR_DEFAULT,\
"ext scan active max channel time")
/*
* <ini>
* gExtScanActiveMinChannelTime - Set min channel time for external
* active scan
* @Min: 0
* @Max: 110
* @Default: 20
*
* This ini is used to set minimum channel time in secs spent in
* external active scan
*
* Related: None
*
* Supported Feature: Scan
*
* Usage: External
*
* </ini>
*/
#define CFG_EXTSCAN_ACTIVE_MIN_CHANNEL_TIME CFG_INI_UINT(\
"gExtScanActiveMinChannelTime",\
0, 110, 20, CFG_VALUE_OR_DEFAULT,\
"ext scan active min channel time")
/*
* <ini>
* gExtScanEnable - Enable external scan
* @Min: 0
* @Max: 1
* @Default: 1
*
* This ini is used to control enabling of external scan
* feature.
*
* Related: None
*
* Supported Feature: Scan
*
* Usage: External
*
* </ini>
*/
#define CFG_EXTSCAN_ALLOWED CFG_INI_BOOL(\
"gExtScanEnable",\
1,\
"ext scan enable")
#define CFG_EXTSCAN_ALL \
CFG(CFG_EXTSCAN_PASSIVE_MAX_CHANNEL_TIME) \
CFG(CFG_EXTSCAN_PASSIVE_MIN_CHANNEL_TIME) \
CFG(CFG_EXTSCAN_ACTIVE_MAX_CHANNEL_TIME) \
CFG(CFG_EXTSCAN_ACTIVE_MIN_CHANNEL_TIME) \
CFG(CFG_EXTSCAN_ALLOWED)
#else
#define CFG_EXTSCAN_ALL
#endif
#endif

View File

@@ -0,0 +1,102 @@
/*
* Copyright (c) 2012-2018 The Linux Foundation. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
* above copyright notice and this permission notice appear in all
* copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
* WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
* AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
* DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
* PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
/**
* DOC: This file contains UCFG APIs of EXTSCAN component
*/
#ifndef _WLAN_EXTSCAN_UCFG_API_H_
#define _WLAN_EXTSCAN_UCFG_API_H_
#include "wlan_extscan_api.h"
#include <wlan_objmgr_psoc_obj.h>
#include <wlan_objmgr_pdev_obj.h>
#include <wlan_objmgr_vdev_obj.h>
#ifdef FEATURE_WLAN_EXTSCAN
/**
* ucfg_extscan_get_enable() - API to get extscan enable value
* @psoc: pointer to psoc object
*
* Return: true if enabled else false.
*/
static inline
bool ucfg_extscan_get_enable(struct wlan_objmgr_psoc *psoc)
{
return extscan_get_enable(psoc);
}
/**
* ucfg_extscan_get_passive_max_time() - API to get passive
* max channel time
* @psoc: pointer to psoc object
* @passive_max_chn_time: extscan passive max channel time
*
* Return: none
*/
static inline
void ucfg_extscan_get_passive_max_time(struct wlan_objmgr_psoc *psoc,
uint32_t *passive_max_chn_time)
{
extscan_get_passive_max_time(psoc,
passive_max_chn_time);
}
/**
* ucfg_extscan_get_active_max_time() - API to get active
* max channel time
* @psoc: pointer to psoc object
* @active_max_chn_time: extscan active max channel time
*
* Return: none
*/
static inline
void ucfg_extscan_get_active_max_time(struct wlan_objmgr_psoc *psoc,
uint32_t *active_max_chn_time)
{
extscan_get_active_max_time(psoc,
active_max_chn_time);
}
/**
* ucfg_extscan_get_active_min_time() - API to set active
* min channel time
* @psoc: pointer to psoc object
* @active_min_chn_time: extscan active min channel time
*
* Return: none
*/
static inline
void ucfg_extscan_get_active_min_time(struct wlan_objmgr_psoc *psoc,
uint32_t *active_min_chn_time)
{
extscan_get_active_min_time(psoc,
active_min_chn_time);
}
#else
static inline
bool ucfg_extscan_get_enable(struct wlan_objmgr_psoc *psoc)
{
return false;
}
#endif
#endif

View File

@@ -0,0 +1,106 @@
/*
* Copyright (c) 2012-2018 The Linux Foundation. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
* above copyright notice and this permission notice appear in all
* copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
* WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
* AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
* DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
* PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
/*
* DOC: This file contains all EXTSSCAN component's APIs
*/
#include "wlan_extscan_api.h"
#include "cfg_ucfg_api.h"
bool extscan_get_enable(struct wlan_objmgr_psoc *psoc)
{
struct wlan_scan_obj *scan_obj;
scan_obj = wlan_psoc_get_scan_obj(psoc);
if (!scan_obj) {
scm_err("Failed to get scan object");
return false;
}
return scan_obj->extscan_cfg.extscan_enabled;
}
void extscan_get_passive_max_time(struct wlan_objmgr_psoc *psoc,
uint32_t *passive_max_chn_time)
{
struct wlan_scan_obj *scan_obj;
scan_obj = wlan_psoc_get_scan_obj(psoc);
if (!scan_obj) {
scm_err("Failed to get scan object");
return;
}
*passive_max_chn_time =
scan_obj->extscan_cfg.extscan_passive_max_chn_time;
}
void extscan_get_active_max_time(struct wlan_objmgr_psoc *psoc,
uint32_t *active_max_chn_time)
{
struct wlan_scan_obj *scan_obj;
scan_obj = wlan_psoc_get_scan_obj(psoc);
if (!scan_obj) {
scm_err("Failed to get scan object");
return;
}
*active_max_chn_time =
scan_obj->extscan_cfg.extscan_active_max_chn_time;
}
void extscan_get_active_min_time(struct wlan_objmgr_psoc *psoc,
uint32_t *active_min_chn_time)
{
struct wlan_scan_obj *scan_obj;
scan_obj = wlan_psoc_get_scan_obj(psoc);
if (!scan_obj) {
scm_err("Failed to get scan object");
return;
}
*active_min_chn_time =
scan_obj->extscan_cfg.extscan_active_min_chn_time;
}
QDF_STATUS
wlan_extscan_global_init(struct wlan_objmgr_psoc *psoc,
struct wlan_scan_obj *scan_obj)
{
struct extscan_def_config *extscan_def = &scan_obj->extscan_cfg;
extscan_def->extscan_enabled = true;
extscan_def->extscan_passive_max_chn_time =
cfg_get(psoc, CFG_EXTSCAN_PASSIVE_MAX_CHANNEL_TIME);
extscan_def->extscan_passive_min_chn_time =
cfg_get(psoc, CFG_EXTSCAN_PASSIVE_MIN_CHANNEL_TIME);
extscan_def->extscan_active_max_chn_time =
cfg_get(psoc, CFG_EXTSCAN_ACTIVE_MAX_CHANNEL_TIME);
extscan_def->extscan_active_min_chn_time =
cfg_get(psoc, CFG_EXTSCAN_ACTIVE_MIN_CHANNEL_TIME);
return QDF_STATUS_SUCCESS;
}
QDF_STATUS
wlan_extscan_global_deinit()
{
return QDF_STATUS_SUCCESS;
}

View File

@@ -41,6 +41,7 @@
#include <wlan_policy_mgr_api.h> #include <wlan_policy_mgr_api.h>
#endif #endif
#include "cfg_ucfg_api.h" #include "cfg_ucfg_api.h"
#include "wlan_extscan_api.h"
QDF_STATUS ucfg_scan_register_bcn_cb(struct wlan_objmgr_psoc *psoc, QDF_STATUS ucfg_scan_register_bcn_cb(struct wlan_objmgr_psoc *psoc,
update_beacon_cb cb, enum scan_cb_type type) update_beacon_cb cb, enum scan_cb_type type)
@@ -1476,9 +1477,22 @@ wlan_scan_global_init(struct wlan_objmgr_psoc *psoc,
/* init scan id seed */ /* init scan id seed */
qdf_atomic_init(&scan_obj->scan_ids); qdf_atomic_init(&scan_obj->scan_ids);
/* init extscan */
wlan_extscan_global_init(psoc, scan_obj);
return wlan_pno_global_init(&scan_obj->pno_cfg); return wlan_pno_global_init(&scan_obj->pno_cfg);
} }
static void
wlan_scan_global_deinit(struct wlan_objmgr_psoc *psoc)
{
struct wlan_scan_obj *scan_obj;
scan_obj = wlan_psoc_get_scan_obj(psoc);
wlan_pno_global_deinit(&scan_obj->pno_cfg);
wlan_extscan_global_deinit();
}
static QDF_STATUS static QDF_STATUS
scm_remove_scan_event_handler(struct pdev_scan_ev_handler *pdev_ev_handler, scm_remove_scan_event_handler(struct pdev_scan_ev_handler *pdev_ev_handler,
struct cb_handler *entry) struct cb_handler *entry)
@@ -2119,7 +2133,7 @@ ucfg_scan_psoc_close(struct wlan_objmgr_psoc *psoc)
} }
ucfg_scan_unregister_pmo_handler(); ucfg_scan_unregister_pmo_handler();
qdf_spinlock_destroy(&scan_obj->lock); qdf_spinlock_destroy(&scan_obj->lock);
wlan_pno_global_deinit(&scan_obj->pno_cfg); wlan_scan_global_deinit(psoc);
return QDF_STATUS_SUCCESS; return QDF_STATUS_SUCCESS;
} }