diff --git a/components/nan/core/src/nan_api.c b/components/nan/core/src/nan_api.c index 40c9506d7534b..0600e0941dc27 100644 --- a/components/nan/core/src/nan_api.c +++ b/components/nan/core/src/nan_api.c @@ -29,54 +29,6 @@ #include "wlan_objmgr_psoc_obj.h" #include "wlan_objmgr_pdev_obj.h" #include "wlan_objmgr_vdev_obj.h" -#include "cfg_nan.h" -#include "cfg_ucfg_api.h" - -#ifdef WLAN_FEATURE_NAN -/** - * nan_cfg_init() - Initialize NAN config params - * @psoc: Pointer to PSOC Object - * @nan_obj: Pointer to NAN private object - * - * This function initialize NAN config params - */ -static void nan_cfg_init(struct wlan_objmgr_psoc *psoc, - struct nan_psoc_priv_obj *nan_obj) -{ - if (!psoc || !nan_obj) - return; - - nan_obj->cfg_param.enable = cfg_get(psoc, CFG_NAN_ENABLE); -} - -/** - * nan_cfg_dp_init() - Initialize NAN Datapath config params - * @psoc: Pointer to PSOC Object - * @nan_obj: Pointer to NAN private object - * - * This function initialize NAN config params - */ -static void nan_cfg_dp_init(struct wlan_objmgr_psoc *psoc, - struct nan_psoc_priv_obj *nan_obj) -{ - if (!psoc || !nan_obj) - return; - nan_obj->cfg_param.dp_enable = cfg_get(psoc, - CFG_NAN_DATAPATH_ENABLE); - nan_obj->cfg_param.ndi_mac_randomize = - cfg_get(psoc, CFG_NAN_RANDOMIZE_NDI_MAC); -} -#else -static void nan_cfg_init(struct wlan_objmgr_psoc *psoc, - struct nan_psoc_priv_obj *nan_obj) -{ -} - -static void nan_cfg_dp_init(struct wlan_objmgr_psoc *psoc, - struct nan_psoc_priv_obj *nan_obj) -{ -} -#endif static QDF_STATUS nan_psoc_obj_created_notification( struct wlan_objmgr_psoc *psoc, void *arg_list) @@ -100,8 +52,6 @@ static QDF_STATUS nan_psoc_obj_created_notification( goto nan_psoc_notif_failed; } - nan_cfg_init(psoc, nan_obj); - nan_cfg_dp_init(psoc, nan_obj); target_if_nan_register_tx_ops(&nan_obj->tx_ops); target_if_nan_register_rx_ops(&nan_obj->rx_ops); diff --git a/components/nan/dispatcher/inc/nan_ucfg_api.h b/components/nan/dispatcher/inc/nan_ucfg_api.h index 02bdd1230684b..1b913110606a1 100644 --- a/components/nan/dispatcher/inc/nan_ucfg_api.h +++ b/components/nan/dispatcher/inc/nan_ucfg_api.h @@ -37,6 +37,22 @@ QDF_STATUS ucfg_nan_set_ndi_state(struct wlan_objmgr_vdev *vdev, uint32_t state); +/** + * ucfg_nan_psoc_open: Setup NAN priv object params on PSOC open + * @psoc: Pointer to PSOC object + * + * Return: QDF Status of operation + */ +QDF_STATUS ucfg_nan_psoc_open(struct wlan_objmgr_psoc *psoc); + +/** + * ucfg_nan_psoc_close: Clean up NAN priv data on PSOC close + * @psoc: Pointer to PSOC object + * + * Return: None + */ +void ucfg_nan_psoc_close(struct wlan_objmgr_psoc *psoc); + /** * ucfg_nan_get_ndi_state: get ndi state from vdev obj * @vdev: pointer to vdev object @@ -321,5 +337,15 @@ ucfg_nan_check_and_disable_unsupported_ndi(struct wlan_objmgr_psoc *psoc) { return QDF_STATUS_SUCCESS; } + +static inline QDF_STATUS ucfg_nan_psoc_open(struct wlan_objmgr_psoc *psoc) +{ + return QDF_STATUS_SUCCESS; +} + +static inline void ucfg_nan_psoc_close(struct wlan_objmgr_psoc *psoc) +{ +} + #endif /* WLAN_FEATURE_NAN */ #endif /* _NAN_UCFG_API_H_ */ diff --git a/components/nan/dispatcher/src/nan_ucfg_api.c b/components/nan/dispatcher/src/nan_ucfg_api.c index 92dc7ef430416..ca09ce393ef66 100644 --- a/components/nan/dispatcher/src/nan_ucfg_api.c +++ b/components/nan/dispatcher/src/nan_ucfg_api.c @@ -30,10 +30,73 @@ #include "wlan_objmgr_vdev_obj.h" #include "wlan_osif_request_manager.h" #include "wlan_policy_mgr_api.h" +#include "cfg_ucfg_api.h" +#include "cfg_nan.h" struct wlan_objmgr_psoc; struct wlan_objmgr_vdev; +#ifdef WLAN_FEATURE_NAN +/** + * nan_cfg_init() - Initialize NAN config params + * @psoc: Pointer to PSOC Object + * @nan_obj: Pointer to NAN private object + * + * This function initialize NAN config params + */ +static void nan_cfg_init(struct wlan_objmgr_psoc *psoc, + struct nan_psoc_priv_obj *nan_obj) +{ + nan_obj->cfg_param.enable = cfg_get(psoc, CFG_NAN_ENABLE); +} + +/** + * nan_cfg_dp_init() - Initialize NAN Datapath config params + * @psoc: Pointer to PSOC Object + * @nan_obj: Pointer to NAN private object + * + * This function initialize NAN config params + */ +static void nan_cfg_dp_init(struct wlan_objmgr_psoc *psoc, + struct nan_psoc_priv_obj *nan_obj) +{ + nan_obj->cfg_param.dp_enable = cfg_get(psoc, + CFG_NAN_DATAPATH_ENABLE); + nan_obj->cfg_param.ndi_mac_randomize = + cfg_get(psoc, CFG_NAN_RANDOMIZE_NDI_MAC); +} +#else +static void nan_cfg_init(struct wlan_objmgr_psoc *psoc, + struct nan_psoc_priv_obj *nan_obj) +{ +} + +static void nan_cfg_dp_init(struct wlan_objmgr_psoc *psoc, + struct nan_psoc_priv_obj *nan_obj) +{ +} +#endif + +QDF_STATUS ucfg_nan_psoc_open(struct wlan_objmgr_psoc *psoc) +{ + struct nan_psoc_priv_obj *nan_obj = nan_get_psoc_priv_obj(psoc); + + if (!nan_obj) { + nan_err("nan psoc priv object is NULL"); + return QDF_STATUS_E_NULL_VALUE; + } + + nan_cfg_init(psoc, nan_obj); + nan_cfg_dp_init(psoc, nan_obj); + + return QDF_STATUS_SUCCESS; +} + +void ucfg_nan_psoc_close(struct wlan_objmgr_psoc *psoc) +{ + /* No cleanup required on psoc close for NAN */ +} + inline QDF_STATUS ucfg_nan_set_ndi_state(struct wlan_objmgr_vdev *vdev, uint32_t state) { diff --git a/core/hdd/src/wlan_hdd_main.c b/core/hdd/src/wlan_hdd_main.c index b354f2b5348c4..c311c131d4ace 100644 --- a/core/hdd/src/wlan_hdd_main.c +++ b/core/hdd/src/wlan_hdd_main.c @@ -172,6 +172,7 @@ #include #include "wlan_blm_ucfg_api.h" #include "ol_txrx.h" +#include "nan_ucfg_api.h" #ifdef MODULE #define WLAN_MODULE_NAME module_name(THIS_MODULE) @@ -13661,8 +13662,14 @@ QDF_STATUS hdd_component_psoc_open(struct wlan_objmgr_psoc *psoc) if (QDF_IS_STATUS_ERROR(status)) goto err_tdls; + status = ucfg_nan_psoc_open(psoc); + if (QDF_IS_STATUS_ERROR(status)) + goto err_nan; + return status; +err_nan: + ucfg_nan_psoc_close(psoc); err_tdls: ucfg_tdls_psoc_close(psoc); err_p2p: