qcacld-3.0: Skeleton for DISA component
Create a skeleton for the DISA component. This is a CLD component. Add files for disa core, dispatcher and target_if. Define DISA related public structures and objmgr objects. Add API's as stubs. Change-Id: I63b32a0e7da0283d091815aaccea6b8703f5184c CRs-Fixed: 2159579
Esse commit está contido em:
30
Kbuild
30
Kbuild
@@ -506,7 +506,7 @@ ifeq ($(CONFIG_MPC_UT_FRAMEWORK),y)
|
||||
HDD_OBJS += $(HDD_SRC_DIR)/wlan_hdd_conc_ut.o
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_WLAN_FEATURE_DISA),y)
|
||||
ifeq ($(CONFIG_WLAN_FEATURE_DISA), y)
|
||||
HDD_OBJS += $(HDD_SRC_DIR)/wlan_hdd_disa.o
|
||||
endif
|
||||
|
||||
@@ -963,6 +963,19 @@ PMO_OBJS := $(PMO_DIR)/core/src/wlan_pmo_main.o \
|
||||
$(PMO_DIR)/dispatcher/src/wlan_pmo_tgt_hw_filter.o \
|
||||
$(PMO_DIR)/dispatcher/src/wlan_pmo_tgt_pkt_filter.o
|
||||
|
||||
########## DISA (ENCRYPTION TEST) ##########
|
||||
|
||||
DISA_DIR := components/disa
|
||||
DISA_INC := -I$(WLAN_ROOT)/$(DISA_DIR)/core/inc \
|
||||
-I$(WLAN_ROOT)/$(DISA_DIR)/dispatcher/inc
|
||||
|
||||
ifeq ($(CONFIG_WLAN_FEATURE_DISA), y)
|
||||
DISA_OBJS := $(DISA_DIR)/core/src/wlan_disa_main.o \
|
||||
$(DISA_DIR)/dispatcher/src/wlan_disa_obj_mgmt_api.o \
|
||||
$(DISA_DIR)/dispatcher/src/wlan_disa_tgt_api.o \
|
||||
$(DISA_DIR)/dispatcher/src/wlan_disa_ucfg_api.o
|
||||
endif
|
||||
|
||||
########## CLD TARGET_IF #######
|
||||
CLD_TARGET_IF_DIR := components/target_if
|
||||
|
||||
@@ -981,6 +994,11 @@ CLD_TARGET_IF_OBJ := $(CLD_TARGET_IF_DIR)/pmo/src/target_if_pmo_arp.o \
|
||||
$(CLD_TARGET_IF_DIR)/pmo/src/target_if_pmo_suspend_resume.o \
|
||||
$(CLD_TARGET_IF_DIR)/pmo/src/target_if_pmo_wow.o \
|
||||
|
||||
ifeq ($(CONFIG_WLAN_FEATURE_DISA), y)
|
||||
CLD_TARGET_IF_INC += -I$(WLAN_ROOT)/$(CLD_TARGET_IF_DIR)/disa/inc
|
||||
CLD_TARGET_IF_OBJ += $(CLD_TARGET_IF_DIR)/disa/src/target_if_disa.o
|
||||
endif
|
||||
|
||||
############## UMAC P2P ###########
|
||||
P2P_DIR := umac/p2p
|
||||
P2P_CORE_DIR := $(P2P_DIR)/core
|
||||
@@ -1551,6 +1569,10 @@ ifeq ($(BUILD_DIAG_VERSION), 1)
|
||||
INCS += $(HOST_DIAG_LOG_INC)
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_WLAN_FEATURE_DISA), y)
|
||||
INCS += $(DISA_INC)
|
||||
endif
|
||||
|
||||
INCS += $(UMAC_DISP_INC)
|
||||
INCS += $(UMAC_SCAN_INC)
|
||||
INCS += $(UMAC_TARGET_SCAN_INC)
|
||||
@@ -1612,6 +1634,10 @@ ifeq ($(BUILD_DIAG_VERSION), 1)
|
||||
OBJS += $(HOST_DIAG_LOG_OBJS)
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_WLAN_FEATURE_DISA), y)
|
||||
OBJS += $(DISA_OBJS)
|
||||
endif
|
||||
|
||||
OBJS += $(UMAC_DISP_OBJS)
|
||||
OBJS += $(UMAC_SCAN_OBJS)
|
||||
OBJS += $(UMAC_COMMON_OBJS)
|
||||
@@ -2216,7 +2242,7 @@ ifeq ($(CONFIG_WLAN_OFFLOAD_PACKETS),y)
|
||||
CDEFINES += -DWLAN_FEATURE_OFFLOAD_PACKETS
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_WLAN_FEATURE_DISA),y)
|
||||
ifeq ($(CONFIG_WLAN_FEATURE_DISA), y)
|
||||
CDEFINES += -DWLAN_FEATURE_DISA
|
||||
endif
|
||||
|
||||
|
96
components/disa/core/inc/wlan_disa_main.h
Arquivo normal
96
components/disa/core/inc/wlan_disa_main.h
Arquivo normal
@@ -0,0 +1,96 @@
|
||||
/*
|
||||
* 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 various api which shall be used by
|
||||
* DISA user configuration and target interface
|
||||
*/
|
||||
|
||||
#ifndef _WLAN_DISA_MAIN_H_
|
||||
#define _WLAN_DISA_MAIN_H_
|
||||
|
||||
#include "wlan_disa_public_struct.h"
|
||||
#include "wlan_disa_obj_mgmt_public_struct.h"
|
||||
#include "wlan_disa_priv.h"
|
||||
#include "wlan_disa_objmgr.h"
|
||||
|
||||
#define disa_log(level, args...) QDF_TRACE(QDF_MODULE_ID_DISA, level, ## args)
|
||||
#define disa_logfl(level, format, args...) disa_log(level, FL(format), ## args)
|
||||
|
||||
#define disa_fatal(format, args...) \
|
||||
disa_logfl(QDF_TRACE_LEVEL_FATAL, format, ## args)
|
||||
#define disa_err(format, args...) \
|
||||
disa_logfl(QDF_TRACE_LEVEL_ERROR, format, ## args)
|
||||
#define disa_warn(format, args...) \
|
||||
disa_logfl(QDF_TRACE_LEVEL_WARN, format, ## args)
|
||||
#define disa_info(format, args...) \
|
||||
disa_logfl(QDF_TRACE_LEVEL_INFO, format, ## args)
|
||||
#define disa_debug(format, args...) \
|
||||
disa_logfl(QDF_TRACE_LEVEL_DEBUG, format, ## args)
|
||||
|
||||
#define DISA_ENTER() disa_debug("enter")
|
||||
#define DISA_EXIT() disa_debug("exit")
|
||||
|
||||
/**
|
||||
* disa_allocate_ctx() - Api to allocate disa ctx
|
||||
*
|
||||
* Helper function to allocate disa ctx
|
||||
*
|
||||
* Return: Success or failure.
|
||||
*/
|
||||
QDF_STATUS disa_allocate_ctx(void);
|
||||
|
||||
/**
|
||||
* disa_free_ctx() - to free disa context
|
||||
*
|
||||
* Helper function to free disa context
|
||||
*
|
||||
* Return: None.
|
||||
*/
|
||||
void disa_free_ctx(void);
|
||||
|
||||
/**
|
||||
* disa_get_context() - to get disa context
|
||||
*
|
||||
* Helper function to get disa context
|
||||
*
|
||||
* Return: disa context.
|
||||
*/
|
||||
struct wlan_disa_ctx *disa_get_context(void);
|
||||
|
||||
/**
|
||||
* disa_core_encrypt_decrypt_req() - Form encrypt/decrypt request
|
||||
* @psoc: objmgr psoc object
|
||||
* @req: DISA encrypt/decrypt request parameters
|
||||
*
|
||||
* Return: QDF status success or failure
|
||||
*/
|
||||
QDF_STATUS disa_core_encrypt_decrypt_req(struct wlan_objmgr_psoc *psoc,
|
||||
struct disa_encrypt_decrypt_req_params *req,
|
||||
encrypt_decrypt_resp_callback cb,
|
||||
void *cookie);
|
||||
|
||||
/**
|
||||
* disa_core_encrypt_decrypt_resp() - Collect encrypt/decrypt request resp
|
||||
* @psoc: objmgr psoc object
|
||||
* @resp: DISA encrypt/decrypt request response parameters
|
||||
*
|
||||
* Return: QDF status success or failure
|
||||
*/
|
||||
QDF_STATUS disa_core_encrypt_decrypt_resp(struct wlan_objmgr_psoc *psoc,
|
||||
struct disa_encrypt_decrypt_resp_params *resp);
|
||||
#endif /* end of _WLAN_DISA_MAIN_H_ */
|
195
components/disa/core/inc/wlan_disa_objmgr.h
Arquivo normal
195
components/disa/core/inc/wlan_disa_objmgr.h
Arquivo normal
@@ -0,0 +1,195 @@
|
||||
/*
|
||||
* 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: This file contains various object manager related wrappers and helpers
|
||||
*/
|
||||
|
||||
#ifndef _WLAN_DISA_OBJMGR_H
|
||||
#define _WLAN_DISA_OBJMGR_H
|
||||
|
||||
#include "wlan_cmn.h"
|
||||
#include "wlan_objmgr_cmn.h"
|
||||
#include "wlan_objmgr_vdev_obj.h"
|
||||
#include "wlan_objmgr_pdev_obj.h"
|
||||
#include "wlan_objmgr_psoc_obj.h"
|
||||
#include "wlan_disa_obj_mgmt_public_struct.h"
|
||||
|
||||
/* Get/Put Ref */
|
||||
|
||||
/**
|
||||
* disa_psoc_get_ref() - DISA wrapper to increment ref count, if allowed
|
||||
* @psoc: PSOC object
|
||||
*
|
||||
* DISA wrapper to increment ref count after checking valid object state
|
||||
*
|
||||
* Return: SUCCESS/FAILURE
|
||||
*/
|
||||
static inline QDF_STATUS disa_psoc_get_ref(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
return wlan_objmgr_psoc_try_get_ref(psoc, WLAN_DISA_ID);
|
||||
}
|
||||
|
||||
/**
|
||||
* disa_psoc_put_ref() - DISA wrapper to decrement ref count
|
||||
* @psoc: PSOC object
|
||||
*
|
||||
* DISA wrapper to decrement ref count of psoc
|
||||
*
|
||||
* Return: SUCCESS/FAILURE
|
||||
*/
|
||||
static inline void disa_psoc_put_ref(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
return wlan_objmgr_psoc_release_ref(psoc, WLAN_DISA_ID);
|
||||
}
|
||||
|
||||
/* Private Data */
|
||||
|
||||
/**
|
||||
* disa_psoc_get_priv_nolock(): DISA wrapper to retrieve component object
|
||||
* @psoc: Psoc pointer
|
||||
*
|
||||
* DISA wrapper used to get the component private object pointer
|
||||
*
|
||||
* Return: Component private object
|
||||
*/
|
||||
static inline void *disa_psoc_get_priv_nolock(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
return wlan_objmgr_psoc_get_comp_private_obj(psoc, WLAN_UMAC_COMP_DISA);
|
||||
}
|
||||
|
||||
/* Ids */
|
||||
static inline uint8_t
|
||||
disa_vdev_get_id(struct wlan_objmgr_vdev *vdev)
|
||||
{
|
||||
uint8_t vdev_id;
|
||||
|
||||
vdev_id = wlan_vdev_get_id(vdev);
|
||||
QDF_BUG(vdev_id < WLAN_UMAC_PSOC_MAX_VDEVS);
|
||||
|
||||
return vdev_id;
|
||||
}
|
||||
|
||||
/* Tree Navigation */
|
||||
|
||||
/**
|
||||
* !PLEASE READ!
|
||||
*
|
||||
* The following are objmgr navigation helpers for traversing objmgr object
|
||||
* trees.
|
||||
*
|
||||
* Objmgr ensures parents of an objmgr object cannot be freed while a valid
|
||||
* reference to one of its children is held. Based on this fact, all of these
|
||||
* navigation helpers make the following assumptions to ensure safe usage:
|
||||
*
|
||||
* 1) The caller must hold a valid reference to the input objmgr object!
|
||||
* E.g. Use disa_[peer|vdev|pdev|psoc]_get_ref() on the input objmgr
|
||||
* object before using these APIs
|
||||
* 2) Given assumption #1, the caller does not need to hold a reference to the
|
||||
* parents of the input objmgr object
|
||||
* 3) Given assumption #1, parents of the input objmgr object cannot be null
|
||||
* 4) Given assumption #1, private contexts of any parent of the input objmgr
|
||||
* object cannot be null
|
||||
*
|
||||
* These characteristics remove the need for most sanity checks when dealing
|
||||
* with objmgr objects. However, please note that if you ever walk the tree
|
||||
* from parent to child, references must be acquired all the way down!
|
||||
*
|
||||
* Example #1:
|
||||
*
|
||||
* psoc = disa_vdev_get_psoc(vdev);
|
||||
* if (!psoc)
|
||||
* // this is dead code
|
||||
*
|
||||
* Example #2:
|
||||
*
|
||||
* psoc_priv = disa_psoc_get_priv(psoc);
|
||||
* if (!psoc_priv)
|
||||
* // this is dead code
|
||||
*
|
||||
* Example #3:
|
||||
*
|
||||
* status = disa_psoc_get_ref(psoc);
|
||||
*
|
||||
* ...
|
||||
*
|
||||
* psoc = disa_vdev_get_psoc(vdev);
|
||||
*
|
||||
* // the next line is redundant, don't do it!
|
||||
* status = disa_psoc_get_ref(psoc);
|
||||
*/
|
||||
|
||||
/* Tree Navigation: psoc */
|
||||
static inline struct disa_psoc_priv_obj *
|
||||
disa_psoc_get_priv(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
struct disa_psoc_priv_obj *psoc_priv;
|
||||
|
||||
psoc_priv = disa_psoc_get_priv_nolock(psoc);
|
||||
QDF_BUG(psoc_priv);
|
||||
|
||||
return psoc_priv;
|
||||
}
|
||||
|
||||
static inline struct wlan_objmgr_vdev *
|
||||
disa_psoc_get_vdev(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id)
|
||||
{
|
||||
struct wlan_objmgr_vdev *vdev;
|
||||
|
||||
QDF_BUG(vdev_id < WLAN_UMAC_PSOC_MAX_VDEVS);
|
||||
if (vdev_id >= WLAN_UMAC_PSOC_MAX_VDEVS)
|
||||
return NULL;
|
||||
|
||||
wlan_psoc_obj_lock(psoc);
|
||||
vdev = psoc->soc_objmgr.wlan_vdev_list[vdev_id];
|
||||
wlan_psoc_obj_unlock(psoc);
|
||||
|
||||
return vdev;
|
||||
}
|
||||
|
||||
/* Tree Navigation: pdev */
|
||||
static inline struct wlan_objmgr_psoc *
|
||||
disa_pdev_get_psoc(struct wlan_objmgr_pdev *pdev)
|
||||
{
|
||||
struct wlan_objmgr_psoc *psoc;
|
||||
|
||||
psoc = wlan_pdev_get_psoc(pdev);
|
||||
QDF_BUG(psoc);
|
||||
|
||||
return psoc;
|
||||
}
|
||||
|
||||
/* Tree Navigation: vdev */
|
||||
static inline struct wlan_objmgr_pdev *
|
||||
disa_vdev_get_pdev(struct wlan_objmgr_vdev *vdev)
|
||||
{
|
||||
struct wlan_objmgr_pdev *pdev;
|
||||
|
||||
pdev = wlan_vdev_get_pdev(vdev);
|
||||
QDF_BUG(pdev);
|
||||
|
||||
return pdev;
|
||||
}
|
||||
|
||||
static inline struct wlan_objmgr_psoc *
|
||||
disa_vdev_get_psoc(struct wlan_objmgr_vdev *vdev)
|
||||
{
|
||||
return disa_pdev_get_psoc(disa_vdev_get_pdev(vdev));
|
||||
}
|
||||
|
||||
#endif /* _WLAN_DISA_OBJMGR_H */
|
57
components/disa/core/inc/wlan_disa_priv.h
Arquivo normal
57
components/disa/core/inc/wlan_disa_priv.h
Arquivo normal
@@ -0,0 +1,57 @@
|
||||
/*
|
||||
* 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 various struct, macros which are used privately in DISA
|
||||
* component.
|
||||
*
|
||||
* Note: This file shall not contain public API's prototype/declarations.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _WLAN_DISA_PRIV_STRUCT_H_
|
||||
#define _WLAN_DISA_PRIV_STRUCT_H_
|
||||
|
||||
#include "wlan_disa_public_struct.h"
|
||||
|
||||
/**
|
||||
* struct disa_psoc_priv_obj -psoc specific user configuration required for disa
|
||||
*
|
||||
* @disa_rx_ops: rx operations for disa
|
||||
* @disa_tx_ops: tx operations for disa
|
||||
* @disa_psoc_lock: spin lock for disa psoc priv ctx
|
||||
*/
|
||||
struct disa_psoc_priv_obj {
|
||||
struct wlan_disa_rx_ops disa_rx_ops;
|
||||
struct wlan_disa_tx_ops disa_tx_ops;
|
||||
qdf_spinlock_t lock;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct wlan_disa_ctx - disa context for single command
|
||||
*
|
||||
* @callback: hdd callback for disa encrypt/decrypt resp
|
||||
* @callback_context: context for the callback
|
||||
* @lock: spin lock for disa context
|
||||
*/
|
||||
struct wlan_disa_ctx {
|
||||
encrypt_decrypt_resp_callback callback;
|
||||
void *callback_context;
|
||||
qdf_spinlock_t lock;
|
||||
};
|
||||
|
||||
#endif /* end of _WLAN_DISA_PRIV_STRUCT_H_ */
|
55
components/disa/core/src/wlan_disa_main.c
Arquivo normal
55
components/disa/core/src/wlan_disa_main.c
Arquivo normal
@@ -0,0 +1,55 @@
|
||||
/*
|
||||
* 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: Implement various api / helper function which shall be used for
|
||||
* DISA user and target interface.
|
||||
*/
|
||||
|
||||
#include "wlan_disa_main.h"
|
||||
#include "wlan_disa_obj_mgmt_public_struct.h"
|
||||
#include "wlan_disa_tgt_api.h"
|
||||
|
||||
static struct wlan_disa_ctx *gp_disa_ctx;
|
||||
|
||||
QDF_STATUS disa_allocate_ctx(void)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
void disa_free_ctx(void)
|
||||
{
|
||||
}
|
||||
|
||||
struct wlan_disa_ctx *disa_get_context(void)
|
||||
{
|
||||
return gp_disa_ctx;
|
||||
}
|
||||
|
||||
QDF_STATUS disa_core_encrypt_decrypt_req(struct wlan_objmgr_psoc *psoc,
|
||||
struct disa_encrypt_decrypt_req_params *req,
|
||||
encrypt_decrypt_resp_callback cb,
|
||||
void *cookie)
|
||||
{
|
||||
return tgt_disa_encrypt_decrypt_req(psoc, req);
|
||||
}
|
||||
|
||||
QDF_STATUS disa_core_encrypt_decrypt_resp(struct wlan_objmgr_psoc *psoc,
|
||||
struct disa_encrypt_decrypt_resp_params *resp)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
85
components/disa/dispatcher/inc/wlan_disa_obj_mgmt_api.h
Arquivo normal
85
components/disa/dispatcher/inc/wlan_disa_obj_mgmt_api.h
Arquivo normal
@@ -0,0 +1,85 @@
|
||||
/*
|
||||
* 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 disa component
|
||||
* called by other components
|
||||
*/
|
||||
|
||||
#ifndef _WLAN_DISA_OBJ_MGMT_API_H_
|
||||
#define _WLAN_DISA_OBJ_MGMT_API_H_
|
||||
|
||||
#include "wlan_disa_obj_mgmt_public_struct.h"
|
||||
|
||||
/**
|
||||
* disa_init() - register disa notification handlers.
|
||||
*
|
||||
* This function registers disa related notification handlers.
|
||||
*
|
||||
* Return: QDF_STATUS_SUCCESS - in case of success else return error
|
||||
*/
|
||||
QDF_STATUS disa_init(void);
|
||||
|
||||
/**
|
||||
* disa_deinit() - unregister disa notification handlers.
|
||||
*
|
||||
* This function unregisters disa related notification handlers.
|
||||
*
|
||||
* Return: QDF_STATUS_SUCCESS - in case of success else return error
|
||||
*/
|
||||
QDF_STATUS disa_deinit(void);
|
||||
|
||||
/**
|
||||
* disa_psoc_object_created_notification(): disa psoc create handler
|
||||
* @psoc: psoc which is going to created by objmgr
|
||||
* @arg: argument for psoc create handler
|
||||
*
|
||||
* Attach psoc private object, register rx/tx ops and event handlers
|
||||
*
|
||||
* Return QDF_STATUS status in case of success else return error
|
||||
*/
|
||||
QDF_STATUS disa_psoc_object_created_notification(
|
||||
struct wlan_objmgr_psoc *psoc, void *arg);
|
||||
|
||||
/**
|
||||
* disa_psoc_object_destroyed_notification(): disa psoc destroy handler
|
||||
* @psoc: objmgr object corresponding to psoc which is going to be destroyed
|
||||
* @arg: argument for psoc destroy handler
|
||||
*
|
||||
* Detach and free psoc private object, unregister event handlers
|
||||
*
|
||||
* Return QDF_STATUS status in case of success else return error
|
||||
*/
|
||||
QDF_STATUS disa_psoc_object_destroyed_notification(
|
||||
struct wlan_objmgr_psoc *psoc, void *arg);
|
||||
|
||||
/**
|
||||
* disa_psoc_enable() - Trigger psoc enable for DISA
|
||||
* @psoc: objmgr psoc object
|
||||
*
|
||||
* Return: QDF status success or failure
|
||||
*/
|
||||
QDF_STATUS disa_psoc_enable(struct wlan_objmgr_psoc *psoc);
|
||||
|
||||
/**
|
||||
* disa_psoc_disable() - Trigger psoc disable for DISA
|
||||
* @psoc: objmgr psoc object
|
||||
*
|
||||
* Return: QDF status success or failure
|
||||
*/
|
||||
QDF_STATUS disa_psoc_disable(struct wlan_objmgr_psoc *psoc);
|
||||
#endif /* end of _WLAN_DISA_OBJ_MGMT_API_H_ */
|
56
components/disa/dispatcher/inc/wlan_disa_obj_mgmt_public_struct.h
Arquivo normal
56
components/disa/dispatcher/inc/wlan_disa_obj_mgmt_public_struct.h
Arquivo normal
@@ -0,0 +1,56 @@
|
||||
/*
|
||||
* 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 various struct, macros which are used for object mgmt in disa.
|
||||
*
|
||||
* Note: This file shall not contain public API's prototype/declarations.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _WLAN_DISA_OBJ_MGMT_PUBLIC_STRUCT_H_
|
||||
#define _WLAN_DISA_OBJ_MGMT_PUBLIC_STRUCT_H_
|
||||
|
||||
#include "wlan_disa_public_struct.h"
|
||||
#include "wlan_objmgr_cmn.h"
|
||||
#include "wlan_objmgr_psoc_obj.h"
|
||||
|
||||
/**
|
||||
* struct wlan_disa_tx_ops - structure of tx operation function
|
||||
* pointers for disa component
|
||||
* @disa_encrypt_decrypt_req: send encrypt/decrypt request
|
||||
* @disa_register_ev_handlers: register disa event handlers
|
||||
* @disa_unregister_ev_handlers: unregister disa event handlers
|
||||
*/
|
||||
struct wlan_disa_tx_ops {
|
||||
QDF_STATUS (*disa_encrypt_decrypt_req)(struct wlan_objmgr_psoc *psoc,
|
||||
struct disa_encrypt_decrypt_req_params *req);
|
||||
QDF_STATUS (*disa_register_ev_handlers)(struct wlan_objmgr_psoc *psoc);
|
||||
QDF_STATUS (*disa_unregister_ev_handlers)
|
||||
(struct wlan_objmgr_psoc *psoc);
|
||||
};
|
||||
|
||||
/**
|
||||
* struct wlan_disa_rx_ops - structure of rx operation function
|
||||
* pointers for disa component
|
||||
* @encrypt_decrypt_msg_resp: send response of encrypt/decrypt request
|
||||
*/
|
||||
struct wlan_disa_rx_ops {
|
||||
QDF_STATUS (*encrypt_decrypt_msg_resp)(struct wlan_objmgr_psoc *psoc,
|
||||
struct disa_encrypt_decrypt_resp_params *resp);
|
||||
};
|
||||
#endif /* end of _WLAN_DISA_OBJ_MGMT_PUBLIC_STRUCT_H_ */
|
86
components/disa/dispatcher/inc/wlan_disa_public_struct.h
Arquivo normal
86
components/disa/dispatcher/inc/wlan_disa_public_struct.h
Arquivo normal
@@ -0,0 +1,86 @@
|
||||
/*
|
||||
* 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 various struct, macros which shall be used in the DISA
|
||||
* component.
|
||||
*
|
||||
* Note: This file shall not contain public API's prototype/declarations.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _WLAN_DISA_PUBLIC_STRUCT_H_
|
||||
#define _WLAN_DISA_PUBLIC_STRUCT_H_
|
||||
|
||||
#include <wlan_cmn.h>
|
||||
#include <qdf_status.h>
|
||||
|
||||
#define MAC_MAX_KEY_LENGTH 32
|
||||
#define MAC_PN_LENGTH 8
|
||||
#define MAX_MAC_HEADER_LEN 32
|
||||
#define MIN_MAC_HEADER_LEN 24
|
||||
|
||||
/**
|
||||
* struct disa_encrypt_decrypt_req_params - disa encrypt request
|
||||
* @vdev_id: virtual device id
|
||||
* @key_flag: This indicates firmware to encrypt/decrypt payload
|
||||
* see ENCRYPT_DECRYPT_FLAG
|
||||
* @key_idx: Index used in storing key
|
||||
* @key_cipher: cipher used for encryption/decryption
|
||||
* Eg: see WMI_CIPHER_AES_CCM for CCMP
|
||||
* @key_len: length of key data
|
||||
* @key_txmic_len: length of Tx MIC
|
||||
* @key_rxmic_len: length of Rx MIC
|
||||
* @key_data: Key
|
||||
* @pn: packet number
|
||||
* @mac_header: MAC header
|
||||
* @data_len: length of data
|
||||
* @data: pointer to payload
|
||||
*/
|
||||
struct disa_encrypt_decrypt_req_params {
|
||||
uint32_t vdev_id;
|
||||
uint8_t key_flag;
|
||||
uint32_t key_idx;
|
||||
uint32_t key_cipher;
|
||||
uint32_t key_len;
|
||||
uint32_t key_txmic_len;
|
||||
uint32_t key_rxmic_len;
|
||||
uint8_t key_data[MAC_MAX_KEY_LENGTH];
|
||||
uint8_t pn[MAC_PN_LENGTH];
|
||||
uint8_t mac_header[MAX_MAC_HEADER_LEN];
|
||||
uint32_t data_len;
|
||||
uint8_t *data;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct disa_encrypt_decrypt_resp_params - disa encrypt response
|
||||
* @vdev_id: vdev id
|
||||
* @status: status
|
||||
* @data_length: data length
|
||||
* @data: data pointer
|
||||
*/
|
||||
struct disa_encrypt_decrypt_resp_params {
|
||||
uint32_t vdev_id;
|
||||
int32_t status;
|
||||
uint32_t data_len;
|
||||
uint8_t *data;
|
||||
};
|
||||
|
||||
typedef void (*encrypt_decrypt_resp_callback)(void *cookie,
|
||||
struct disa_encrypt_decrypt_resp_params *resp) ;
|
||||
#endif /* end of _WLAN_DISA_PUBLIC_STRUCT_H_ */
|
||||
|
68
components/disa/dispatcher/inc/wlan_disa_tgt_api.h
Arquivo normal
68
components/disa/dispatcher/inc/wlan_disa_tgt_api.h
Arquivo normal
@@ -0,0 +1,68 @@
|
||||
/*
|
||||
* 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 public API for disa to interact with target/WMI
|
||||
*/
|
||||
|
||||
#ifndef _WLAN_DISA_TGT_API_H_
|
||||
#define _WLAN_DISA_TGT_API_H_
|
||||
|
||||
#include "wlan_disa_obj_mgmt_public_struct.h"
|
||||
#include "wlan_disa_public_struct.h"
|
||||
|
||||
#define GET_DISA_TX_OPS_FROM_VDEV(vedv) \
|
||||
(disa_psoc_get_priv(psoc)->disa_tx_ops)
|
||||
|
||||
/**
|
||||
* tgt_disa_encrypt_decrypt_req() - send encrypt/decrypt request to target if
|
||||
* @psoc: objmgr psoc object
|
||||
* @req: encrypt/decrypt parameters
|
||||
*
|
||||
* Return: QDF_STATUS
|
||||
*/
|
||||
QDF_STATUS tgt_disa_encrypt_decrypt_req(struct wlan_objmgr_psoc *psoc,
|
||||
struct disa_encrypt_decrypt_req_params *req);
|
||||
|
||||
/**
|
||||
* tgt_disa_encrypt_decrypt_resp() - receive encrypt/decrypt response
|
||||
* from target if
|
||||
* @psoc: objmgr psoc object
|
||||
* @resp: encrypt/decrypt response containing results
|
||||
*
|
||||
* Return: QDF_STATUS
|
||||
*/
|
||||
QDF_STATUS tgt_disa_encrypt_decrypt_resp(struct wlan_objmgr_psoc *psoc,
|
||||
struct disa_encrypt_decrypt_resp_params *resp);
|
||||
|
||||
/**
|
||||
* tgt_disa_register_ev_handlers() - API to register disa event handlers
|
||||
* @psoc: objmgr psoc object
|
||||
*
|
||||
* Return: QDF_STATUS_SUCCESS in case of success else return error
|
||||
*/
|
||||
QDF_STATUS tgt_disa_register_ev_handlers(struct wlan_objmgr_psoc *psoc);
|
||||
|
||||
/**
|
||||
* tgt_disa_unregister_ev_handlers() - API to unregister disa event handlers
|
||||
* @psoc: objmgr psoc object
|
||||
*
|
||||
* Return: QDF_STATUS_SUCCESS in case of success else return error
|
||||
*/
|
||||
QDF_STATUS tgt_disa_unregister_ev_handlers(struct wlan_objmgr_psoc *psoc);
|
||||
|
||||
#endif /* end of _WLAN_DISA_TGT_API_H_ */
|
44
components/disa/dispatcher/inc/wlan_disa_ucfg_api.h
Arquivo normal
44
components/disa/dispatcher/inc/wlan_disa_ucfg_api.h
Arquivo normal
@@ -0,0 +1,44 @@
|
||||
/*
|
||||
* 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 public API related to the disa called by north bound HDD/OSIF
|
||||
*/
|
||||
|
||||
#ifndef _WLAN_DISA_UCFG_API_H_
|
||||
#define _WLAN_DISA_UCFG_API_H_
|
||||
|
||||
#include "wlan_disa_public_struct.h"
|
||||
#include "wlan_disa_obj_mgmt_api.h"
|
||||
|
||||
/**
|
||||
* ucfg_disa_encrypt_decrypt_req() - Send encrypt/decrypt request to the DISA
|
||||
* core
|
||||
* @psoc: objmgr psoc object
|
||||
* @req: DISA encrypt/decrypt request parameters
|
||||
* @cb: Response callback for the encrypt/decrypt request
|
||||
* @cookie: Cookie to pass to the response callback
|
||||
*
|
||||
* Return: QDF status success or failure
|
||||
*/
|
||||
QDF_STATUS ucfg_disa_encrypt_decrypt_req(struct wlan_objmgr_psoc *psoc,
|
||||
struct disa_encrypt_decrypt_req_params *req,
|
||||
encrypt_decrypt_resp_callback cb,
|
||||
void *cookie);
|
||||
|
||||
|
||||
#endif /* end of _WLAN_DISA_UCFG_API_H_ */
|
210
components/disa/dispatcher/src/wlan_disa_obj_mgmt_api.c
Arquivo normal
210
components/disa/dispatcher/src/wlan_disa_obj_mgmt_api.c
Arquivo normal
@@ -0,0 +1,210 @@
|
||||
/*
|
||||
* 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 DISA component
|
||||
* called by other components
|
||||
*/
|
||||
|
||||
#include "wlan_disa_obj_mgmt_api.h"
|
||||
#include "wlan_disa_main.h"
|
||||
#include "target_if_disa.h"
|
||||
#include "wlan_disa_tgt_api.h"
|
||||
|
||||
/**
|
||||
* disa_init() - register disa notification handlers.
|
||||
*
|
||||
* This function registers disa related notification handlers and
|
||||
* allocates disa context.
|
||||
*
|
||||
* Return: QDF_STATUS_SUCCESS - in case of success else return error
|
||||
*/
|
||||
QDF_STATUS disa_init(void)
|
||||
{
|
||||
QDF_STATUS status;
|
||||
|
||||
DISA_ENTER();
|
||||
|
||||
if (disa_allocate_ctx() != QDF_STATUS_SUCCESS) {
|
||||
disa_err("unable to allocate disa ctx");
|
||||
status = QDF_STATUS_E_FAULT;
|
||||
goto out;
|
||||
}
|
||||
|
||||
status = wlan_objmgr_register_psoc_create_handler(
|
||||
WLAN_UMAC_COMP_DISA,
|
||||
disa_psoc_object_created_notification,
|
||||
NULL);
|
||||
if (status != QDF_STATUS_SUCCESS) {
|
||||
disa_err("unable to register psoc create handler");
|
||||
goto err_free_ctx;
|
||||
}
|
||||
|
||||
status = wlan_objmgr_register_psoc_destroy_handler(
|
||||
WLAN_UMAC_COMP_DISA,
|
||||
disa_psoc_object_destroyed_notification,
|
||||
NULL);
|
||||
if (status != QDF_STATUS_SUCCESS) {
|
||||
disa_err("unable to register psoc destroy handler");
|
||||
wlan_objmgr_unregister_psoc_create_handler(
|
||||
WLAN_UMAC_COMP_DISA,
|
||||
disa_psoc_object_created_notification,
|
||||
NULL);
|
||||
} else {
|
||||
goto out;
|
||||
}
|
||||
|
||||
err_free_ctx:
|
||||
disa_free_ctx();
|
||||
out:
|
||||
DISA_EXIT();
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
/**
|
||||
* disa_deinit() - unregister disa notification handlers.
|
||||
*
|
||||
* This function unregisters disa related notification handlers and
|
||||
* frees disa context.
|
||||
*
|
||||
* Return: QDF_STATUS_SUCCESS - in case of success else return error
|
||||
*/
|
||||
QDF_STATUS disa_deinit(void)
|
||||
{
|
||||
QDF_STATUS status;
|
||||
|
||||
DISA_ENTER();
|
||||
status = wlan_objmgr_unregister_psoc_destroy_handler(
|
||||
WLAN_UMAC_COMP_DISA,
|
||||
disa_psoc_object_destroyed_notification,
|
||||
NULL);
|
||||
if (status != QDF_STATUS_SUCCESS)
|
||||
disa_err("unable to unregister psoc create handle");
|
||||
|
||||
status = wlan_objmgr_unregister_psoc_create_handler(
|
||||
WLAN_UMAC_COMP_DISA,
|
||||
disa_psoc_object_created_notification,
|
||||
NULL);
|
||||
if (status != QDF_STATUS_SUCCESS)
|
||||
disa_err("unable to unregister psoc create handle");
|
||||
|
||||
disa_free_ctx();
|
||||
DISA_EXIT();
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
/**
|
||||
* disa_psoc_object_created_notification(): disa psoc create handler
|
||||
* @psoc: psoc which is going to created by objmgr
|
||||
* @arg: argument for psoc create handler
|
||||
*
|
||||
* Attach psoc private object, register rx/tx ops and event handlers
|
||||
*
|
||||
* Return QDF_STATUS status in case of success else return error
|
||||
*/
|
||||
QDF_STATUS disa_psoc_object_created_notification(
|
||||
struct wlan_objmgr_psoc *psoc, void *arg)
|
||||
{
|
||||
struct disa_psoc_priv_obj *disa_priv;
|
||||
QDF_STATUS status;
|
||||
|
||||
DISA_ENTER();
|
||||
|
||||
disa_priv = qdf_mem_malloc(sizeof(*disa_priv));
|
||||
if (disa_priv == NULL) {
|
||||
disa_err("Failed to allocate disa_priv");
|
||||
status = QDF_STATUS_E_NOMEM;
|
||||
goto out;
|
||||
}
|
||||
|
||||
status = wlan_objmgr_psoc_component_obj_attach(psoc,
|
||||
WLAN_UMAC_COMP_DISA,
|
||||
(void *)disa_priv, QDF_STATUS_SUCCESS);
|
||||
if (status != QDF_STATUS_SUCCESS) {
|
||||
disa_err("Failed to attach disa_priv with psoc");
|
||||
qdf_mem_free(disa_priv);
|
||||
goto out;
|
||||
}
|
||||
|
||||
qdf_spinlock_create(&disa_priv->lock);
|
||||
target_if_disa_register_tx_ops(&disa_priv->disa_tx_ops);
|
||||
|
||||
out:
|
||||
DISA_EXIT();
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
/**
|
||||
* disa_psoc_object_destroyed_notification(): disa psoc destroy handler
|
||||
* @psoc: objmgr object corresponding to psoc which is going to be destroyed
|
||||
* @arg: argument for psoc destroy handler
|
||||
*
|
||||
* Detach and free psoc private object, unregister event handlers
|
||||
*
|
||||
* Return QDF_STATUS status in case of success else return error
|
||||
*/
|
||||
QDF_STATUS disa_psoc_object_destroyed_notification(
|
||||
struct wlan_objmgr_psoc *psoc, void *arg)
|
||||
{
|
||||
struct disa_psoc_priv_obj *disa_priv = NULL;
|
||||
QDF_STATUS status = QDF_STATUS_SUCCESS;
|
||||
|
||||
DISA_ENTER();
|
||||
|
||||
disa_priv = disa_psoc_get_priv(psoc);
|
||||
|
||||
status = wlan_objmgr_psoc_component_obj_detach(psoc,
|
||||
WLAN_UMAC_COMP_DISA,
|
||||
(void *)disa_priv);
|
||||
|
||||
if (status != QDF_STATUS_SUCCESS)
|
||||
disa_err("Failed to detach disa_priv with psoc");
|
||||
|
||||
qdf_spinlock_destroy(&disa_priv->lock);
|
||||
qdf_mem_free(disa_priv);
|
||||
DISA_EXIT();
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
/**
|
||||
* disa_psoc_enable() - Trigger psoc enable for DISA
|
||||
* @psoc: objmgr psoc object
|
||||
*
|
||||
* Return: QDF status success or failure
|
||||
*/
|
||||
QDF_STATUS disa_psoc_enable(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
return tgt_disa_register_ev_handlers(psoc);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* disa_psoc_disable() - Trigger psoc disable for DISA
|
||||
* @psoc: objmgr psoc object
|
||||
*
|
||||
* Return: QDF status success or failure
|
||||
*/
|
||||
QDF_STATUS disa_psoc_disable(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
return tgt_disa_unregister_ev_handlers(psoc);
|
||||
|
||||
}
|
||||
|
74
components/disa/dispatcher/src/wlan_disa_tgt_api.c
Arquivo normal
74
components/disa/dispatcher/src/wlan_disa_tgt_api.c
Arquivo normal
@@ -0,0 +1,74 @@
|
||||
/*
|
||||
* 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: Implements public API for disa to interact with target/WMI
|
||||
*/
|
||||
|
||||
#include "wlan_disa_tgt_api.h"
|
||||
#include "wlan_disa_main.h"
|
||||
#include "wlan_disa_public_struct.h"
|
||||
|
||||
/**
|
||||
* tgt_disa_encrypt_decrypt_req() - send encrypt/decrypt request to target if
|
||||
* @psoc: objmgr psoc object
|
||||
* @req: encrypt/decrypt parameters
|
||||
*
|
||||
* Return: QDF_STATUS
|
||||
*/
|
||||
QDF_STATUS tgt_disa_encrypt_decrypt_req(struct wlan_objmgr_psoc *psoc,
|
||||
struct disa_encrypt_decrypt_req_params *req)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
/**
|
||||
* tgt_disa_encrypt_decrypt_resp() - receive encrypt/decrypt response
|
||||
* from target if
|
||||
* @psoc: objmgr psoc object
|
||||
* @resp: encrypt/decrypt response containing results
|
||||
*
|
||||
* Return: QDF_STATUS
|
||||
*/
|
||||
QDF_STATUS tgt_disa_encrypt_decrypt_resp(struct wlan_objmgr_psoc *psoc,
|
||||
struct disa_encrypt_decrypt_resp_params *resp)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
/**
|
||||
* tgt_disa_register_ev_handlers() - API to register disa event handlers
|
||||
* @psoc: objmgr psoc object
|
||||
*
|
||||
* Return: QDF_STATUS_SUCCESS in case of success else return error
|
||||
*/
|
||||
QDF_STATUS tgt_disa_register_ev_handlers(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
/**
|
||||
* tgt_disa_unregister_ev_handlers() - API to unregister disa event handlers
|
||||
* @psoc: objmgr psoc object
|
||||
*
|
||||
* Return: QDF_STATUS_SUCCESS in case of success else return error
|
||||
*/
|
||||
QDF_STATUS tgt_disa_unregister_ev_handlers(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
41
components/disa/dispatcher/src/wlan_disa_ucfg_api.c
Arquivo normal
41
components/disa/dispatcher/src/wlan_disa_ucfg_api.c
Arquivo normal
@@ -0,0 +1,41 @@
|
||||
/*
|
||||
* 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: public API related to the disa called by north bound HDD/OSIF
|
||||
*/
|
||||
|
||||
#include "wlan_disa_ucfg_api.h"
|
||||
#include "wlan_disa_main.h"
|
||||
|
||||
/**
|
||||
* ucfg_disa_encrypt_decrypt_req() - Send encrypt/decrypt request to the DISA
|
||||
* core
|
||||
* @psoc: objmgr psoc object
|
||||
* @req: DISA encrypt/decrypt request parameters
|
||||
*
|
||||
* Return: QDF status success or failure
|
||||
*/
|
||||
QDF_STATUS ucfg_disa_encrypt_decrypt_req(struct wlan_objmgr_psoc *psoc,
|
||||
struct disa_encrypt_decrypt_req_params *req,
|
||||
encrypt_decrypt_resp_callback cb,
|
||||
void *cookie)
|
||||
{
|
||||
return disa_core_encrypt_decrypt_req(psoc, req, cb, cookie);
|
||||
}
|
||||
|
||||
|
83
components/target_if/disa/inc/target_if_disa.h
Arquivo normal
83
components/target_if/disa/inc/target_if_disa.h
Arquivo normal
@@ -0,0 +1,83 @@
|
||||
/*
|
||||
* 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 various api/struct which shall be used
|
||||
* by disa component for wmi cmd (tx path) and
|
||||
* event (rx) handling.
|
||||
*/
|
||||
|
||||
#ifndef _TARGET_IF_DISA_H_
|
||||
#define _TARGET_IF_DISA_H_
|
||||
|
||||
#include "target_if.h"
|
||||
#include <wmi_unified_api.h>
|
||||
#include <wmi_unified_priv.h>
|
||||
#include <wmi_unified_param.h>
|
||||
#include "wlan_disa_tgt_api.h"
|
||||
#include "wlan_disa_obj_mgmt_public_struct.h"
|
||||
|
||||
/**
|
||||
* target_if_disa_encrypt_decrypt_req() - Send encrypt/decrypt request to
|
||||
* target.
|
||||
* @psoc: objmgr psoc handle
|
||||
* @req: Encrypt/decrypt request params
|
||||
*
|
||||
* Return: QDF status
|
||||
*/
|
||||
QDF_STATUS target_if_disa_encrypt_decrypt_req(struct wlan_objmgr_psoc *psoc,
|
||||
struct disa_encrypt_decrypt_req_params *req);
|
||||
|
||||
/**
|
||||
* target_if_encrypt_decrypt_event_handler() - Collect encrypt/decrypt request
|
||||
* event from the target and pass on the data to tgt api of DISA.
|
||||
* @scn_handle: target handle
|
||||
* @data: event data
|
||||
* @data_len: data length
|
||||
*
|
||||
* Return: QDF status
|
||||
*/
|
||||
int target_if_encrypt_decrypt_event_handler(ol_scn_t scn_handle, uint8_t *data,
|
||||
uint32_t data_len);
|
||||
|
||||
/**
|
||||
* target_if_disa_register_tx_ops() - Register DISA component TX OPS
|
||||
* @tx_ops: DISA if transmit ops
|
||||
*
|
||||
* Return: None
|
||||
*/
|
||||
void target_if_disa_register_tx_ops(struct wlan_disa_tx_ops *tx_ops);
|
||||
|
||||
/**
|
||||
* target_if_disa_register_ev_handler() - Register disa event handlers.
|
||||
* @psoc:objmgr psoc handle
|
||||
*
|
||||
* Return: QDF status
|
||||
*/
|
||||
QDF_STATUS
|
||||
target_if_disa_register_ev_handlers(struct wlan_objmgr_psoc *psoc);
|
||||
|
||||
/**
|
||||
* target_if_disa_register_ev_handler() - Unregister disa event handlers.
|
||||
* @psoc:objmgr psoc handle
|
||||
*
|
||||
* Return: QDF status
|
||||
*/
|
||||
QDF_STATUS
|
||||
target_if_disa_unregister_ev_handlers(struct wlan_objmgr_psoc *psoc);
|
||||
#endif
|
||||
|
57
components/target_if/disa/src/target_if_disa.c
Arquivo normal
57
components/target_if/disa/src/target_if_disa.c
Arquivo normal
@@ -0,0 +1,57 @@
|
||||
/*
|
||||
* 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: Target interface file for disa component to
|
||||
* Implement api's which shall be used by disa component
|
||||
* in target if internally.
|
||||
*/
|
||||
|
||||
#include "target_if_disa.h"
|
||||
#include "wlan_disa_tgt_api.h"
|
||||
#include "wlan_disa_public_struct.h"
|
||||
|
||||
int
|
||||
target_if_encrypt_decrypt_event_handler(ol_scn_t scn_handle, uint8_t *data,
|
||||
uint32_t data_len)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
QDF_STATUS
|
||||
target_if_disa_register_ev_handlers(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
QDF_STATUS
|
||||
target_if_disa_unregister_ev_handlers(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
QDF_STATUS
|
||||
target_if_disa_encrypt_decrypt_req(struct wlan_objmgr_psoc *psoc,
|
||||
struct disa_encrypt_decrypt_req_params *req)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
void target_if_disa_register_tx_ops(struct wlan_disa_tx_ops *disa_tx_ops)
|
||||
{
|
||||
}
|
@@ -955,6 +955,9 @@ QDF_STATUS cds_enable(struct wlan_objmgr_psoc *psoc)
|
||||
|
||||
dispatcher_psoc_enable(psoc);
|
||||
|
||||
/* Trigger psoc enable for CLD components */
|
||||
hdd_component_psoc_enable(psoc);
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
|
||||
err_soc_target_detach:
|
||||
@@ -1016,8 +1019,11 @@ QDF_STATUS cds_disable(struct wlan_objmgr_psoc *psoc)
|
||||
* wma_stop() does target PDEV suspend.
|
||||
*/
|
||||
|
||||
if (psoc)
|
||||
/* Trigger psoc disable for CLD components */
|
||||
if (psoc) {
|
||||
hdd_component_psoc_disable(psoc);
|
||||
dispatcher_psoc_disable(psoc);
|
||||
}
|
||||
|
||||
qdf_status = wma_stop(HAL_STOP_TYPE_RF_KILL);
|
||||
|
||||
|
@@ -2880,6 +2880,20 @@ uint32_t hdd_limit_max_per_index_score(uint32_t per_index_score);
|
||||
struct hdd_station_info *hdd_get_stainfo(struct hdd_station_info *astainfo,
|
||||
struct qdf_mac_addr mac_addr);
|
||||
|
||||
/**
|
||||
* hdd_component_psoc_enable() - Trigger psoc enable for CLD Components
|
||||
*
|
||||
* Return: None
|
||||
*/
|
||||
void hdd_component_psoc_enable(struct wlan_objmgr_psoc *psoc);
|
||||
|
||||
/**
|
||||
* hdd_component_psoc_disable() - Trigger psoc disable for CLD Components
|
||||
*
|
||||
* Return: None
|
||||
*/
|
||||
void hdd_component_psoc_disable(struct wlan_objmgr_psoc *psoc);
|
||||
|
||||
int hdd_driver_memdump_init(void);
|
||||
void hdd_driver_memdump_deinit(void);
|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2016-2017 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2016-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
|
||||
@@ -24,6 +24,7 @@
|
||||
*/
|
||||
|
||||
#include "wlan_hdd_disa.h"
|
||||
#include "wlan_disa_ucfg_api.h"
|
||||
#include "wlan_hdd_request_manager.h"
|
||||
#include "sme_api.h"
|
||||
#include <qca_vendor.h>
|
||||
@@ -40,26 +41,26 @@
|
||||
*/
|
||||
struct hdd_encrypt_decrypt_msg_context {
|
||||
int status;
|
||||
struct encrypt_decrypt_req_params request;
|
||||
struct sir_encrypt_decrypt_rsp_params response;
|
||||
struct disa_encrypt_decrypt_req_params request;
|
||||
struct disa_encrypt_decrypt_resp_params response;
|
||||
};
|
||||
|
||||
/**
|
||||
* hdd_encrypt_decrypt_msg_cb () - encrypt/decrypt response message handler
|
||||
* @cookie: hdd request cookie
|
||||
* @encrypt_decrypt_rsp_params: encrypt/decrypt response parameters
|
||||
* @resp: encrypt/decrypt response parameters
|
||||
*
|
||||
* Return: none
|
||||
*/
|
||||
static void hdd_encrypt_decrypt_msg_cb(void *cookie,
|
||||
struct sir_encrypt_decrypt_rsp_params *encrypt_decrypt_rsp_params)
|
||||
struct disa_encrypt_decrypt_resp_params *resp)
|
||||
{
|
||||
struct hdd_request *request;
|
||||
struct hdd_encrypt_decrypt_msg_context *context;
|
||||
|
||||
ENTER();
|
||||
|
||||
if (!encrypt_decrypt_rsp_params) {
|
||||
if (!resp) {
|
||||
hdd_err("rsp params is NULL");
|
||||
return;
|
||||
}
|
||||
@@ -72,28 +73,28 @@ static void hdd_encrypt_decrypt_msg_cb(void *cookie,
|
||||
|
||||
print_hex_dump(KERN_INFO, "Data in hdd_encrypt_decrypt_msg_cb: ",
|
||||
DUMP_PREFIX_NONE, 16, 1,
|
||||
encrypt_decrypt_rsp_params->data,
|
||||
encrypt_decrypt_rsp_params->data_length, 0);
|
||||
resp->data,
|
||||
resp->data_len, 0);
|
||||
|
||||
hdd_debug("vdev_id: %d status:%d data_length: %d",
|
||||
encrypt_decrypt_rsp_params->vdev_id,
|
||||
encrypt_decrypt_rsp_params->status,
|
||||
encrypt_decrypt_rsp_params->data_length);
|
||||
resp->vdev_id,
|
||||
resp->status,
|
||||
resp->data_len);
|
||||
|
||||
context = hdd_request_priv(request);
|
||||
context->response = *encrypt_decrypt_rsp_params;
|
||||
context->response = *resp;
|
||||
context->status = 0;
|
||||
if (encrypt_decrypt_rsp_params->data_length) {
|
||||
if (resp->data_len) {
|
||||
context->response.data =
|
||||
qdf_mem_malloc(sizeof(uint8_t) *
|
||||
encrypt_decrypt_rsp_params->data_length);
|
||||
resp->data_len);
|
||||
if (!context->response.data) {
|
||||
hdd_err("memory allocation failed");
|
||||
context->status = -ENOMEM;
|
||||
} else {
|
||||
qdf_mem_copy(context->response.data,
|
||||
encrypt_decrypt_rsp_params->data,
|
||||
encrypt_decrypt_rsp_params->data_length);
|
||||
resp->data,
|
||||
resp->data_len);
|
||||
}
|
||||
} else {
|
||||
/* make sure we don't have a rogue pointer */
|
||||
@@ -105,7 +106,6 @@ static void hdd_encrypt_decrypt_msg_cb(void *cookie,
|
||||
EXIT();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* hdd_post_encrypt_decrypt_msg_rsp () - send encrypt/decrypt data to user space
|
||||
* @encrypt_decrypt_rsp_params: encrypt/decrypt response parameters
|
||||
@@ -113,14 +113,14 @@ static void hdd_encrypt_decrypt_msg_cb(void *cookie,
|
||||
* Return: none
|
||||
*/
|
||||
static int hdd_post_encrypt_decrypt_msg_rsp(struct hdd_context *hdd_ctx,
|
||||
struct sir_encrypt_decrypt_rsp_params *encrypt_decrypt_rsp_params)
|
||||
struct disa_encrypt_decrypt_resp_params *resp)
|
||||
{
|
||||
struct sk_buff *skb;
|
||||
uint32_t nl_buf_len;
|
||||
|
||||
ENTER();
|
||||
|
||||
nl_buf_len = encrypt_decrypt_rsp_params->data_length + NLA_HDRLEN;
|
||||
nl_buf_len = resp->data_len + NLA_HDRLEN;
|
||||
|
||||
skb = cfg80211_vendor_cmd_alloc_reply_skb(hdd_ctx->wiphy, nl_buf_len);
|
||||
if (!skb) {
|
||||
@@ -128,10 +128,9 @@ static int hdd_post_encrypt_decrypt_msg_rsp(struct hdd_context *hdd_ctx,
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
if (encrypt_decrypt_rsp_params->data_length) {
|
||||
if (resp->data_len) {
|
||||
if (nla_put(skb, QCA_WLAN_VENDOR_ATTR_ENCRYPTION_TEST_DATA,
|
||||
encrypt_decrypt_rsp_params->data_length,
|
||||
encrypt_decrypt_rsp_params->data)) {
|
||||
resp->data_len, resp->data)) {
|
||||
hdd_err("put fail");
|
||||
goto nla_put_failure;
|
||||
}
|
||||
@@ -150,10 +149,10 @@ static const struct nla_policy
|
||||
encrypt_decrypt_policy[QCA_WLAN_VENDOR_ATTR_ENCRYPTION_TEST_MAX + 1] = {
|
||||
[QCA_WLAN_VENDOR_ATTR_ENCRYPTION_TEST_NEEDS_DECRYPTION] = {
|
||||
.type = NLA_FLAG},
|
||||
[QCA_WLAN_VENDOR_ATTR_ENCRYPTION_TEST_KEYID] = {
|
||||
.type = NLA_U8},
|
||||
[QCA_WLAN_VENDOR_ATTR_ENCRYPTION_TEST_CIPHER] = {
|
||||
.type = NLA_U32},
|
||||
[QCA_WLAN_VENDOR_ATTR_ENCRYPTION_TEST_KEYID] = {
|
||||
.type = NLA_U8},
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -166,11 +165,12 @@ encrypt_decrypt_policy[QCA_WLAN_VENDOR_ATTR_ENCRYPTION_TEST_MAX + 1] = {
|
||||
*
|
||||
Return: 0 on success, negative errno on failure
|
||||
*/
|
||||
static int hdd_fill_encrypt_decrypt_params(struct encrypt_decrypt_req_params
|
||||
*encrypt_decrypt_params,
|
||||
struct hdd_adapter *adapter,
|
||||
const void *data,
|
||||
int data_len)
|
||||
static int
|
||||
hdd_fill_encrypt_decrypt_params(struct disa_encrypt_decrypt_req_params
|
||||
*encrypt_decrypt_params,
|
||||
struct hdd_adapter *adapter,
|
||||
const void *data,
|
||||
int data_len)
|
||||
{
|
||||
struct nlattr *tb[QCA_WLAN_VENDOR_ATTR_ENCRYPTION_TEST_MAX + 1];
|
||||
uint8_t len, mac_hdr_len;
|
||||
@@ -381,11 +381,11 @@ static int hdd_encrypt_decrypt_msg(struct hdd_adapter *adapter,
|
||||
goto cleanup;
|
||||
|
||||
cookie = hdd_request_cookie(request);
|
||||
qdf_status = sme_encrypt_decrypt_msg(hdd_ctx->hHal,
|
||||
&context->request,
|
||||
hdd_encrypt_decrypt_msg_cb,
|
||||
cookie);
|
||||
|
||||
qdf_status = ucfg_disa_encrypt_decrypt_req(hdd_ctx->hdd_psoc,
|
||||
&context->request,
|
||||
hdd_encrypt_decrypt_msg_cb,
|
||||
cookie);
|
||||
|
||||
if (!QDF_IS_STATUS_SUCCESS(qdf_status)) {
|
||||
hdd_err("Unable to post encrypt/decrypt message");
|
||||
|
@@ -130,6 +130,10 @@
|
||||
#include <cdp_txrx_cmn_struct.h>
|
||||
#include "wlan_hdd_sysfs.h"
|
||||
|
||||
#ifdef WLAN_FEATURE_DISA
|
||||
#include "wlan_disa_ucfg_api.h"
|
||||
#endif
|
||||
|
||||
#ifdef CNSS_GENL
|
||||
#include <net/cnss_nl.h>
|
||||
#endif
|
||||
@@ -11538,6 +11542,9 @@ static void wlan_hdd_state_ctrl_param_destroy(void)
|
||||
static void component_init(void)
|
||||
{
|
||||
pmo_init();
|
||||
#ifdef WLAN_FEATURE_DISA
|
||||
disa_init();
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -11548,6 +11555,23 @@ static void component_init(void)
|
||||
static void component_deinit(void)
|
||||
{
|
||||
pmo_deinit();
|
||||
#ifdef WLAN_FEATURE_DISA
|
||||
disa_deinit();
|
||||
#endif
|
||||
}
|
||||
|
||||
void hdd_component_psoc_enable(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
#ifdef WLAN_FEATURE_DISA
|
||||
disa_psoc_enable(psoc);
|
||||
#endif
|
||||
}
|
||||
|
||||
void hdd_component_psoc_disable(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
#ifdef WLAN_FEATURE_DISA
|
||||
disa_psoc_disable(psoc);
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
|
Referência em uma nova issue
Block a user