qcacmn: Add files for IOT Simulation module

Adding files to support IOT Simulation module

Change-Id: I3c145f43e846ae5db032df748943c4d0ff531585
CRs-Fixed: 2657904
This commit is contained in:
nakul kachhwaha
2020-04-17 14:33:39 +05:30
committed by nshrivas
부모 516abea104
커밋 861af9fad3
12개의 변경된 파일693개의 추가작업 그리고 0개의 파일을 삭제

150
iot_sim/Kbuild Normal file
파일 보기

@@ -0,0 +1,150 @@
ifeq ($(obj),)
obj := .
endif
DEPTH := ../..
include $(obj)/$(DEPTH)/os/linux/Makefile-linux.common
INCS += -I$(obj)/$(DEPTH)/cmn_dev/umac/cmn_services/inc -I$(obj)/$(DEPTH)/cmn_dev/umac/cmn_services/obj_mgr/inc
INCS += -I$(obj)/$(DEPTH)/cmn_dev/umac/cmn_services/cmn_defs/inc
INCS += -I$(obj)/$(DEPTH)/cmn_dev/utils/nlink/inc
INCS += -I$(obj)/$(DEPTH)/cmn_dev/umac/scan/dispatcher/inc
INCS += -I$(obj)/$(DEPTH)/cmn_dev/umac/cmn_services/cmn_defs/inc
INCS += -I$(obj)/$(DEPTH)/cmn_dev/umac/global_umac_dispatcher/lmac_if/inc
INCS += -I$(obj)/$(DEPTH)/cmn_dev/scheduler/inc
INCS += -I$(obj)/$(DEPTH)/cmn_dev/global_lmac_if/inc
INCS += -I$(obj)/$(DEPTH)/umac/scan
INCS += -I$(obj)/$(DEPTH)/cmn_dev/umac/cmn_services/mgmt_txrx/dispatcher/inc
INCS += -I$(obj)/$(DEPTH)/cmn_dev/umac/regulatory/dispatcher/inc
INCS += -I$(obj)/$(DEPTH)/umac/son/dispatcher/inc
INCS += -I$(obj)/$(DEPTH)/cmn_dev/umac/dfs/dispatcher/inc
INCS += -I$(obj)/$(DEPTH)/cmn_dev/os_if/linux/scan/inc
INCS += -I$(obj)/$(DEPTH)/cmn_dev/target_if/direct_buf_rx/inc
INCS += -I$(obj)/$(DEPTH)/cmn_dev/wbuff/inc
INCS += -I$(obj)/$(DEPTH)/cmn_dev/cfg/inc
INCS += -I$(obj)/$(DEPTH)/ini_cfg/inc/
INCS += -I$(obj)/$(DEPTH)/component_dev/wmi/inc
INCS += -I$(obj)/$(DEPTH)/pld/inc
INCS += -I$(obj)/$(DEPTH)/component_dev/dp/inc
ifeq ($(WLAN_CONV_CRYPTO_SUPPORTED), 1)
INCS += -I$(obj)/$(DEPTH)/cmn_dev/umac/cmn_services/crypto/inc
INCS += -I$(obj)/$(DEPTH)/component_dev/crypto/inc
endif
ifeq ($(WLAN_SUPPORT_GREEN_AP), 1)
INCS += -I$(obj)/$(DEPTH)/cmn_dev/umac/green_ap/dispatcher/inc
endif
#Start of offload related deifines
HOST_CMN_CONVG_SRC := $(DEPTH)/cmn_dev
INCS += -I$(obj)/$(DEPTH)/include -I$(obj)/$(DEPTH)/umac/include \
-I$(obj)/$(DEPTH)/umac/crypto \
-I$(obj)/$(DEPTH)/umac/scan -I$(obj)/$(DEPTH)/umac/resmgr \
-I$(obj)/$(DEPTH)/umac/pm -I$(obj)/$(DEPTH)/umac/txrx \
-I$(obj)/$(DEPTH)/umac/acs -I$(obj)/$(DEPTH)/umac/txbf \
-I$(obj)/$(DEPTH)/umac/wnm \
-I$(obj)/$(DEPTH)/umac/tdls \
-I$(obj)/$(DEPTH)/umac/rpt_placement \
-I$(obj)/$(DEPTH)/umac/wifipos \
-I$(obj)/$(DEPTH)/umac/wds -I$(obj)/$(DEPTH)/umac/ique \
-I$(obj)/$(DEPTH)/umac/vi_dbg \
-I$(obj)/$(DEPTH)/umac/smart_antenna \
-I$(obj)/$(DEPTH)/umac/smart_ant \
-I$(obj)/$(DEPTH)/umac/ald \
-I$(obj)/$(DEPTH)/lmac/ath_pktlog \
-I$(obj)/$(DEPTH)/os/linux/mem/ \
-I$(obj)/$(DEPTH)/umac/base \
-I$(obj)/$(DEPTH)/qca_ol \
-I$(obj)/$(DEPTH)/cmn_dev/qdf/inc \
-I$(obj)/$(DEPTH)/cmn_dev/qdf/linux/src \
-I$(obj)/$(DEPTH)/cmn_dev/qal/inc \
-I$(obj)/$(DEPTH)/cmn_dev/qal/linux/src \
-I$(obj)/$(DEPTH)/cmn_dev/hif \
-I$(obj)/$(DEPTH)/cmn_dev/hif/inc \
-I$(obj)/$(DEPTH)/cmn_dev/hif/src \
-I$(obj)/$(DEPTH)/cmn_dev/hif/src/ce \
-I$(obj)/$(DEPTH)/cmn_dev/hif/src/pcie \
-I$(obj)/$(DEPTH)/cmn_dev/hif/src/snoc \
-I$(obj)/$(DEPTH)/cmn_dev/hif/src/dispatcher \
-I$(obj)/$(DEPTH)/cmn_dev/pld_stub/inc \
-I$(obj)/$(DEPTH)/cmn_dev/hal/inc \
-I$(obj)/$(DEPTH)/cmn_dev/hal/wifi3.0 \
-I$(obj)/$(DEPTH)/cmn_dev/dp/inc \
-I$(obj)/$(DEPTH)/cmn_dev/dp/wifi3.0 \
-I$(obj)/$(DEPTH)/cmn_dev/wlan_cfg \
-I$(obj)/$(HOST_CMN_CONVG_SRC)/htc \
-I$(obj)/$(DEPTH)/cmn_dev/wmi/inc \
-I$(obj)/$(DEPTH)/cmn_dev/umac/cmn_services/obj_mgr/inc \
-I$(obj)/$(HOST_CMN_CONVG_SRC)/scheduler/inc \
-I$(obj)/$(HOST_CMN_CONVG_SRC)/init_deinit/dispatcher/inc \
-I$(obj)/$(DEPTH)/cmn_dev/umac/cmn_services/inc \
-I$(obj)/$(DEPTH)/cmn_dev/umac/global_umac_dispatcher/lmac_if/inc \
-I$(obj)/$(DEPTH)/cmn_dev/umac/cmn_services/mgmt_txrx/dispatcher/inc \
-I$(obj)/$(DEPTH)/cmn_dev/target_if/init_deinit/inc \
-I$(obj)/$(DEPTH)/cmn_dev/global_lmac_if/inc \
-I$(obj)/$(DEPTH)/cmn_dev/os_if/linux \
-I$(obj)/$(DEPTH)/cmn_dev/umac/cmn_services/cmn_defs/inc \
-I$(obj)/$(DEPTH)/cmn_dev/target_if/core/inc \
-I$(obj)/$(DEPTH)/cmn_dev/umac/scan/dispatcher/inc \
-I$(obj)/$(DEPTH)/umac/scan \
-I$(obj)/$(DEPTH)/cmn_dev/ol_if \
-I$(obj)/$(DEPTH)/cmn_dev/target_if/scan/inc \
-I$(obj)/$(DEPTH)/cmn_dev/umac/cmn_services/serialization/core/inc \
-I$(obj)/$(DEPTH)/cmn_dev/umac/regulatory/dispatcher/inc \
-I$(obj)/$(DEPTH)/cmn_dev/target_if/regulatory/inc \
-I$(obj)/$(DEPTH)/cmn_dev/umac/mlme/mlme_objmgr/dispatcher/inc/ \
-I$(obj)/$(DEPTH)/cmn_dev/umac/mlme/vdev_mgr/dispatcher/inc \
-I$(obj)/$(DEPTH)/cmn_dev/umac/mlme/pdev_mgr/dispatcher/inc \
-I$(obj)/$(DEPTH)/direct_attach/hal/linux \
#INCS += -I$(obj)/$(DEPTH)/cmn_dev/target_if/iot_sim
INCS += -I$(obj)/$(DEPTH)/cmn_dev/wmi/inc
#end of offload related defines
ifeq ($(QCA_CFR_SUPPORT), 1)
ccflags-y+= -DWLAN_CFR_ENABLE=1
INCS += -I$(obj)/$(DEPTH)/cmn_dev/umac/cfr/dispatcher/inc/
INCS += -I$(obj)/$(DEPTH)/component_dev/umac/cfr/dispatcher/inc
INCS += -I$(obj)/$(DEPTH)/component_dev/qal/inc
endif
INCS += -I$(obj)/$(DEPTH)/cmn_dev/iot_sim/core
INCS += -I$(obj)/$(DEPTH)/cmn_dev/iot_sim/dispatcher/inc
obj-m += qca_iot_sim.o
ccflags-y+= $(INCS) $(COPTS)
ifeq ($(strip ${QCA_PARTNER_MAKE_F_SUPPORT}),1)
MOD_CFLAGS = -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(qca_iot_sim.mod)" -D"KBUILD_MODNAME=KBUILD_STR(qca_iot_sim)"
endif
IOT_SIM_TIF_OBJS +=
IOT_SIM_CMN_OBJS += core/iot_sim_common.o \
dispatcher/src/wlan_iot_sim_utils_api.o \
dispatcher/src/wlan_iot_sim_tgt_api.o \
core/iot_sim_module.o
qca_iot_sim-objs += ${IOT_SIM_CMN_OBJS} \
${IOT_SIM_TIF_OBJS}
ifeq ($(strip ${QCA_PARTNER_MAKE_F_SUPPORT}),1)
all: qca_iot_sim.ko
qca_iot_sim.mod.o: qca_iot_sim.mod.c
${CC} -c -o $@ ${ccflags-y} ${MOD_CFLAGS} $<
qca_iot_sim.o: ${qca_iot_sim-objs}
$(LD) -m elf32btsmip -r -o qca_iot_sim.o $(qca_iot_sim-objs)
$(KERNELPATH)/scripts/mod/modpost qca_iot_sim.o
qca_iot_sim.ko: qca_iot_sim.o qca_iot_sim.mod.o
$(LD) -o qca_iot_sim.ko qca_iot_sim.o qca_iot_sim.mod.o
%.o: %.c
${CC} -c -o $@ ${ccflags-y} $<
endif

