qcacmn: Scan module init and deinit

Scan module init and deinit

Change-Id: Id3f4b88796c1145f487c02785084320ee8b21037
CRs-Fixed: 2008137
このコミットが含まれているのは:
Sandeep Puligilla
2016-12-27 19:58:17 -08:00
committed by qcabuildsw
コミット 2e1088dd4b
5個のファイルの変更200行の追加16行の削除

ファイルの表示

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2016 The Linux Foundation. All rights reserved.
* Copyright (c) 2016-2017 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
@@ -19,16 +19,3 @@
/**
* DOC: defines driver functions interfacing with linux kernel
*/
#include "wlan_cfg80211.h"
int wlan_cfg80211_scan(struct wiphy *wiphy,
#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 6, 0))
struct net_device *dev,
#endif
struct cfg80211_scan_request *request)
{
qdf_print("%s \n", __func__);
return 0;
}

ファイルの表示

@@ -19,4 +19,17 @@
/*
* DOC: contains scan cache api and functionality
*/
#include <wlan_scan_ucfg_api.h>
#include "wlan_scan_cache_db.h"
#include <qdf_types.h>
#include <qdf_status.h>
QDF_STATUS scm_db_init(struct wlan_objmgr_psoc *psoc)
{
return QDF_STATUS_SUCCESS;
}
QDF_STATUS scm_db_deinit(struct wlan_objmgr_psoc *psoc)
{
return QDF_STATUS_SUCCESS;
}

ファイルの表示

@@ -19,4 +19,54 @@
/*
* DOC: contains core scan function definitions
*/
#include <wlan_scan_ucfg_api.h>
#include <wlan_scan_utils_api.h>
#include "wlan_scan_main.h"
QDF_STATUS wlan_scan_psoc_created_notification(struct wlan_objmgr_psoc *psoc,
void *arg_list)
{
struct wlan_scan_obj *scan_obj;
QDF_STATUS status = QDF_STATUS_SUCCESS;
scan_obj = qdf_mem_malloc(sizeof(struct wlan_scan_obj));
if (scan_obj == NULL) {
scm_err("Failed to allocate memory");
return QDF_STATUS_E_NOMEM;
}
/* Attach scan private date to psoc */
status = wlan_objmgr_psoc_component_obj_attach(psoc,
WLAN_UMAC_COMP_SCAN, (void *)scan_obj,
QDF_STATUS_SUCCESS);
if (QDF_IS_STATUS_ERROR(status))
scm_err("Failed to attach psoc scan component");
else
scm_info("Scan object attach to psoc successful");
return status;
}
QDF_STATUS wlan_scan_psoc_destroyed_notification(
struct wlan_objmgr_psoc *psoc,
void *arg_list)
{
void *scan_obj = NULL;
QDF_STATUS status = QDF_STATUS_SUCCESS;
scan_obj = wlan_objmgr_psoc_get_comp_private_obj(psoc,
WLAN_UMAC_COMP_SCAN);
if (!scan_obj) {
scm_err("Failed to detach scan in psoc ctx");
return QDF_STATUS_E_FAILURE;
}
status = wlan_objmgr_psoc_component_obj_detach(psoc,
WLAN_UMAC_COMP_SCAN, scan_obj);
if (QDF_IS_STATUS_ERROR(status))
scm_err("Failed to detach psoc scan component");
qdf_mem_free(scan_obj);
return status;
}

ファイルの表示

