qcacmn: Define NAN components's get/set and utility APIs
Define set/get and utility APIs to be used by NAN and other UMAC components. Change-Id: Ib3c3c9711ab823dfdf538099d30078b703566fe1 CRs-Fixed: 2014795
This commit is contained in:

committed by
Sandeep Puligilla

parent
5b3602a617
commit
207fb4ead9
@@ -19,3 +19,40 @@
|
|||||||
/**
|
/**
|
||||||
* DOC: contains core nan function definitions
|
* DOC: contains core nan function definitions
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "nan_main_i.h"
|
||||||
|
#include "wlan_objmgr_psoc_obj.h"
|
||||||
|
#include "wlan_objmgr_pdev_obj.h"
|
||||||
|
#include "wlan_objmgr_vdev_obj.h"
|
||||||
|
|
||||||
|
struct nan_vdev_priv_obj *nan_get_vdev_priv_obj(
|
||||||
|
struct wlan_objmgr_vdev *vdev)
|
||||||
|
{
|
||||||
|
struct nan_vdev_priv_obj *obj;
|
||||||
|
|
||||||
|
if (!vdev) {
|
||||||
|
nan_err("vdev is null");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
wlan_vdev_obj_lock(vdev);
|
||||||
|
obj = wlan_objmgr_vdev_get_comp_private_obj(vdev, WLAN_UMAC_COMP_NAN);
|
||||||
|
wlan_vdev_obj_unlock(vdev);
|
||||||
|
|
||||||
|
return obj;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct nan_psoc_priv_obj *nan_get_psoc_priv_obj(
|
||||||
|
struct wlan_objmgr_psoc *psoc)
|
||||||
|
{
|
||||||
|
struct nan_psoc_priv_obj *obj;
|
||||||
|
|
||||||
|
if (!psoc) {
|
||||||
|
nan_err("psoc is null");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
wlan_psoc_obj_lock(psoc);
|
||||||
|
obj = wlan_objmgr_psoc_get_comp_private_obj(psoc, WLAN_UMAC_COMP_NAN);
|
||||||
|
wlan_psoc_obj_unlock(psoc);
|
||||||
|
|
||||||
|
return obj;
|
||||||
|
}
|
@@ -88,4 +88,20 @@ struct nan_vdev_priv_obj {
|
|||||||
uint32_t ndi_delete_rsp_status;
|
uint32_t ndi_delete_rsp_status;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* nan_get_vdev_priv_obj: get NAN priv object from vdev object
|
||||||
|
* @vdev: pointer to vdev object
|
||||||
|
*
|
||||||
|
* Return: pointer to NAN vdev private object
|
||||||
|
*/
|
||||||
|
struct nan_vdev_priv_obj *nan_get_vdev_priv_obj(struct wlan_objmgr_vdev *vdev);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* nan_get_psoc_priv_obj: get NAN priv object from psoc object
|
||||||
|
* @psoc: pointer to psoc object
|
||||||
|
*
|
||||||
|
* Return: pointer to NAN psoc private object
|
||||||
|
*/
|
||||||
|
struct nan_psoc_priv_obj *nan_get_psoc_priv_obj(struct wlan_objmgr_psoc *psoc);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -19,3 +19,155 @@
|
|||||||
/**
|
/**
|
||||||
* DOC: contains interface prototypes for OS_IF layer
|
* DOC: contains interface prototypes for OS_IF layer
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#ifndef _NAN_UCFG_API_H_
|
||||||
|
#define _NAN_UCFG_API_H_
|
||||||
|
|
||||||
|
#include "qdf_types.h"
|
||||||
|
#include "qdf_status.h"
|
||||||
|
|
||||||
|
struct nan_callbacks;
|
||||||
|
struct wlan_objmgr_vdev;
|
||||||
|
struct wlan_objmgr_psoc;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ucfg_nan_set_ndi_state: set ndi state
|
||||||
|
* @vdev: pointer to vdev object
|
||||||
|
* @state: value to set
|
||||||
|
*
|
||||||
|
* Return: status of operation
|
||||||
|
*/
|
||||||
|
QDF_STATUS ucfg_nan_set_ndi_state(struct wlan_objmgr_vdev *vdev,
|
||||||
|
uint32_t state);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ucfg_nan_get_ndi_state: get ndi state from vdev obj
|
||||||
|
* @vdev: pointer to vdev object
|
||||||
|
*
|
||||||
|
* Return: ndi state
|
||||||
|
*/
|
||||||
|
enum nan_datapath_state ucfg_nan_get_ndi_state(struct wlan_objmgr_vdev *vdev);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ucfg_nan_set_active_peers: set active ndi peer
|
||||||
|
* @vdev: pointer to vdev object
|
||||||
|
* @val: value to set
|
||||||
|
*
|
||||||
|
* Return: status of operation
|
||||||
|
*/
|
||||||
|
QDF_STATUS ucfg_nan_set_active_peers(struct wlan_objmgr_vdev *vdev,
|
||||||
|
uint32_t val);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ucfg_nan_get_active_peers: get active ndi peer from vdev obj
|
||||||
|
* @vdev: pointer to vdev object
|
||||||
|
*
|
||||||
|
* Return: active ndi peer
|
||||||
|
*/
|
||||||
|
uint32_t ucfg_nan_get_active_peers(struct wlan_objmgr_vdev *vdev);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ucfg_nan_set_active_ndp_sessions: set active ndp sessions
|
||||||
|
* @vdev: pointer to vdev object
|
||||||
|
*
|
||||||
|
* Return: status of operation
|
||||||
|
*/
|
||||||
|
QDF_STATUS ucfg_nan_set_active_ndp_sessions(struct wlan_objmgr_vdev *vdev,
|
||||||
|
uint32_t val, uint8_t idx);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ucfg_nan_get_active_ndp_sessions: get active ndp sessions from vdev obj
|
||||||
|
* @vdev: pointer to vdev object
|
||||||
|
*
|
||||||
|
* Return: pointer to NAN psoc private object
|
||||||
|
*/
|
||||||
|
uint32_t ucfg_nan_get_active_ndp_sessions(struct wlan_objmgr_vdev *vdev,
|
||||||
|
uint8_t idx);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ucfg_nan_set_ndp_create_transaction_id: set ndp create transaction id
|
||||||
|
* @vdev: pointer to vdev object
|
||||||
|
* @val: value to set
|
||||||
|
*
|
||||||
|
* Return: status of operation
|
||||||
|
*/
|
||||||
|
QDF_STATUS ucfg_nan_set_ndp_create_transaction_id(struct wlan_objmgr_vdev *vdev,
|
||||||
|
uint16_t val);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ucfg_nan_get_ndp_create_transaction_id: get ndp create transaction id
|
||||||
|
* vdev obj
|
||||||
|
* @vdev: pointer to vdev object
|
||||||
|
*
|
||||||
|
* Return: ndp create transaction_id
|
||||||
|
*/
|
||||||
|
uint16_t ucfg_nan_get_ndp_create_transaction_id(struct wlan_objmgr_vdev *vdev);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ucfg_nan_set_ndp_delete_transaction_id: set ndp delete transaction id
|
||||||
|
* @vdev: pointer to vdev object
|
||||||
|
* @val: value to set
|
||||||
|
*
|
||||||
|
* Return: status of operation
|
||||||
|
*/
|
||||||
|
QDF_STATUS ucfg_nan_set_ndp_delete_transaction_id(struct wlan_objmgr_vdev *vdev,
|
||||||
|
uint16_t val);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ucfg_nan_get_ndp_delete_transaction_id: get ndp delete transaction id from
|
||||||
|
* vdev obj
|
||||||
|
* @vdev: pointer to vdev object
|
||||||
|
*
|
||||||
|
* Return: ndp delete transaction_id
|
||||||
|
*/
|
||||||
|
uint16_t ucfg_nan_get_ndp_delete_transaction_id(struct wlan_objmgr_vdev *vdev);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ucfg_nan_set_ndi_delete_rsp_reason: set ndi delete response reason
|
||||||
|
* @vdev: pointer to vdev object
|
||||||
|
* @val: value to set
|
||||||
|
*
|
||||||
|
* Return: status of operation
|
||||||
|
*/
|
||||||
|
QDF_STATUS ucfg_nan_set_ndi_delete_rsp_reason(struct wlan_objmgr_vdev *vdev,
|
||||||
|
uint32_t val);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ucfg_nan_get_ndi_delete_rsp_reason: get ndi delete response reason from vdev
|
||||||
|
* obj
|
||||||
|
* @vdev: pointer to vdev object
|
||||||
|
*
|
||||||
|
* Return: ndi delete rsp reason
|
||||||
|
*/
|
||||||
|
uint32_t ucfg_nan_get_ndi_delete_rsp_reason(struct wlan_objmgr_vdev *vdev);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ucfg_nan_set_ndi_delete_rsp_status: set ndi delete response reason
|
||||||
|
* @vdev: pointer to vdev object
|
||||||
|
* @val: value to set
|
||||||
|
*
|
||||||
|
* Return: status of operation
|
||||||
|
*/
|
||||||
|
QDF_STATUS ucfg_nan_set_ndi_delete_rsp_status(struct wlan_objmgr_vdev *vdev,
|
||||||
|
uint32_t val);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ucfg_nan_get_ndi_delete_rsp_status: get ndi delete response status from vdev
|
||||||
|
* obj
|
||||||
|
* @vdev: pointer to vdev object
|
||||||
|
*
|
||||||
|
* Return: ndi delete rsp status
|
||||||
|
*/
|
||||||
|
uint32_t ucfg_nan_get_ndi_delete_rsp_status(struct wlan_objmgr_vdev *vdev);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ucfg_nan_get_callbacks: ucfg API to return callbacks
|
||||||
|
* @psoc: pointer to psoc object
|
||||||
|
* @cb_obj: callback struct to populate
|
||||||
|
*
|
||||||
|
* Return: callback struct on sucess, NULL otherwise
|
||||||
|
*/
|
||||||
|
QDF_STATUS ucfg_nan_get_callbacks(struct wlan_objmgr_psoc *psoc,
|
||||||
|
struct nan_callbacks *cb_obj);
|
||||||
|
|
||||||
|
#endif /* _NAN_UCFG_API_H_ */
|
||||||
|
@@ -20,3 +20,277 @@
|
|||||||
* DOC: contains interface definitions for OS_IF layer
|
* DOC: contains interface definitions for OS_IF layer
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "nan_ucfg_api.h"
|
||||||
|
#include "nan_public_structs.h"
|
||||||
|
#include "../../core/src/nan_main_i.h"
|
||||||
|
|
||||||
|
inline QDF_STATUS ucfg_nan_set_ndi_state(struct wlan_objmgr_vdev *vdev,
|
||||||
|
uint32_t state)
|
||||||
|
{
|
||||||
|
struct nan_vdev_priv_obj *priv_obj = nan_get_vdev_priv_obj(vdev);
|
||||||
|
|
||||||
|
if (!priv_obj) {
|
||||||
|
nan_err("priv_obj is null");
|
||||||
|
return QDF_STATUS_E_NULL_VALUE;
|
||||||
|
}
|
||||||
|
qdf_spin_lock_bh(&priv_obj->lock);
|
||||||
|
priv_obj->state = state;
|
||||||
|
qdf_spin_unlock_bh(&priv_obj->lock);
|
||||||
|
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline enum nan_datapath_state ucfg_nan_get_ndi_state(
|
||||||
|
struct wlan_objmgr_vdev *vdev)
|
||||||
|
{
|
||||||
|
enum nan_datapath_state val;
|
||||||
|
struct nan_vdev_priv_obj *priv_obj = nan_get_vdev_priv_obj(vdev);
|
||||||
|
|
||||||
|
if (!priv_obj) {
|
||||||
|
nan_err("priv_obj is null");
|
||||||
|
return NAN_DATA_INVALID_STATE;
|
||||||
|
}
|
||||||
|
|
||||||
|
qdf_spin_lock_bh(&priv_obj->lock);
|
||||||
|
val = priv_obj->state;
|
||||||
|
qdf_spin_unlock_bh(&priv_obj->lock);
|
||||||
|
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline QDF_STATUS ucfg_nan_set_active_peers(struct wlan_objmgr_vdev *vdev,
|
||||||
|
uint32_t val)
|
||||||
|
{
|
||||||
|
struct nan_vdev_priv_obj *priv_obj = nan_get_vdev_priv_obj(vdev);
|
||||||
|
|
||||||
|
if (!priv_obj) {
|
||||||
|
nan_err("priv_obj is null");
|
||||||
|
return QDF_STATUS_E_NULL_VALUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
qdf_spin_lock_bh(&priv_obj->lock);
|
||||||
|
priv_obj->active_ndp_peers = val;
|
||||||
|
qdf_spin_unlock_bh(&priv_obj->lock);
|
||||||
|
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline uint32_t ucfg_nan_get_active_peers(struct wlan_objmgr_vdev *vdev)
|
||||||
|
{
|
||||||
|
uint32_t val;
|
||||||
|
struct nan_vdev_priv_obj *priv_obj = nan_get_vdev_priv_obj(vdev);
|
||||||
|
|
||||||
|
if (!priv_obj) {
|
||||||
|
nan_err("priv_obj is null");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
qdf_spin_lock_bh(&priv_obj->lock);
|
||||||
|
val = priv_obj->active_ndp_peers;
|
||||||
|
qdf_spin_unlock_bh(&priv_obj->lock);
|
||||||
|
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline QDF_STATUS ucfg_nan_set_active_ndp_sessions(
|
||||||
|
struct wlan_objmgr_vdev *vdev, uint32_t val, uint8_t idx)
|
||||||
|
{
|
||||||
|
struct nan_vdev_priv_obj *priv_obj = nan_get_vdev_priv_obj(vdev);
|
||||||
|
|
||||||
|
if (!priv_obj) {
|
||||||
|
nan_err("priv_obj is null");
|
||||||
|
return QDF_STATUS_E_NULL_VALUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (idx > MAX_PEERS) {
|
||||||
|
nan_err("peer_idx(%d) is greater than MAX(%d) is null",
|
||||||
|
idx, MAX_PEERS);
|
||||||
|
return QDF_STATUS_E_NULL_VALUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
qdf_spin_lock_bh(&priv_obj->lock);
|
||||||
|
priv_obj->active_ndp_sessions[idx] = val;
|
||||||
|
qdf_spin_unlock_bh(&priv_obj->lock);
|
||||||
|
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline uint32_t ucfg_nan_get_active_ndp_sessions(struct wlan_objmgr_vdev *vdev,
|
||||||
|
uint8_t idx)
|
||||||
|
{
|
||||||
|
uint32_t val;
|
||||||
|
struct nan_vdev_priv_obj *priv_obj = nan_get_vdev_priv_obj(vdev);
|
||||||
|
|
||||||
|
if (!priv_obj) {
|
||||||
|
nan_err("priv_obj is null");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (idx > MAX_PEERS) {
|
||||||
|
nan_err("peer_idx(%d) is greater than MAX(%d) is null",
|
||||||
|
idx, MAX_PEERS);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
qdf_spin_lock_bh(&priv_obj->lock);
|
||||||
|
val = priv_obj->active_ndp_sessions[idx];
|
||||||
|
qdf_spin_unlock_bh(&priv_obj->lock);
|
||||||
|
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline QDF_STATUS ucfg_nan_set_ndp_create_transaction_id(
|
||||||
|
struct wlan_objmgr_vdev *vdev, uint16_t val)
|
||||||
|
{
|
||||||
|
struct nan_vdev_priv_obj *priv_obj = nan_get_vdev_priv_obj(vdev);
|
||||||
|
|
||||||
|
if (!priv_obj) {
|
||||||
|
nan_err("priv_obj is null");
|
||||||
|
return QDF_STATUS_E_NULL_VALUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
qdf_spin_lock_bh(&priv_obj->lock);
|
||||||
|
priv_obj->ndp_create_transaction_id = val;
|
||||||
|
qdf_spin_unlock_bh(&priv_obj->lock);
|
||||||
|
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline uint16_t ucfg_nan_get_ndp_create_transaction_id(
|
||||||
|
struct wlan_objmgr_vdev *vdev)
|
||||||
|
{
|
||||||
|
uint16_t val;
|
||||||
|
struct nan_vdev_priv_obj *priv_obj = nan_get_vdev_priv_obj(vdev);
|
||||||
|
|
||||||
|
if (!priv_obj) {
|
||||||
|
nan_err("priv_obj is null");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
qdf_spin_lock_bh(&priv_obj->lock);
|
||||||
|
val = priv_obj->ndp_create_transaction_id;
|
||||||
|
qdf_spin_unlock_bh(&priv_obj->lock);
|
||||||
|
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline QDF_STATUS ucfg_nan_set_ndp_delete_transaction_id(
|
||||||
|
struct wlan_objmgr_vdev *vdev, uint16_t val)
|
||||||
|
{
|
||||||
|
struct nan_vdev_priv_obj *priv_obj = nan_get_vdev_priv_obj(vdev);
|
||||||
|
|
||||||
|
if (!priv_obj) {
|
||||||
|
nan_err("priv_obj is null");
|
||||||
|
return QDF_STATUS_E_NULL_VALUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
qdf_spin_lock_bh(&priv_obj->lock);
|
||||||
|
priv_obj->ndp_delete_transaction_id = val;
|
||||||
|
qdf_spin_unlock_bh(&priv_obj->lock);
|
||||||
|
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline uint16_t ucfg_nan_get_ndp_delete_transaction_id(
|
||||||
|
struct wlan_objmgr_vdev *vdev)
|
||||||
|
{
|
||||||
|
uint16_t val;
|
||||||
|
struct nan_vdev_priv_obj *priv_obj = nan_get_vdev_priv_obj(vdev);
|
||||||
|
|
||||||
|
if (!priv_obj) {
|
||||||
|
nan_err("priv_obj is null");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
qdf_spin_lock_bh(&priv_obj->lock);
|
||||||
|
val = priv_obj->ndp_delete_transaction_id;
|
||||||
|
qdf_spin_unlock_bh(&priv_obj->lock);
|
||||||
|
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline QDF_STATUS ucfg_nan_set_ndi_delete_rsp_reason(
|
||||||
|
struct wlan_objmgr_vdev *vdev, uint32_t val)
|
||||||
|
{
|
||||||
|
struct nan_vdev_priv_obj *priv_obj = nan_get_vdev_priv_obj(vdev);
|
||||||
|
|
||||||
|
if (!priv_obj) {
|
||||||
|
nan_err("priv_obj is null");
|
||||||
|
return QDF_STATUS_E_NULL_VALUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
qdf_spin_lock_bh(&priv_obj->lock);
|
||||||
|
priv_obj->ndi_delete_rsp_reason = val;
|
||||||
|
qdf_spin_unlock_bh(&priv_obj->lock);
|
||||||
|
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline uint32_t ucfg_nan_get_ndi_delete_rsp_reason(
|
||||||
|
struct wlan_objmgr_vdev *vdev)
|
||||||
|
{
|
||||||
|
uint32_t val;
|
||||||
|
struct nan_vdev_priv_obj *priv_obj = nan_get_vdev_priv_obj(vdev);
|
||||||
|
|
||||||
|
if (!priv_obj) {
|
||||||
|
nan_err("priv_obj is null");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
qdf_spin_lock_bh(&priv_obj->lock);
|
||||||
|
val = priv_obj->ndi_delete_rsp_reason;
|
||||||
|
qdf_spin_unlock_bh(&priv_obj->lock);
|
||||||
|
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline QDF_STATUS ucfg_nan_set_ndi_delete_rsp_status(
|
||||||
|
struct wlan_objmgr_vdev *vdev, uint32_t val)
|
||||||
|
{
|
||||||
|
struct nan_vdev_priv_obj *priv_obj = nan_get_vdev_priv_obj(vdev);
|
||||||
|
|
||||||
|
if (!priv_obj) {
|
||||||
|
nan_err("priv_obj is null");
|
||||||
|
return QDF_STATUS_E_NULL_VALUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
qdf_spin_lock_bh(&priv_obj->lock);
|
||||||
|
priv_obj->ndi_delete_rsp_status = val;
|
||||||
|
qdf_spin_unlock_bh(&priv_obj->lock);
|
||||||
|
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline uint32_t ucfg_nan_get_ndi_delete_rsp_status(
|
||||||
|
struct wlan_objmgr_vdev *vdev)
|
||||||
|
{
|
||||||
|
uint32_t val;
|
||||||
|
struct nan_vdev_priv_obj *priv_obj = nan_get_vdev_priv_obj(vdev);
|
||||||
|
|
||||||
|
if (!priv_obj) {
|
||||||
|
nan_err("priv_obj is null");
|
||||||
|
return QDF_STATUS_E_NULL_VALUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
qdf_spin_lock_bh(&priv_obj->lock);
|
||||||
|
val = priv_obj->ndi_delete_rsp_status;
|
||||||
|
qdf_spin_unlock_bh(&priv_obj->lock);
|
||||||
|
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline QDF_STATUS ucfg_nan_get_callbacks(struct wlan_objmgr_psoc *psoc,
|
||||||
|
struct nan_callbacks *cb_obj)
|
||||||
|
{
|
||||||
|
struct nan_psoc_priv_obj *psoc_obj = nan_get_psoc_priv_obj(psoc);
|
||||||
|
|
||||||
|
if (!psoc_obj) {
|
||||||
|
nan_err("nan psoc priv object is NULL");
|
||||||
|
return QDF_STATUS_E_NULL_VALUE;
|
||||||
|
}
|
||||||
|
qdf_spin_lock_bh(&psoc_obj->lock);
|
||||||
|
qdf_mem_copy(cb_obj, &psoc_obj->cb_obj, sizeof(*cb_obj));
|
||||||
|
qdf_spin_unlock_bh(&psoc_obj->lock);
|
||||||
|
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user