파일 보기

@@ -0,0 +1,76 @@
/*
* Copyright (c) 2020, 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.
*/
#ifndef _IOT_SIM_CMN_API_I_H_
#define _IOT_SIM_CMN_API_I_H_
#include "iot_sim_defs_i.h"
/*
* wlan_iot_sim_psoc_obj_create_handler() - handler for psoc object create
* @psoc: reference to global psoc object
* @arg: reference to argument provided during registration of handler
*
* This is a handler to indicate psoc object created. Hence iot_sim_context
* object can be created and attached to psoc component list.
*
* Return: QDF_STATUS_SUCCESS on success
* QDF_STATUS_E_FAILURE if psoc is null
* QDF_STATUS_E_NOMEM on failure of iot_sim object allocation
*/
QDF_STATUS wlan_iot_sim_psoc_obj_create_handler(struct wlan_objmgr_psoc *psoc,
void *arg);
/*
* wlan_iot_sim_psoc_obj_destroy_handler() - handler for psoc object delete
* @psoc: reference to global psoc object
* @arg: reference to argument provided during registration of handler
*
* This is a handler to indicate psoc object going to be deleted.
* Hence iot_sim_context object can be detached from psoc component list.
* Then iot_sim_context object can be deleted.
*
* Return: QDF_STATUS_SUCCESS on success
* QDF_STATUS_E_FAILURE on failure
*/
QDF_STATUS wlan_iot_sim_psoc_obj_destroy_handler(struct wlan_objmgr_psoc *psoc,
void *arg);
/*
* iot_sim_get_ctx_from_pdev() - API to get iot_sim context object
* from pdev
* @pdev : Reference to psoc global object
*
* This API used to get iot sim context object from global psoc reference.
* Null check should be done before invoking this inline function.
*
* Return : Reference to iot_sim_context object
*
*/
static inline struct iot_sim_context *
iot_sim_get_ctx_from_psoc(struct wlan_objmgr_psoc *psoc)
{
struct iot_sim_context *isc = NULL;
if (psoc) {
isc = wlan_objmgr_psoc_get_comp_private_obj(psoc,
WLAN_IOT_SIM_COMP);
}
return isc;
}
#endif /* _IOT_SIM_CMN_API_I_H_ */

