Browse Source

qcacmn: Support multi-client service bit info from FW

Add change to fetch and save the WMI service capability
bit of FW to support multi-client low latency feature
using service bit.

Change-Id: Ifce82c06fc913668949ed06634da1eebcea80397
CRs-Fixed: 3180932
abhinav kumar 3 năm trước cách đây
mục cha
commit
5cb3946000

+ 27 - 0
target_if/init_deinit/src/init_event_handler.c

@@ -131,6 +131,31 @@ init_deinit_update_roam_stats_cap(struct wmi_unified *wmi_handle,
 {}
 #endif
 
+#ifdef MULTI_CLIENT_LL_SUPPORT
+/**
+ * init_deinit_update_multi_client_ll_caps() - Update multi client service
+ * capability bit
+ * @wmi_handle: wmi hanle
+ * @psoc: psoc commom object
+ *
+ * Return: none
+ */
+static void
+init_deinit_update_multi_client_ll_caps(struct wmi_unified *wmi_handle,
+					struct wlan_objmgr_psoc *psoc)
+{
+	if (wmi_service_enabled(wmi_handle,
+				wmi_service_configure_multi_client_ll_support))
+		wlan_psoc_nif_fw_ext2_cap_set(psoc,
+					WLAN_SOC_WLM_MULTI_CLIENT_LL_SUPPORT);
+}
+#else
+static inline void
+init_deinit_update_multi_client_ll_caps(struct wmi_unified *wmi_handle,
+					struct wlan_objmgr_psoc *psoc)
+{}
+#endif
+
 static int init_deinit_service_ready_event_handler(ol_scn_t scn_handle,
 							uint8_t *event,
 							uint32_t data_len)
@@ -342,6 +367,8 @@ static int init_deinit_service_ready_event_handler(ol_scn_t scn_handle,
 
 	init_deinit_update_rssi_dbm_conv_support(wmi_handle, psoc);
 
+	init_deinit_update_multi_client_ll_caps(wmi_handle, psoc);
+
 	if (wmi_service_enabled(wmi_handle, wmi_service_ext_msg)) {
 		target_if_debug("Wait for EXT message");
 	} else {

+ 2 - 0
umac/cmn_services/obj_mgr/inc/wlan_objmgr_psoc_obj.h

@@ -239,6 +239,8 @@
 #define WLAN_RTT_11AZ_MAC_SEC_SUPPORT    0x00000002
 /* 11AZ Secure ranging PHY Security support */
 #define WLAN_RTT_11AZ_MAC_PHY_SEC_SUPPORT 0x00000004
+/* multi client feature flags support */
+#define WLAN_SOC_WLM_MULTI_CLIENT_LL_SUPPORT      0x00000008
 
 /* Roam Frame info stats - per candidate frames support */
 #define WLAN_ROAM_STATS_FRAME_INFO_PER_CANDIDATE  0x00000008

+ 3 - 0
wmi/inc/wmi_unified_param.h

@@ -5596,6 +5596,9 @@ typedef enum {
 	wmi_service_pktlog_decode_info_support,
 #ifdef WLAN_FEATURE_ROAM_OFFLOAD
 	wmi_service_roam_stats_per_candidate_frame_info,
+#endif
+#ifdef MULTI_CLIENT_LL_SUPPORT
+	wmi_service_configure_multi_client_ll_support,
 #endif
 	wmi_services_max,
 } wmi_conv_service_ids;

+ 4 - 0
wmi/src/wmi_unified_tlv.c

@@ -18810,6 +18810,10 @@ static void populate_tlv_service(uint32_t *wmi_service)
 	wmi_service[wmi_service_roam_stats_per_candidate_frame_info] =
 		WMI_SERVICE_ROAM_STAT_PER_CANDIDATE_FRAME_INFO_SUPPORT;
 #endif
+#ifdef MULTI_CLIENT_LL_SUPPORT
+	wmi_service[wmi_service_configure_multi_client_ll_support] =
+				WMI_SERVICE_MULTI_CLIENT_LL_SUPPORT;
+#endif
 }
 
 /**