Просмотр исходного кода

qcacmn: Add support for AP secure-LTF capability

Add support to advertise AP secure-LTF capability based
on ini configuration

Change-Id: I8aebbd683694e36d8d16215c0358f5bfb18d5443
CRs-Fixed: 3283114
Pragaspathi Thilagaraj 2 лет назад
Родитель
Сommit
89f5e532f3

+ 9 - 1
os_if/linux/wifi_pos/src/wlan_cfg80211_wifi_pos.c

@@ -25,6 +25,7 @@
 #include "wlan_objmgr_psoc_obj.h"
 #include "wlan_cfg80211_wifi_pos.h"
 #include "wlan_cmn_ieee80211.h"
+#include "wifi_pos_ucfg_i.h"
 
 #if defined(WIFI_POS_CONVERGED) && defined(WLAN_FEATURE_RTT_11AZ_SUPPORT)
 
@@ -81,10 +82,17 @@ wlan_wifi_pos_set_feature_flags(uint8_t *feature_flags,
 void wlan_wifi_pos_cfg80211_set_features(struct wlan_objmgr_psoc *psoc,
 					 uint8_t *feature_flags)
 {
+	bool rsta_secure_ltf_support;
+
 	if (wlan_psoc_nif_fw_ext2_cap_get(psoc,
-					  WLAN_RTT_11AZ_MAC_PHY_SEC_SUPPORT))
+					  WLAN_RTT_11AZ_MAC_PHY_SEC_SUPPORT)) {
 		wlan_wifi_pos_set_feature_flags(feature_flags,
 						QCA_WLAN_VENDOR_FEATURE_SECURE_LTF_STA);
+		rsta_secure_ltf_support = wifi_pos_get_rsta_sec_ltf_cap();
+		if (rsta_secure_ltf_support)
+			wlan_wifi_pos_set_feature_flags(feature_flags,
+							QCA_WLAN_VENDOR_FEATURE_SECURE_LTF_AP);
+	}
 
 	if (wlan_psoc_nif_fw_ext2_cap_get(psoc,
 					  WLAN_RTT_11AZ_MAC_SEC_SUPPORT))

+ 18 - 0
umac/wifi_pos/inc/wifi_pos_api.h

@@ -669,4 +669,22 @@ wifi_pos_register_osif_callbacks(struct wlan_objmgr_psoc *psoc,
 struct wifi_pos_osif_ops *
 wifi_pos_get_osif_callbacks(struct wlan_objmgr_psoc *psoc);
 #endif /* WIFI_POS_CONVERGED */
+
+#if defined(WIFI_POS_CONVERGED) && defined(WLAN_FEATURE_RTT_11AZ_SUPPORT)
+/**
+ * wifi_pos_set_rsta_sec_ltf_cap() - Set RSTA secure LTF capability
+ * @val: Value
+ *
+ * Return: None
+ **/
+void
+wifi_pos_set_rsta_sec_ltf_cap(uint32_t val);
+
+/**
+ * wifi_pos_get_rsta_sec_ltf_cap  - Get RSTA secure LTF capability
+ *
+ * Return: True or false
+ */
+bool wifi_pos_get_rsta_sec_ltf_cap(void);
+#endif
 #endif /* _WIFI_POS_API_H_ */

+ 2 - 0
umac/wifi_pos/inc/wifi_pos_utils_i.h

@@ -258,6 +258,7 @@ struct wifi_pos_legacy_ops {
  * @osif_cb: Callbacks to OS_IF
  * @wifi_pos_lock: lock to access wifi pos priv object
  * @oem_6g_support_disable: oem target 6ghz support is disabled if set
+ * @enable_rsta_secure_ltf_support: Enable RSTA secure LTF support
  * @wifi_pos_req_handler: function pointer to handle TLV or non-TLV
  * @wifi_pos_send_rsp: function pointer to send msg to userspace APP
  * @wifi_pos_get_phy_mode: function pointer to get wlan phymode for given
@@ -312,6 +313,7 @@ struct wifi_pos_psoc_priv_obj {
 
 	qdf_spinlock_t wifi_pos_lock;
 	bool oem_6g_support_disable;
+	bool enable_rsta_secure_ltf_support;
 	struct wifi_pos_legacy_ops *legacy_ops;
 	QDF_STATUS (*wifi_pos_req_handler)(struct wlan_objmgr_psoc *psoc,
 				    struct wifi_pos_req_msg *req);

+ 35 - 0
umac/wifi_pos/src/wifi_pos_api.c

@@ -703,3 +703,38 @@ wifi_pos_get_osif_callbacks(struct wlan_objmgr_psoc *psoc)
 
 	return wifi_pos_obj->osif_cb;
 }
+
+#if defined(WIFI_POS_CONVERGED) && defined(WLAN_FEATURE_RTT_11AZ_SUPPORT)
+void wifi_pos_set_rsta_sec_ltf_cap(uint32_t val)
+{
+	struct wifi_pos_psoc_priv_obj *wifi_pos_psoc =
+			wifi_pos_get_psoc_priv_obj(wifi_pos_get_psoc());
+
+	if (!wifi_pos_psoc) {
+		wifi_pos_alert("unable to get wifi_pos psoc obj");
+		return;
+	}
+
+	qdf_spin_lock_bh(&wifi_pos_psoc->wifi_pos_lock);
+	wifi_pos_psoc->enable_rsta_secure_ltf_support = val;
+	qdf_spin_unlock_bh(&wifi_pos_psoc->wifi_pos_lock);
+}
+
+bool wifi_pos_get_rsta_sec_ltf_cap(void)
+{
+	bool value;
+	struct wifi_pos_psoc_priv_obj *wifi_pos_psoc =
+			wifi_pos_get_psoc_priv_obj(wifi_pos_get_psoc());
+
+	if (!wifi_pos_psoc) {
+		wifi_pos_alert("unable to get wifi_pos psoc obj");
+		return false;
+	}
+
+	qdf_spin_lock_bh(&wifi_pos_psoc->wifi_pos_lock);
+	value = wifi_pos_psoc->enable_rsta_secure_ltf_support;
+	qdf_spin_unlock_bh(&wifi_pos_psoc->wifi_pos_lock);
+
+	return value;
+}
+#endif