파일 보기

@@ -0,0 +1,104 @@
/*
* Copyright (c) 2020, 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.
*/
#include "iot_sim_cmn_api_i.h"
#include <qdf_mem.h>
#include <qdf_types.h>
QDF_STATUS
iot_sim_control_cmn(struct wlan_objmgr_psoc *psoc, wbuf_t wbuf)
{
QDF_STATUS status = QDF_STATUS_E_FAILURE;
struct iot_sim_context *isc;
if (!psoc) {
iot_sim_err("PDEV is NULL!");
goto bad;
}
isc = iot_sim_get_ctx_from_psoc(psoc);
if (!isc) {
iot_sim_err("iot_sim context is NULL!");
goto bad;
}
status = QDF_STATUS_SUCCESS;
bad:
return status;
}
/**
* iot_sim_ctx_deinit() - De-initialize function pointers from iot_sim context
* @sc - Reference to iot_sim_context object
*
* Return: None
*/
static void
iot_sim_ctx_deinit(struct iot_sim_context *isc)
{
if (isc)
isc->iot_sim_operation_handler = NULL;
}
QDF_STATUS
wlan_iot_sim_psoc_obj_create_handler(struct wlan_objmgr_psoc *psoc, void *arg)
{
struct iot_sim_context *isc = NULL;
if (!psoc) {
iot_sim_err("PSOC is NULL");
return QDF_STATUS_E_NULL_VALUE;
}
isc = (struct iot_sim_context *)
qdf_mem_malloc(sizeof(struct iot_sim_context));
if (!isc)
return QDF_STATUS_E_NOMEM;
isc->psoc_obj = psoc;
wlan_objmgr_psoc_component_obj_attach(psoc, WLAN_IOT_SIM_COMP,
(void *)isc, QDF_STATUS_SUCCESS);
iot_sim_info("iot_sim component psoc object created");
return QDF_STATUS_SUCCESS;
}
QDF_STATUS
wlan_iot_sim_psoc_obj_destroy_handler(struct wlan_objmgr_psoc *psoc,
void *arg)
{
struct iot_sim_context *isc = NULL;
if (!psoc) {
iot_sim_err("PSOC is NULL");
return QDF_STATUS_E_NULL_VALUE;
}
isc = wlan_objmgr_psoc_get_comp_private_obj(psoc,
WLAN_IOT_SIM_COMP);
if (isc) {
wlan_objmgr_psoc_component_obj_detach(psoc,
WLAN_IOT_SIM_COMP,
(void *)isc);
/* Deinitilise function pointers from iot_sim context */
iot_sim_ctx_deinit(isc);
qdf_mem_free(isc);
}
iot_sim_info("iot_sim component psoc object destroyed");
return QDF_STATUS_SUCCESS;
}

