qcacld-3.0: Add legacy mlme component

Add legacy mlme component main APIs and init/deinit from HDD.

Change-Id: I3d3de3bca9a4fd0896a9d6a076b5e60bb1a5ca83
CRs-Fixed: 2272959
This commit is contained in:
Sandeep Puligilla 2018-05-17 19:23:41 -07:00 committed by nshrivas
parent 0a4f4e598f
commit c5609d5bdc
5 changed files with 275 additions and 1 deletions

10
Kbuild
View File

@ -726,6 +726,14 @@ IPA_OBJS := $(IPA_DIR)/dispatcher/src/wlan_ipa_ucfg_api.o \
$(IPA_DIR)/core/src/wlan_ipa_rm.o
endif
######## MLME ##############
MLME_DIR := components/mlme
MLME_INC := -I$(WLAN_ROOT)/$(MLME_DIR)/core/inc \
-I$(WLAN_ROOT)/$(MLME_DIR)/dispatcher/inc
MLME_OBJS := $(MLME_DIR)/core/src/wlan_mlme_main.o
########## CLD TARGET_IF #######
CLD_TARGET_IF_DIR := components/target_if
@ -1433,6 +1441,7 @@ INCS += $(PLD_INC)
INCS += $(OCB_INC)
INCS += $(IPA_INC)
INCS += $(MLME_INC)
ifeq ($(CONFIG_REMOVE_PKT_LOG), n)
INCS += $(PKTLOG_INC)
@ -1509,6 +1518,7 @@ OBJS += $(NLINK_OBJS)
OBJS += $(PTT_OBJS)
OBJS += $(UMAC_SER_OBJS)
OBJS += $(PLD_OBJS)
OBJS += $(MLME_OBJS)
ifeq ($(CONFIG_WLAN_FEATURE_DSRC), y)
OBJS += $(OCB_OBJS)

View File

@ -0,0 +1,89 @@
/*
* Copyright (c) 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: declare utility API related to the pmo component
* called by other components
*/
#ifndef _WLAN_MLME_MAIN_H_
#define _WLAN_MLME_MAIN_H_
#include <wlan_mlme_public_struct.h>
#include <qdf_atomic.h>
#include <wlan_objmgr_psoc_obj.h>
#include <wlan_objmgr_global_obj.h>
#include <wlan_cmn.h>
#include <qdf_time.h>
#include <qdf_list.h>
#define mlme_fatal(params...) QDF_TRACE_FATAL(QDF_MODULE_ID_MLME, params)
#define mlme_err(params...) QDF_TRACE_ERROR(QDF_MODULE_ID_MLME, params)
#define mlme_warn(params...) QDF_TRACE_WARN(QDF_MODULE_ID_MLME, params)
#define mlme_info(params...) QDF_TRACE_INFO(QDF_MODULE_ID_MLME, params)
#define mlme_debug(params...) QDF_TRACE_DEBUG(QDF_MODULE_ID_MLME, params)
/**
* struct wlan_mlme_psoc_obj -MLME psoc priv object
* @cfg: cfg items
*/
struct wlan_mlme_psoc_obj {
struct wlan_mlme_cfg cfg;
};
/**
* mlme_init() - initialize mlme_ctx context.
*
* This function initializes the mlme context.
*
* Return: QDF_STATUS_SUCCESS - in case of success else return error
*/
QDF_STATUS mlme_init(void);
/**
* mlme_deinit() - De initialize mlme_ctx context.
*
* This function De initializes mlme contex.
*
* Return: QDF_STATUS_SUCCESS - in case of success else return error
*/
QDF_STATUS mlme_deinit(void);
/**
* mlme_psoc_object_created_notification(): mlme psoc create handler
* @psoc: psoc which is going to created by objmgr
* @arg: argument for vdev create handler
*
* Register this api with objmgr to detect psoc is created
*
* Return QDF_STATUS status in case of success else return error
*/
QDF_STATUS mlme_psoc_object_created_notification(
struct wlan_objmgr_psoc *psoc, void *arg);
/**
* mlme_psoc_object_destroyed_notification(): mlme psoc delete handler
* @psoc: psoc which is going to delete by objmgr
* @arg: argument for vdev delete handler
*
* Register this api with objmgr to detect psoc is deleted
*
* Return QDF_STATUS status in case of success else return error
*/
QDF_STATUS mlme_psoc_object_destroyed_notification(
struct wlan_objmgr_psoc *psoc, void *arg);
#endif

View File

