Преглед изворни кода

qcacmn: Support vendor handoff service bit info from FW

Add change to fetch and save the WMI service capability
bit of FW to support vendor handoff control feature
using service bit.

Change-Id: I6bc85f2807032bf84d391f34c814c91de906ab42
CRs-Fixed: 3225147
abhinav kumar пре 3 година
родитељ
комит
f55ec57e32

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

@@ -156,6 +156,31 @@ init_deinit_update_multi_client_ll_caps(struct wmi_unified *wmi_handle,
 {}
 #endif
 
+#ifdef WLAN_VENDOR_HANDOFF_CONTROL
+/**
+ * init_deinit_update_vendor_handoff_control_caps() - Update vendor handoff
+ * control service capability bit
+ * @wmi_handle: wmi hanle
+ * @psoc: psoc commom object
+ *
+ * Return: none
+ */
+static void
+init_deinit_update_vendor_handoff_control_caps(struct wmi_unified *wmi_handle,
+					       struct wlan_objmgr_psoc *psoc)
+{
+	if (wmi_service_enabled(wmi_handle,
+			wmi_service_configure_vendor_handoff_control_support))
+		wlan_psoc_nif_fw_ext2_cap_set(psoc,
+					      WLAN_SOC_VENDOR_HANDOFF_CONTROL);
+}
+#else
+static inline void
+init_deinit_update_vendor_handoff_control_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)
@@ -369,6 +394,8 @@ static int init_deinit_service_ready_event_handler(ol_scn_t scn_handle,
 
 	init_deinit_update_multi_client_ll_caps(wmi_handle, psoc);
 
+	init_deinit_update_vendor_handoff_control_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

@@ -244,6 +244,8 @@
 #define WLAN_ROAM_STATS_FRAME_INFO_PER_CANDIDATE  0x00000008
 /* multi client feature flags support */
 #define WLAN_SOC_WLM_MULTI_CLIENT_LL_SUPPORT      0x00000010
+/* vendor handoff control feature support */
+#define WLAN_SOC_VENDOR_HANDOFF_CONTROL           0x00000020
 
 /* PSOC op flags */
 

+ 3 - 0
wmi/inc/wmi_unified_param.h

@@ -5736,6 +5736,9 @@ typedef enum {
 #endif
 #ifdef MULTI_CLIENT_LL_SUPPORT
 	wmi_service_configure_multi_client_ll_support,
+#endif
+#ifdef WLAN_VENDOR_HANDOFF_CONTROL
+	wmi_service_configure_vendor_handoff_control_support,
 #endif
 	wmi_services_max,
 } wmi_conv_service_ids;

+ 4 - 0
wmi/src/wmi_unified_tlv.c

@@ -19438,6 +19438,10 @@ static void populate_tlv_service(uint32_t *wmi_service)
 	wmi_service[wmi_service_configure_multi_client_ll_support] =
 				WMI_SERVICE_MULTI_CLIENT_LL_SUPPORT;
 #endif
+#ifdef WLAN_VENDOR_HANDOFF_CONTROL
+	wmi_service[wmi_service_configure_vendor_handoff_control_support] =
+				WMI_SERVICE_FW_INI_PARSE_SUPPORT;
+#endif
 }
 
 /**