@@ -24,7 +24,8 @@
#define _WLAN_SCAN_MAIN_API_H_
#include <qdf_atomic.h>
#include <wlan_scan_structs.h>
#include <wlan_objmgr_vdev_obj.h>
#include <wlan_scan_public_structs.h>
#include "wlan_scan_cache_db.h"
#define scm_log(level, args...) \
@@ -402,6 +403,6 @@ QDF_STATUS wlan_scan_psoc_created_notification(struct wlan_objmgr_psoc *psoc,
*
* Return: QDF_STATUS
*/
QDF_STATUS wlan_scan_psoc_deleted_notification(struct wlan_objmgr_psoc *psoc,
QDF_STATUS wlan_scan_psoc_destroyed_notification(struct wlan_objmgr_psoc *psoc,
void *arg_list);
#endif

ファイルの表示

@@ -19,3 +19,136 @@
/*
* DOC: contains scan north bound interface definitions
*/
#include <wlan_cmn.h>
#include <wlan_scan_utils_api.h>
#include <wlan_scan_ucfg_api.h>
#include "../../core/src/wlan_scan_main.h"
#include <wlan_objmgr_global_obj.h>
QDF_STATUS ucfg_scan_init(void)
{
QDF_STATUS status;
status = wlan_objmgr_register_psoc_create_handler(WLAN_UMAC_COMP_SCAN,
wlan_scan_psoc_created_notification, NULL);
if (QDF_IS_STATUS_ERROR(status)) {
scm_err("Failed to register psoc create handler");
goto fail_create_psoc;
}
status = wlan_objmgr_register_psoc_destroy_handler(WLAN_UMAC_COMP_SCAN,
wlan_scan_psoc_destroyed_notification, NULL);
if (QDF_IS_STATUS_SUCCESS(status)) {
scm_info("scan create and delete handler registered with objmgr");
return QDF_STATUS_SUCCESS;
}
scm_err("Failed to create psoc delete handler");
wlan_objmgr_unregister_psoc_create_handler(WLAN_UMAC_COMP_SCAN,
wlan_scan_psoc_created_notification, NULL);
fail_create_psoc:
return status;
}
QDF_STATUS ucfg_scan_deinit(void)
{
QDF_STATUS status = QDF_STATUS_SUCCESS;
status = wlan_objmgr_unregister_psoc_create_handler(WLAN_UMAC_COMP_SCAN,
wlan_scan_psoc_created_notification, NULL);
if (status != QDF_STATUS_SUCCESS)
scm_err("Failed to unregister psoc create handler");
status = wlan_objmgr_unregister_psoc_destroy_handler(
WLAN_UMAC_COMP_SCAN,
wlan_scan_psoc_destroyed_notification, NULL);
if (status != QDF_STATUS_SUCCESS)
scm_err("Failed to unregister psoc delete handler");
return status;
}
static QDF_STATUS wlan_scan_global_init(struct wlan_scan_obj *scan_obj)
{
scan_obj->scan_def.active_dwell = SCAN_ACTIVE_DWELL_TIME;
scan_obj->scan_def.passive_dwell = SCAN_PASSIVE_DWELL_TIME;
scan_obj->scan_def.max_rest_time = SCAN_MAX_REST_TIME;
scan_obj->scan_def.min_rest_time = SCAN_MIN_REST_TIME;
scan_obj->scan_def.conc_active_dwell = SCAN_CONC_ACTIVE_DWELL_TIME;
scan_obj->scan_def.conc_passive_dwell = SCAN_CONC_PASSIVE_DWELL_TIME;
scan_obj->scan_def.conc_max_rest_time = SCAN_CONC_MAX_REST_TIME;
scan_obj->scan_def.conc_min_rest_time = SCAN_CONC_MIN_REST_TIME;
scan_obj->scan_def.conc_idle_time = SCAN_CONC_IDLE_TIME;
scan_obj->scan_def.repeat_probe_time = SCAN_REPEAT_PROBE_TIME;
scan_obj->scan_def.probe_spacing_time = SCAN_PROBE_SPACING_TIME;
scan_obj->scan_def.probe_delay = SCAN_PROBE_DELAY;
scan_obj->scan_def.burst_duration = SCAN_BURST_DURATION;
scan_obj->scan_def.max_scan_time = SCAN_MAX_SCAN_TIME;
scan_obj->scan_def.num_probes = SCAN_NUM_PROBES;
scan_obj->scan_def.scan_cache_aging_time = SCAN_CACHE_AGING_TIME;
scan_obj->scan_def.max_bss_per_pdev = SCAN_MAX_BSS_PDEV;
scan_obj->scan_def.max_num_scan_allowed = SCAN_MAX_NUM_SCAN_ALLOWED;
scan_obj->scan_def.scan_priority = SCAN_PRIORITY;
scan_obj->scan_def.idle_time = SCAN_NETWORK_IDLE_TIMEOUT;
/* scan contrl flags */
scan_obj->scan_def.scan_f_passive = true;
scan_obj->scan_def.scan_f_2ghz = true;
scan_obj->scan_def.scan_f_5ghz = true;
/* scan event flags */
scan_obj->scan_def.scan_ev_started = true;
scan_obj->scan_def.scan_ev_completed = true;
scan_obj->scan_def.scan_ev_bss_chan = true;
scan_obj->scan_def.scan_ev_foreign_chan = true;
scan_obj->scan_def.scan_ev_dequeued = true;
qdf_atomic_init(&scan_obj->scan_ids);
return QDF_STATUS_SUCCESS;
}
QDF_STATUS ucfg_scan_psoc_enable(struct wlan_objmgr_psoc *psoc)
{
return QDF_STATUS_SUCCESS;
}
QDF_STATUS ucfg_scan_psoc_disable(struct wlan_objmgr_psoc *psoc)
{
return QDF_STATUS_SUCCESS;
}
QDF_STATUS ucfg_scan_psoc_open(struct wlan_objmgr_psoc *psoc)
{
QDF_STATUS status = QDF_STATUS_SUCCESS;
struct wlan_scan_obj *scan_obj;
scan_obj = wlan_psoc_get_scan_obj(psoc);
if (scan_obj == NULL) {
scm_err("Failed to get scan object");
return QDF_STATUS_E_FAILURE;
}
/* Initialize the scan Globals */
wlan_scan_global_init(scan_obj);
scm_db_init(psoc);
return status;
}
QDF_STATUS ucfg_scan_psoc_close(struct wlan_objmgr_psoc *psoc)
{
QDF_STATUS status = QDF_STATUS_SUCCESS;
struct wlan_scan_obj *scan_obj;
scan_obj = wlan_psoc_get_scan_obj(psoc);
if (scan_obj == NULL) {
scm_err("Failed to get scan object");
return QDF_STATUS_E_FAILURE;
}
scm_db_deinit(psoc);
return status;
}