@ -0,0 +1,135 @@
/*
* Copyright (c) 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: define utility API related to the mlme component
* called by other components
*/
#include "wlan_mlme_main.h"
/**
* wlan_psoc_get_mlme_obj() - private API to get mlme object from psoc
* @psoc: psoc object
*
* Return: mlme object
*/
static inline struct wlan_mlme_psoc_obj *
wlan_psoc_get_mlme_obj(struct wlan_objmgr_psoc *psoc)
{
struct wlan_mlme_psoc_obj *mlme_obj;
mlme_obj = (struct wlan_mlme_psoc_obj *)
wlan_objmgr_psoc_get_comp_private_obj(psoc,
WLAN_UMAC_COMP_MLME);
return mlme_obj;
}
QDF_STATUS mlme_init(void)
{
QDF_STATUS status;
status = wlan_objmgr_register_psoc_create_handler(
WLAN_UMAC_COMP_MLME,
mlme_psoc_object_created_notification,
NULL);
if (status != QDF_STATUS_SUCCESS) {
mlme_err("unable to register psoc create handle");
return status;
}
status = wlan_objmgr_register_psoc_destroy_handler(
WLAN_UMAC_COMP_MLME,
mlme_psoc_object_destroyed_notification,
NULL);
if (status != QDF_STATUS_SUCCESS)
mlme_err("unable to register psoc create handle");
return status;
}
QDF_STATUS mlme_deinit(void)
{
QDF_STATUS status;
status = wlan_objmgr_unregister_psoc_create_handler(
WLAN_UMAC_COMP_MLME,
mlme_psoc_object_created_notification,
NULL);
if (status != QDF_STATUS_SUCCESS) {
mlme_err("unable to unregister psoc create handle");
return status;
}
status = wlan_objmgr_unregister_psoc_destroy_handler(
WLAN_UMAC_COMP_MLME,
mlme_psoc_object_destroyed_notification,
NULL);
if (status != QDF_STATUS_SUCCESS)
mlme_err("unable to unregister psoc destroy handle");
return status;
}
QDF_STATUS mlme_psoc_object_created_notification(
struct wlan_objmgr_psoc *psoc, void *arg)
{
QDF_STATUS status;
struct wlan_mlme_psoc_obj *mlme_obj;
mlme_obj = qdf_mem_malloc(sizeof(struct wlan_mlme_psoc_obj));
if (!mlme_obj) {
mlme_err("Failed to allocate memory");
return QDF_STATUS_E_NOMEM;
}
status = wlan_objmgr_psoc_component_obj_attach(psoc,
WLAN_UMAC_COMP_MLME,
mlme_obj,
QDF_STATUS_SUCCESS);
if (status != QDF_STATUS_SUCCESS) {
mlme_err("Failed to attach psoc_ctx with psoc");
qdf_mem_free(mlme_obj);
}
return status;
}
QDF_STATUS mlme_psoc_object_destroyed_notification(
struct wlan_objmgr_psoc *psoc, void *arg)
{
struct wlan_mlme_psoc_obj *mlme_obj = NULL;
QDF_STATUS status;
mlme_obj = wlan_psoc_get_mlme_obj(psoc);
status = wlan_objmgr_psoc_component_obj_detach(psoc,
WLAN_UMAC_COMP_MLME,
mlme_obj);
if (status != QDF_STATUS_SUCCESS) {
mlme_err("Failed to detach psoc_ctx from psoc");
status = QDF_STATUS_E_FAILURE;
goto out;
}
qdf_mem_free(mlme_obj);
out:
return status;
}

View File

@ -0,0 +1,38 @@
/*
* Copyright (c) 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: contains mlme structure definations
*/
#ifndef _WLAN_MLME_STRUCT_H_
#define _WLAN_MLME_STRUCT_H_
#include <wlan_cmn.h>
/**
* struct wlan_mlme_cfg -MLME config items
* @cfg: cfg items
*/
struct wlan_mlme_cfg {
uint8_t test;
/* VHT config */
/* HT config */
};
#endif

View File

@ -134,7 +134,7 @@
#include "wlan_hdd_apf.h"
#include "wlan_hdd_twt.h"
#include "qc_sap_ioctl.h"
#include "wlan_mlme_main.h"
#ifdef CNSS_GENL
#include <net/cnss_nl.h>
#endif
@ -12334,6 +12334,7 @@ static void wlan_hdd_state_ctrl_param_destroy(void)
*/
static void component_init(void)
{
mlme_init();
pmo_init();
disa_init();
ucfg_ocb_init();
@ -12351,6 +12352,7 @@ static void component_deinit(void)
ucfg_ocb_deinit();
pmo_deinit();
disa_deinit();
mlme_deinit();
}
void hdd_component_psoc_enable(struct wlan_objmgr_psoc *psoc)