Переглянути джерело

qcacld-3.0: Store NDI beamform service bit

Store the NAN NDI beamform service bit in the NAN capability struct and
add API to access that value.

Change-Id: I429fc870b5287bd40855b9277d14b19574974a46
CRs-fixed: 2876730
Lincoln Tran 4 роки тому
батько
коміт
369c4ae107

+ 4 - 2
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

+ 15 - 1
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)

+ 14 - 1
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)
 {

+ 4 - 0
core/wma/src/wma_main.c

@@ -5272,6 +5272,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,