From 4c50119c27be9c5c48139771c8e862c86e916f46 Mon Sep 17 00:00:00 2001 From: Srinivas Dasari Date: Sun, 22 Dec 2019 20:31:43 +0530 Subject: [PATCH] qcacld-3.0: Get the firmware capability NAN_VDEV_SUPPORT Firmware advertises service capability bit NAN_VDEV_SUPPORT for separate NAN vdev creation. This capability can be used to create separate interface for NAN discovery and process corresponding commands from userspace. Change-Id: I45573c94ee2d966afc1e207c9eefc146ff43320f CRs-Fixed: 2592019 --- components/nan/core/inc/nan_public_structs.h | 2 ++ components/nan/dispatcher/inc/nan_ucfg_api.h | 14 ++++++++++++++ components/nan/dispatcher/src/nan_ucfg_api.c | 13 +++++++++++++ core/wma/src/wma_main.c | 3 +++ 4 files changed, 32 insertions(+) diff --git a/components/nan/core/inc/nan_public_structs.h b/components/nan/core/inc/nan_public_structs.h index feabeb8650..144f9cae22 100644 --- a/components/nan/core/inc/nan_public_structs.h +++ b/components/nan/core/inc/nan_public_structs.h @@ -791,6 +791,7 @@ struct wlan_nan_rx_ops { * @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 + * @nan_vdev_allowed: Allow separate vdev creation for NAN discovery */ struct nan_tgt_caps { uint32_t nan_disable_supported:1; @@ -798,6 +799,7 @@ struct nan_tgt_caps { uint32_t ndi_dbs_supported:1; uint32_t nan_sap_supported:1; uint32_t ndi_sap_supported:1; + uint32_t nan_vdev_allowed:1; }; #endif diff --git a/components/nan/dispatcher/inc/nan_ucfg_api.h b/components/nan/dispatcher/inc/nan_ucfg_api.h index de33c6a4e3..2a13493eeb 100644 --- a/components/nan/dispatcher/inc/nan_ucfg_api.h +++ b/components/nan/dispatcher/inc/nan_ucfg_api.h @@ -360,6 +360,14 @@ bool ucfg_nan_is_enable_disable_in_progress(struct wlan_objmgr_psoc *psoc); */ bool ucfg_nan_is_sta_ndp_concurrency_allowed(struct wlan_objmgr_psoc *psoc, struct wlan_objmgr_vdev *vdev); + +/** + * ucfg_nan_is_vdev_creation_allowed()- Get support for NAN vdev creation + * @psoc: pointer to psoc object + * + * Return: True if NAN vdev creation is allowed else false + */ +bool ucfg_nan_is_vdev_creation_allowed(struct wlan_objmgr_psoc *psoc); #else /* WLAN_FEATURE_NAN */ static inline @@ -411,5 +419,11 @@ bool ucfg_nan_is_sta_ndp_concurrency_allowed(struct wlan_objmgr_psoc *psoc, { return false; } + +static inline +bool ucfg_nan_is_vdev_creation_allowed(struct wlan_objmgr_psoc *psoc) +{ + return false; +} #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 8d7d042717..8a4d2ab2ac 100644 --- a/components/nan/dispatcher/src/nan_ucfg_api.c +++ b/components/nan/dispatcher/src/nan_ucfg_api.c @@ -1032,3 +1032,16 @@ bool ucfg_nan_is_sta_ndp_concurrency_allowed(struct wlan_objmgr_psoc *psoc, return false; } + +bool ucfg_nan_is_vdev_creation_allowed(struct wlan_objmgr_psoc *psoc) +{ + struct nan_psoc_priv_obj *psoc_nan_obj; + + psoc_nan_obj = nan_get_psoc_priv_obj(psoc); + if (!psoc_nan_obj) { + nan_err("psoc_nan_obj is null"); + return false; + } + + return psoc_nan_obj->nan_caps.nan_vdev_allowed; +} diff --git a/core/wma/src/wma_main.c b/core/wma/src/wma_main.c index 1c0a03c812..eb4ec493a0 100644 --- a/core/wma/src/wma_main.c +++ b/core/wma/src/wma_main.c @@ -5235,6 +5235,9 @@ static void wma_update_nan_target_caps(tp_wma_handle wma_handle, if (wmi_service_enabled(wma_handle->wmi_handle, wmi_service_ndi_sap_support)) tgt_cfg->nan_caps.ndi_sap_supported = 1; + + if (wmi_service_enabled(wma_handle->wmi_handle, wmi_service_nan_vdev)) + tgt_cfg->nan_caps.nan_vdev_allowed = 1; } #else static void wma_update_nan_target_caps(tp_wma_handle wma_handle,