diff --git a/components/nan/core/inc/nan_public_structs.h b/components/nan/core/inc/nan_public_structs.h index ce352cc23932..76a014abe1cc 100644 --- a/components/nan/core/inc/nan_public_structs.h +++ b/components/nan/core/inc/nan_public_structs.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2020 The Linux Foundation. All rights reserved. + * Copyright (c) 2017-2021 The Linux Foundation. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -841,9 +841,10 @@ struct wlan_nan_rx_ops { * @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 + * @ndi_sap_supported: Target supports NAN Datapath with SAP concurrency * @nan_vdev_allowed: Allow separate vdev creation for NAN discovery * @sta_nan_ndi_ndi_allowed: 4 port concurrency of STA+NAN+NDI+NDI is supported + * @ndi_txbf_supported: Target supports NAN Datapath with TX beamforming * by Fw or not. */ struct nan_tgt_caps { @@ -854,6 +855,7 @@ struct nan_tgt_caps { uint32_t ndi_sap_supported:1; uint32_t nan_vdev_allowed:1; uint32_t sta_nan_ndi_ndi_allowed:1; + uint32_t ndi_txbf_supported:1; }; #endif diff --git a/components/nan/dispatcher/inc/nan_ucfg_api.h b/components/nan/dispatcher/inc/nan_ucfg_api.h index 25075b300168..b7e872dcec01 100644 --- a/components/nan/dispatcher/inc/nan_ucfg_api.h +++ b/components/nan/dispatcher/inc/nan_ucfg_api.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2020 The Linux Foundation. All rights reserved. + * Copyright (c) 2017-2021 The Linux Foundation. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -403,6 +403,14 @@ bool ucfg_nan_is_vdev_creation_allowed(struct wlan_objmgr_psoc *psoc); */ bool ucfg_nan_is_sta_nan_ndi_4_port_allowed(struct wlan_objmgr_psoc *psoc); +/** + * ucfg_nan_is_beamforming_supported- Get support for beamforing + * @psoc: pointer to psoc object + * + * Return: True if beamforming is supported, false if not. + */ +bool ucfg_nan_is_beamforming_supported(struct wlan_objmgr_psoc *psoc); + /** * ucfg_disable_nan_discovery() - Disable NAN discovery * @psoc: pointer to psoc object @@ -555,6 +563,12 @@ bool ucfg_nan_is_sta_nan_ndi_4_port_allowed(struct wlan_objmgr_psoc *psoc) return false; } +static inline +bool ucfg_nan_is_beamforming_supported(struct wlan_objmgr_psoc *psoc) +{ + return false; +} + static inline QDF_STATUS ucfg_disable_nan_discovery(struct wlan_objmgr_psoc *psoc, uint8_t *data, uint32_t data_len) diff --git a/components/nan/dispatcher/src/nan_ucfg_api.c b/components/nan/dispatcher/src/nan_ucfg_api.c index e1621b798b47..dd3b8e3ff5e3 100644 --- a/components/nan/dispatcher/src/nan_ucfg_api.c +++ b/components/nan/dispatcher/src/nan_ucfg_api.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2020 The Linux Foundation. All rights reserved. + * Copyright (c) 2017-2021 The Linux Foundation. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -1127,6 +1127,19 @@ ucfg_nan_is_sta_nan_ndi_4_port_allowed(struct wlan_objmgr_psoc *psoc) return psoc_nan_obj->nan_caps.sta_nan_ndi_ndi_allowed; } +bool ucfg_nan_is_beamforming_supported(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.ndi_txbf_supported; +} + static inline bool ucfg_is_nan_enabled(struct nan_psoc_priv_obj *psoc_nan_obj) { diff --git a/core/wma/src/wma_main.c b/core/wma/src/wma_main.c index fb39e86ddcc1..e96017720358 100644 --- a/core/wma/src/wma_main.c +++ b/core/wma/src/wma_main.c @@ -5309,6 +5309,10 @@ static void wma_update_nan_target_caps(tp_wma_handle wma_handle, if (wmi_service_enabled(wma_handle->wmi_handle, wmi_service_sta_nan_ndi_four_port)) tgt_cfg->nan_caps.sta_nan_ndi_ndi_allowed = 1; + + if (wmi_service_enabled(wma_handle->wmi_handle, + wmi_service_ndi_txbf_support)) + tgt_cfg->nan_caps.ndi_txbf_supported = 1; } #else static void wma_update_nan_target_caps(tp_wma_handle wma_handle,