파일 보기

@@ -0,0 +1,119 @@
/*
* Copyright (c) 2020, 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.
*/
#ifndef _IOT_SIM_DEFS_I_H_
#define _IOT_SIM_DEFS_I_H_
#include <wlan_objmgr_cmn.h>
#include <wlan_objmgr_global_obj.h>
#include <wlan_objmgr_psoc_obj.h>
#include <qdf_list.h>
#include <qdf_util.h>
#include <qdf_types.h>
#include <qdf_timer.h>
#include <wbuf.h>
#include <wlan_iot_sim_utils_api.h>
#define iot_sim_fatal(format, args...) \
QDF_TRACE_FATAL(QDF_MODULE_ID_IOT_SIM, format, ## args)
#define iot_sim_err(format, args...) \
QDF_TRACE_ERROR(QDF_MODULE_ID_IOT_SIM, format, ## args)
#define iot_sim_warn(format, args...) \
QDF_TRACE_WARN(QDF_MODULE_ID_IOT_SIM, format, ## args)
#define iot_sim_info(format, args...) \
QDF_TRACE_INFO(QDF_MODULE_ID_IOT_SIM, format, ## args)
#define iot_sim_debug(format, args...) \
QDF_TRACE_DEBUG(QDF_MODULE_ID_IOT_SIM, format, ## args)
#define iot_sim_fatal_nofl(format, args...) \
QDF_TRACE_FATAL_NO_FL(QDF_MODULE_ID_IOT_SIM, format, ## args)
#define iot_sim_err_nofl(format, args...) \
QDF_TRACE_ERROR_NO_FL(QDF_MODULE_ID_IOT_SIM, format, ## args)
#define iot_sim_warn_nofl(format, args...) \
QDF_TRACE_WARN_NO_FL(QDF_MODULE_ID_IOT_SIM, format, ## args)
#define iot_sim_info_nofl(format, args...) \
QDF_TRACE_INFO_NO_FL(QDF_MODULE_ID_IOT_SIM, format, ## args)
#define iot_sim_debug_nofl(format, args...) \
QDF_TRACE_DEBUG_NO_FL(QDF_MODULE_ID_IOT_SIM, format, ## args)
#define iot_sim_fatal_rl(format, args...) \
QDF_TRACE_FATAL_RL(QDF_MODULE_ID_IOT_SIM, format, ## args)
#define iot_sim_err_rl(format, args...) \
QDF_TRACE_ERROR_RL(QDF_MODULE_ID_IOT_SIM, format, ## args)
#define iot_sim_warn_rl(format, args...) \
QDF_TRACE_WARN_RL(QDF_MODULE_ID_IOT_SIM, format, ## args)
#define iot_sim_info_rl(format, args...) \
QDF_TRACE_INFO_RL(QDF_MODULE_ID_IOT_SIM, format, ## args)
#define iot_sim_debug_rl(format, args...) \
QDF_TRACE_DEBUG_RL(QDF_MODULE_ID_IOT_SIM, format, ## args)
#define iot_sim_fatal_rl_nofl(format, args...) \
QDF_TRACE_FATAL_RL_NO_FL(QDF_MODULE_ID_IOT_SIM, format, ## args)
#define iot_sim_err_rl_nofl(format, args...) \
QDF_TRACE_ERROR_RL_NO_FL(QDF_MODULE_ID_IOT_SIM, format, ## args)
#define iot_sim_warn_rl_nofl(format, args...) \
QDF_TRACE_WARN_RL_NO_FL(QDF_MODULE_ID_IOT_SIM, format, ## args)
#define iot_sim_info_rl_nofl(format, args...) \
QDF_TRACE_INFO_RL_NO_FL(QDF_MODULE_ID_IOT_SIM, format, ## args)
#define iot_sim_debug_rl_nofl(format, args...) \
QDF_TRACE_DEBUG_RL_NO_FL(QDF_MODULE_ID_IOT_SIM, format, ## args)
#define N_FRAME_TYPE 0x4
#define N_FRAME_SUBTYPE 0xF
#define MAX_SEQ 0x4
/* struct iot_sim_content - represent user content
* @len - Length of the content provided by user
* @offset - offset at which modification done in capture frame
* @frm_content - actual user data in hex
* @drop - frame marked for drop
* @delay_dur - duration of delay
*/
struct iot_sim_content {
uint16_t len;
uint16_t offset;
uint8_t *frm_content;
bool drop;
uint16_t delay_dur;
};
/* Per Peer iot_sim data per frame type/subtype */
struct iot_sim_fb_array_peer {
struct qdf_mac_addr peer_addr;
struct iot_sim_content iot_sim_fb_array[N_FRAME_TYPE][N_FRAME_SUBTYPE];
qdf_list_t p_list;
};
/**
* struct iot_sim_context - iot_sim psoc private object
* @psoc_obj:Reference to psoc global object
* @iot_sim_lock: spinlock for synchronization
*
* Call back functions
* @iot_sim_opertion_handler: iot sim operations handler
*/
struct iot_sim_context {
struct wlan_objmgr_psoc *psoc_obj;
qdf_spinlock_t iot_sim_lock;
/* IOT_SIM Peer list */
struct iot_sim_fb_arrary_peer *iot_sim_peer_list;
void *p_iot_sim_target_handle;
QDF_STATUS (*iot_sim_operation_handler)(struct wlan_objmgr_psoc *psoc,
wbuf_t wbuf);
};
#endif /* _IOT_SIM_DEFS_I_H_ */

파일 보기

@@ -0,0 +1,51 @@
/*
* Copyright (c) 2020, 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.
*/
#include<linux/module.h>
#include <wlan_iot_sim_utils_api.h>
#include <qdf_types.h>
#include<wlan_global_lmac_if_api.h>
#include "iot_sim_defs_i.h"
#include <dispatcher_init_deinit.h>
MODULE_LICENSE("Dual BSD/GPL");
/**
* iot_sim_init_module() - Initialize IOT Simulation module
*
* Return: None
*/
static int __init iot_sim_init_module(void)
{
wlan_iot_sim_init();
iot_sim_info("qca_iot_sim module loaded");
return 0;
}
/**
* iot_sim_exit_module() - De-initialize and exit IOT Simulation module
*
* Return: None
*/
static void __exit iot_sim_exit_module(void)
{
wlan_iot_sim_deinit();
iot_sim_info("qca_iot_sim module unloaded");
}
module_init(iot_sim_init_module);
module_exit(iot_sim_exit_module);

파일 보기

@@ -0,0 +1,24 @@
/*
* Copyright (c) 2020, 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.
*/
#ifndef _WLAN_IOT_SIM_TGT_API_H_
#define _WLAN_IOT_SIM_TGT_API_H_
#include <wlan_objmgr_cmn.h>
#include <qdf_types.h>
#include "../../core/iot_sim_cmn_api_i.h"
#endif /* _WLAN_IOT_SIM_TGT_API_H_ */

파일 보기

@@ -0,0 +1,65 @@
/*
* Copyright (c) 2020, 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.
*/
#ifndef _WLAN_IOT_SIM_UTILS_API_H_
#define _WLAN_IOT_SIM_UTILS_API_H_
#include <wlan_objmgr_cmn.h>
#include <wlan_lmac_if_def.h>
/* Forward Declarations */
struct wmi_iot_sim_cmd_ops;
/*
* wlan_iot_sim_init() - API to init iot_sim component
*
* This API is invoked from dispatcher init during all component init.
* This API will register all required handlers for pdev and peer object
* create/delete notification.
*
* Return: SUCCESS,
* Failure
*/
QDF_STATUS wlan_iot_sim_init(void);
/*
* wlan_iot_sim_deinit() - API to deinit iot_sim component
*
* This API is invoked from dispatcher deinit during all component deinit.
* This API will unregister all registered handlers for pdev and peer object
* create/delete notification.
*
* Return: SUCCESS,
* Failure
*/
QDF_STATUS wlan_iot_sim_deinit(void);
/*
* wlan_register_wmi_iot_sim_cmd_ops() - Register operations related to wmi
* commands on iot_sim parameters
* @pdev - the physical device object
* @cmd_ops - pointer to the structure holding the operations
* related to wmi commands on iot_sim parameters
*
* API to register operations related to wmi commands on iot_sim parameters
*
* Return: None
*/
void
wlan_register_wmi_iot_sim_cmd_ops(struct wlan_objmgr_pdev *pdev,
struct wmi_iot_sim_cmd_ops *cmd_ops);
#endif /* _WLAN_IOT_SIM_UTILS_API_H_*/

파일 보기

@@ -0,0 +1,36 @@
/*
* Copyright (c) 2020, 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.
*/
#include <wlan_iot_sim_tgt_api.h>
#include <wlan_iot_sim_utils_api.h>
void *
tgt_get_target_handle(struct wlan_objmgr_psoc *psoc)
{
struct iot_sim_context *isc;
if (!psoc) {
iot_sim_err("psoc is NULL!");
return NULL;
}
isc = wlan_objmgr_psoc_get_comp_private_obj(psoc,
WLAN_IOT_SIM_COMP);
if (!isc) {
iot_sim_err("psoc IOT_SIM object is NULL!");
return NULL;
}
return isc->p_iot_sim_target_handle;
}

파일 보기

@@ -0,0 +1,62 @@
/*
* Copyright (c) 2020, 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.
*/
#include <wlan_iot_sim_utils_api.h>
#include <qdf_module.h>
#include "../../core/iot_sim_cmn_api_i.h"
#include <wlan_iot_sim_tgt_api.h>
QDF_STATUS
wlan_iot_sim_init(void)
{
if (wlan_objmgr_register_psoc_create_handler(
WLAN_IOT_SIM_COMP,
wlan_iot_sim_psoc_obj_create_handler,
NULL) !=
QDF_STATUS_SUCCESS) {
return QDF_STATUS_E_FAILURE;
}
if (wlan_objmgr_register_psoc_destroy_handler(
WLAN_IOT_SIM_COMP,
wlan_iot_sim_psoc_obj_destroy_handler,
NULL) !=
QDF_STATUS_SUCCESS) {
return QDF_STATUS_E_FAILURE;
}
return QDF_STATUS_SUCCESS;
}
QDF_STATUS
wlan_iot_sim_deinit(void)
{
if (wlan_objmgr_unregister_psoc_create_handler(
WLAN_IOT_SIM_COMP,
wlan_iot_sim_psoc_obj_create_handler,
NULL) !=
QDF_STATUS_SUCCESS) {
return QDF_STATUS_E_FAILURE;
}
if (wlan_objmgr_unregister_psoc_destroy_handler(
WLAN_IOT_SIM_COMP,
wlan_iot_sim_psoc_obj_destroy_handler,
NULL) !=
QDF_STATUS_SUCCESS) {
return QDF_STATUS_E_FAILURE;
}
return QDF_STATUS_SUCCESS;
}

파일 보기

@@ -387,6 +387,7 @@ typedef bool (*qdf_irqlocked_func_t)(void *);
* @QDF_MODULE_ID_DCS: DCS module ID
* @QDF_MODULE_ID_RPTR: Repeater module ID
* @QDF_MODULE_ID_6GHZ: 6Ghz specific feature ID
* @QDF_MODULE_ID_IOT_SIM: IOT Simulation for rogue AP module ID
* @QDF_MODULE_ID_ANY: anything
* @QDF_MODULE_ID_MAX: Max place holder module ID
*/
@@ -512,6 +513,7 @@ typedef enum {
QDF_MODULE_ID_DCS,
QDF_MODULE_ID_RPTR,
QDF_MODULE_ID_6GHZ,
QDF_MODULE_ID_IOT_SIM,
QDF_MODULE_ID_ANY,
QDF_MODULE_ID_MAX,
} QDF_MODULE_ID;

파일 보기

@@ -3162,6 +3162,7 @@ struct category_name_info g_qdf_category_name[MAX_SUPPORTED_CATEGORY] = {
[QDF_MODULE_ID_PKT_CAPTURE] = {"pkt_capture"},
[QDF_MODULE_ID_RPTR] = {"RPTR"},
[QDF_MODULE_ID_6GHZ] = {"6GHZ"},
[QDF_MODULE_ID_IOT_SIM] = {"IOT_SIM"},
};
qdf_export_symbol(g_qdf_category_name);
@@ -3626,6 +3627,7 @@ static void set_default_trace_levels(struct category_info *cinfo)
[QDF_MODULE_ID_PKT_CAPTURE] = QDF_TRACE_LEVEL_NONE,
[QDF_MODULE_ID_RPTR] = QDF_TRACE_LEVEL_INFO,
[QDF_MODULE_ID_6GHZ] = QDF_TRACE_LEVEL_ERROR,
[QDF_MODULE_ID_IOT_SIM] = QDF_TRACE_LEVEL_ERROR,
};
for (i = 0; i < MAX_SUPPORTED_CATEGORY; i++) {

파일 보기

@@ -278,6 +278,7 @@
* @WLAN_UMAC_COMP_FTM_TIME_SYNC: WLAN FTM TIMESYNC
* @WLAN_UMAC_COMP_PKT_CAPTURE: Packet capture component
* @WLAN_UMAC_COMP_DCS: DCS
* @WLAN_IOT_SIM_COMP: IOT Simulation component
* @WLAN_UMAC_COMP_ID_MAX: Maximum components in UMAC
*
* This id is static.
@@ -321,6 +322,7 @@ enum wlan_umac_comp_id {
WLAN_UMAC_COMP_FTM_TIME_SYNC = 34,
WLAN_UMAC_COMP_PKT_CAPTURE = 35,
WLAN_UMAC_COMP_DCS = 36,
WLAN_IOT_SIM_COMP = 37,
WLAN_UMAC_COMP_ID_MAX,
};