From 4e66c9a73adfad4868ed89c06f79db9f71b12032 Mon Sep 17 00:00:00 2001 From: Manikandan Mohan Date: Fri, 12 Jul 2019 14:55:17 -0700 Subject: [PATCH] qcacld-3.0: Move NAN cfg params init to PSOC open NAN config param initialization from CFG component is done during PSOC object created notification. But as per component design it must be done at psoc open to avoid CFG component not initialized case. Thus update nan component to reorganize NAN cfg params init. Change-Id: I9636b527b796202e55a57c28d604795a705de026 CRs-fixed: 2489286 --- components/nan/core/src/nan_api.c | 50 ---------------- components/nan/dispatcher/inc/nan_ucfg_api.h | 26 ++++++++ components/nan/dispatcher/src/nan_ucfg_api.c | 63 ++++++++++++++++++++ core/hdd/src/wlan_hdd_main.c | 7 +++ 4 files changed, 96 insertions(+), 50 deletions(-) diff --git a/components/nan/core/src/nan_api.c b/components/nan/core/src/nan_api.c index 40c9506d75..0600e0941d 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 02bdd12306..1b91311060 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 92dc7ef430..ca09ce393e 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 b354f2b534..c311c131d4 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: