diff --git a/nan/core/inc/nan_public_structs.h b/nan/core/inc/nan_public_structs.h index 66885c782b..16a307559b 100644 --- a/nan/core/inc/nan_public_structs.h +++ b/nan/core/inc/nan_public_structs.h @@ -20,7 +20,6 @@ * DOC: contains nan definitions exposed to other modules */ -#ifdef WLAN_FEATURE_NAN_CONVERGENCE #ifndef _NAN_PUBLIC_STRUCTS_H_ #define _NAN_PUBLIC_STRUCTS_H_ @@ -705,5 +704,20 @@ struct wlan_nan_rx_ops { QDF_STATUS (*nan_event_rx)(struct scheduler_msg *event); }; +/** + * struct nan_tgt_caps - NAN Target capabilities + * @nan_disable_supported: Target supports disabling NAN Discovery + * @nan_dbs_supported: Target supports NAN Discovery with DBS + * @ndi_dbs_supported: Target supports NAN Datapath with DBS + * @nan_sap_supported: Target supports NAN Discovery with SAP concurrency + * @ndi_sap_supported: Target supports NAN Datapth with SAP concurrency + */ +struct nan_tgt_caps { + uint32_t nan_disable_supported:1; + uint32_t nan_dbs_supported:1; + uint32_t ndi_dbs_supported:1; + uint32_t nan_sap_supported:1; + uint32_t ndi_sap_supported:1; +}; + #endif -#endif /* WLAN_FEATURE_NAN_CONVERGENCE */ diff --git a/nan/core/src/nan_main_i.h b/nan/core/src/nan_main_i.h index d19d66d92d..7365251afd 100644 --- a/nan/core/src/nan_main_i.h +++ b/nan/core/src/nan_main_i.h @@ -84,11 +84,16 @@ struct nan_cfg_params { * struct nan_psoc_priv_obj - nan private psoc obj * @lock: lock to be acquired before reading or writing to object * @cb_obj: struct contaning callback pointers + * @cfg_param: NAN Config parameters in INI + * @nan_caps: NAN Target capabilities + * @tx_ops: NAN Tx operations + * @rx_ops: NAN Rx operations */ struct nan_psoc_priv_obj { qdf_spinlock_t lock; struct nan_callbacks cb_obj; struct nan_cfg_params cfg_param; + struct nan_tgt_caps nan_caps; struct wlan_nan_tx_ops tx_ops; struct wlan_nan_rx_ops rx_ops; }; diff --git a/nan/dispatcher/inc/nan_ucfg_api.h b/nan/dispatcher/inc/nan_ucfg_api.h index bdf605c9b5..7e6804ab6c 100644 --- a/nan/dispatcher/inc/nan_ucfg_api.h +++ b/nan/dispatcher/inc/nan_ucfg_api.h @@ -26,6 +26,7 @@ #include "wlan_objmgr_cmn.h" #include "nan_public_structs.h" +#ifdef WLAN_FEATURE_NAN /** * ucfg_nan_set_ndi_state: set ndi state * @vdev: pointer to vdev object @@ -248,10 +249,7 @@ static inline QDF_STATUS ucfg_nan_discovery_req(void *in_req, uint32_t req_type) * * Return: True if NAN DBS is supported, False otherwise */ -static inline bool ucfg_is_nan_dbs_supported(struct wlan_objmgr_psoc *psoc) -{ - return true; -} +bool ucfg_is_nan_dbs_supported(struct wlan_objmgr_psoc *psoc); /** * ucfg_is_nan_enable_allowed() - ucfg API to query if NAN Discovery is @@ -264,4 +262,23 @@ static inline bool ucfg_is_nan_enable_allowed(struct wlan_objmgr_psoc *psoc) { return true; } + +/** + * ucfg_nan_set_tgt_caps: ucfg API to set the NAN capabilities of the Target + * @psoc: pointer to psoc object + * @nan_caps: pointer to the structure of NAN capability bits + * + * Return: status of operation + */ +void ucfg_nan_set_tgt_caps(struct wlan_objmgr_psoc *psoc, + struct nan_tgt_caps *nan_caps); + +#else /* WLAN_FEATURE_NAN */ + +static inline +void ucfg_nan_set_tgt_caps(struct wlan_objmgr_psoc *psoc, + struct nan_tgt_caps *nan_caps) +{ +} +#endif /* WLAN_FEATURE_NAN */ #endif /* _NAN_UCFG_API_H_ */ diff --git a/nan/dispatcher/src/nan_ucfg_api.c b/nan/dispatcher/src/nan_ucfg_api.c index b92e5713b1..be4bb7d05d 100644 --- a/nan/dispatcher/src/nan_ucfg_api.c +++ b/nan/dispatcher/src/nan_ucfg_api.c @@ -445,3 +445,29 @@ int ucfg_nan_register_lim_callbacks(struct wlan_objmgr_psoc *psoc, return 0; } + +void ucfg_nan_set_tgt_caps(struct wlan_objmgr_psoc *psoc, + struct nan_tgt_caps *nan_caps) +{ + struct nan_psoc_priv_obj *psoc_priv = nan_get_psoc_priv_obj(psoc); + + if (!psoc_priv) { + nan_err("nan psoc priv object is NULL"); + return; + } + + psoc_priv->nan_caps = *nan_caps; +} + +bool ucfg_is_nan_dbs_supported(struct wlan_objmgr_psoc *psoc) +{ + struct nan_psoc_priv_obj *psoc_priv; + + psoc_priv = nan_get_psoc_priv_obj(psoc); + if (!psoc_priv) { + nan_err("nan psoc priv object is NULL"); + return false; + } + + return (psoc_priv->nan_caps.nan_dbs_supported == 1); +}